第 6 章 ボリュームへのアクセスの作成
6.4.2. Samba の CTDB の設定
SMB を使用してレプリケーションを使用するボリュームを共有する場合は、CTDB(Cluster Trivial
Database)を設定して高可用性とロックの同期を提供する必要があります。
ctdb は、仮想 IP アドレス(VIP)およびハートビートサービスを追加して高可用性を提供します。信頼済 みストレージプールのノードが失敗した場合、CTDB では、障害が発生したノードがホストしている仮 想 IP アドレスを別のノードが引き継ぐことができます。これにより、提供されるサービスの IP アドレ スが常に利用できるようになります。
重要 重要
Amazon Elastic Compute Cloud(EC2)は仮想 IP をサポートしないため、このソリュー ションとの互換性はありません。
前提条件 前提条件
すでに古いバージョンの CTDB(バージョン <= ctdb1.x)がある場合は、以下のコマンドを実行
して CTDB を削除します。
# yum remove ctdb
旧バージョンを削除したら、最新の CTDB のインストールを続行します。
注記 注記
システムが samba チャネルにサブスクライブし、最新の CTDB パッケージを取 得している。
以下のコマンドを使用して、Samba サーバーとして使用されているすべてのノードに CTDB を インストールします。
# yum install ctdb
Samba の CTDB ベースの高可用性環境では、フェイルオーバーでロックは移行されません。
アクティブなゾーンで CTDB ファイアウォールサービスをランタイムおよび永続モードで有効 にします。以下のコマンドは、Red Hat Enterprise Linux 7 をベースとしたシステム向けです。
アクティブなゾーンの一覧を取得するには、以下のコマンドを実行します。
# firewall-cmd --get-active-zones
アクティブなゾーンにポートを追加するには、以下のコマンドを実行します。
# firewall-cmd --zone=zone_name --add-port=4379/tcp
# firewall-cmd --zone=zone_name --add-port=4379/tcp --permanent
Red Hat Gluster Storage Server でのでの CTDB の設定の設定
1. 新しい複製ボリュームを作成して、CTDB ロックファイルを保管します。ロックファイルのサ イズはゼロバイトであるため、小さなブリックを使用してください。
複製されたボリュームを作成するには、以下のコマンドを実行します。N を、複製するノード の数に置き換えます。
# gluster volume create volname replica N ip_address_1:brick_path ...
ip_address_N:brick_path 例:
# gluster volume create ctdb replica 3 10.16.157.75:/rhgs/brick1/ctdb/b1 10.16.157.78:/rhgs/brick1/ctdb/b2 10.16.157.81:/rhgs/brick1/ctdb/b3
2. 以下のファイルで、ステートメントにある all を新規に作成 META="all" したボリューム名
(例:)に置き換え META="ctdb"ます。
/var/lib/glusterd/hooks/1/start/post/S29CTDBsetup.sh /var/lib/glusterd/hooks/1/stop/pre/S29CTDB-teardown.sh
3. /etc/samba/smb.conf ファイルに、全ノードの global セクションに以下の行を追加します。
clustering=yes
4. ボリュームを起動します。
S29CTDBsetup.sh スクリプトはすべての Red Hat Gluster Storage サーバーで実行され、マウ ント /etc/fstab 用のエントリーを追加し、Samba サーバーと共にすべてのノード /gluster/lock にボリュームをマウントします。また、再起動時に CTDB サービスの自動起動も可能にしま す。
注記 注記
特殊な CTDB ボリュームを停止すると、S29CTDB-teardown.sh スクリプトがす べての Red Hat Gluster Storage サーバーで実行され、マウントのエントリーが 削除され、ボリュームの /etc/fstab マウントが解除され /gluster/lockます。
5. /etc/sysconfig/ctdb ファイルが Samba サーバーとして使用されているすべてのノードに存在 することを確認します。このファイルには、Red Hat Gluster Storage に推奨される CTDB 設定 の詳細が含まれています。
6. Samba サーバーとして使用されているすべてのノードに /etc/ctdb/nodes ファイルを作成し、
そのノードに IP アドレスを追加します。
10.16.157.0 10.16.157.3 10.16.157.6
ここで一覧表示される IP アドレスは、Samba サーバーのプライベート IP アドレスです。
7. Samba サーバーとして使用され、IP フェイルオーバーが必要なノード
で、/etc/ctdb/public_addresses ファイルを作成します。以下の形式で CTDB が作成する仮想 IP アドレスをファイルに追加します。
VIP/routing_prefix network_interface 例:
192.168.1.20/24 eth0 192.168.1.21/24 eth0
8. すべてのノードで CTDB サービスを起動します。
# service ctdb start
6.4.3. SMB でのボリュームの共有
このプロセスに続いて、Samba を実行するサーバーに設定した gluster ボリュームは、ボリュームの開 始時に自動的にエクスポートされます。
デフォルトのボリューム共有セクションが以下に追加された場合は、以下の例を参照して /etc/samba/smb.confください。
[gluster-VOLNAME]
comment = For samba share of volume VOLNAME vfs objects = glusterfs
glusterfs:volume = VOLNAME
glusterfs:logfile = /var/log/samba/VOLNAME.log glusterfs:loglevel = 7
path = / read only = no guest ok = yes
設定オプションは、以下の表で説明されています。
表
表6.8 設定オプション設定オプション 設定オプション
設定オプション 必須必須/オプオプ ション ション
デフォル デフォル ト値 ト値
description
path ◯ N/A これは、共有される gluster ボリュームのルートに 相対するパスを表します。したがって、gluster ボ リュームのルート/を表します。ボリュームのサブ ディレクトリーのエクスポートはサポートされ、パ ス内の /subdir はボリュームのサブディレクトリー のみをエクスポートします。
glusterfs:volume ◯ N/A 共有されるボリューム名。
glusterfs:logfile いいえ NULL vfs プラグインによって読み込まれる gluster モ ジュールによって使用されるログファイルへのパ ス。で説明されているように、標準の Samba 変数 置換smb.confがサポートされます。
glusterfs:loglevel いいえ 7 このオプションは、gluster client-log-levelオプ ションと同等です。7 はデフォルト値で、INFO レベ ルに対応します。
glusterfs:volfile_ser ver
いいえ localhost ボリュームを取得するvolfileために接続される
gluster サーバー。空白で区切られた要素の一覧であ
る値を取ります。各要素は
unix+/path/to/socket/fileまたはです。
[tcp+]IP|hostname|\[IPv6\][:port]
設定オプション
設定オプション 必須必須/オプオプ ション ション
デフォル デフォル ト値 ト値
description
Samba でボリュームを共有する手順は、選択する Samba のバージョンによって異なります。
古いバージョンの
古いバージョンの Samba を使用している場合は、以下を行います。を使用している場合は、以下を行います。
1. SMB 固有のキャッシュを有効にします。
# gluster volume set VOLNAME performance.cache-samba-metadata on
汎用メタデータキャッシュを有効にして、パフォーマンスを向上させることもできます。詳細
「ディレクトリーの操作」はを参照してください。
2. 各 Red Hat Gluster Storage ノードで glusterd サービスを再起動します。
3. 適切なロックと I/O の一貫性を確認します。
# gluster volume set VOLNAME storage.batch-fsync-delay-usec 0
Samba-4.8.5-104 以降を使用している場合:以降を使用している場合:
1. gluster ボリュームを Samba 経由で SMB 共有としてエクスポートするには、以下のボリューム
オプション user.cifs またはのいずれか user.smb が必要です。
user.cifs ボリュームオプションを有効にするには、以下のコマンドを実行します。
# gluster volume set VOLNAME user.cifs enable
user.smb を有効にするには、以下を実行します。
# gluster volume set VOLNAME user.smb enable
Red Hat Gluster Storage 3.4 では、Samba-CTDB 設定に必要なボリュームオプションを設定す る samba ための group コマンドが導入されました。
2. 以下のコマンドを実行して、Samba-CTDB のボリュームオプションを設定します。
# gluster volume set VOLNAME group samba
このコマンドは、Samba-CTDB の設定で以下のオプションを有効にします。
performance.readdir-ahead: on performance.parallel-readdir: on
performance.nl-cache-timeout: 600 performance.nl-cache: on
performance.cache-samba-metadata: on network.inode-lru-limit: 200000
performance.md-cache-timeout: 600 performance.cache-invalidation: on features.cache-invalidation-timeout: 600 features.cache-invalidation: on
performance.stat-prefetch: on
Samba-4.9.8-109 以降を使用している場合:以降を使用している場合:
以下のステップは、厳密にオプションであり、多数のクライアントがボリュームに接続しているか、ま たはより多くのボリュームが使用される環境でフォローすることです。
Red Hat Gluster Storage 3.5 では、対応する FUSE のマウントパスからボリューム共有を設定するオプ ションの方法が導入されました。以下の手順は、クラスター内のすべてのノードで実行する必要があり ます。
1. FUSE を介して GlusterFS ボリュームをマウントし、次の手順のために FUSE マウントポイン トを記録します。
「ボリュームの自動マウント」
「ボリュームの手動マウント」
2. の samba 共有設定ファイルを編集します。 /etc/samba/smb.conf
[gluster-VOLNAME]
comment = For samba share of volume VOLNAME vfs objects = glusterfs
glusterfs:volume = VOLNAME
glusterfs:logfile = /var/log/samba/VOLNAME.log glusterfs:loglevel = 7
path = / read only = no guest ok = yes
vfs objects パラメーター値を編集 glusterfs_fuse
vfs objects = glusterfs_fuse
以前に記録した FUSE マウントポイントに path パラメーター値を編集します。例:
path = /MOUNTDIR
3. SELinux を Enforcing モードに設定して、SELinux ブール値を有効にし samba_share_fusefsます。
# setsebool -P samba_share_fusefs on
注記 注記
作成される新規ボリュームは、デフォルト vfs objects パラメーターを使用して 自動的に設定されます。
samba 共有設定ファイルへの変更は、ボリュームが Gluster CLI を使用して削除
されるまで、ボリュームの再起動時に保持されます。
ボリューム上の Gluster CLI 操作の一部として呼び出される Samba フックスク リプトは、名前付きの Samba 共有で VOLNAME のみ動作し
[gluster-VOLNAME]ます。つまり、フックスクリプトは、呼び出された samba 共有の設
定ファイルを削除したり、変更したりしません [VOLNAME]。
すべての
すべての Samba バージョンの場合:バージョンの場合:
1. SMB/CIFS 共有からボリュームにアクセスできることを確認します。
# smbclient -L <hostname> -U%
例:
# smbclient -L rhs-vm1 -U%
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.17]
Sharename Type Comment -- ----
IPC$ IPC IPC Service (Samba Server Version 4.1.17) gluster-vol1 Disk For samba share of volume vol1
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.17]
Server Comment -- Workgroup Master --
---2. ユーザーが SMB/CIFS 共有にアクセスできることを確認します。以下のコマンドを実行しま す。
# smbclient //<hostname>/gluster-<volname> -U <username>%<password>
例:
# smbclient //10.0.0.1/gluster-vol1 -U root%redhat
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.17]
smb: \> mkdir test smb: \> cd test\
smb: \test\> pwd
Current directory is \\10.0.0.1\gluster-vol1\test\
smb: \test\>
6.4.4. 共有ボリュームへのユーザーアクセスの設定
6.4.4.1. macOS ユーザーのユーザーのApple Create Context の設定の設定
1. 以下の行を smb.conf ファイルの [global] セクションに追加します。表示されるインデントレ ベルが必要であることに注意してください。
fruit:aapl = yes ea support = yes
2. ファイル内のボリュームのエクスポート設定ブロックに以下の行を追加して、vfs_fruit モ ジュールとその依存関係を smb.conf 読み込みます。
vfs objects = fruit streams_xattr glusterfs 例:
[gluster-volname]
comment = For samba share of volume smbshare vfs objects = fruit streams_xattr glusterfs
glusterfs:volume = volname
glusterfs:logfile = /var/log/samba/glusterfs-volname-fruit.%M.log glusterfs:loglevel = 7
path = / read only = no guest ok = yes
fruit:encoding = native
6.4.4.2. 非特権ユーザーの読み取り非特権ユーザーの読み取り/書き込みアクセスの設定書き込みアクセスの設定
1. 設定に基づいて、すべての Samba サーバーにユーザーを追加します。
# adduser username
2. すべての Samba サーバーの Samba ユーザー一覧にユーザーを追加し、以下のコマンドを実行
してパスワードを割り当てます。
# smbpasswd -a username
3. 他の Samba サーバーから、FUSE プロトコルを使用してボリュームをマウントします。
# mount -t glusterfs -o acl ip-address:/volname /mountpoint 例:
# mount -t glusterfs -o acl rhs-a:/repvol /mnt