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 設定オプション

設定オプション 必須? デフォルト値 説明
パス はい 該当なし これは、共有している gluster ボリュームのルートに相対的なパスを表します。したがって、/ は gluster ボリュームのルートを表します。ボリュームのサブディレクトリーのエクスポートはサポートされており、パスの /subdir は、そのボリュームのサブディレクトリーのみをエクスポートします。
glusterfs:volume はい 該当なし 共有されるボリューム名。
glusterfs:logfile いいえ NULL vfs プラグインによって読み込まれる gluster モジュールによって使用されるログファイルへのパス。smb.conf に記載されている標準の Samba 変数の置き換えがサポートされます。
glusterfs:loglevel いいえ 7 このオプションは、gluster の client-log-level オプションと同等です。7 はデフォルト値で、INFO レベルに対応します。
glusterfs:volfile_server いいえ localhost ボリュームの volfile をフェッチするために接続される Gluster サーバー。値は空白区切り要素のリストで、各要素が unix+/path/to/socket/file または [tcp+]IP|hostname|\[IPv6\][:port] になります。
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
注記
RHEL ベースの Red Hat Gluster Storage が Samba で 3.5 バッチ更新 4 にアップグレードするには、既存のすべての samba ボリュームに対して、write-behind トランスレーターを手動で無効にする必要があります。
# gluster volume set <volname> performance.write-behind off

Samba-4.8.5-104 以降を使用している場合は、以下を行います。

  1. Samba 経由で gluster 共有としてエクスポートするには、以下のボリュームオプション 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 設定に必要なボリュームオプションを設定する group コマンド samba が導入されました。
  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. Samba 経由で Gluster ボリュームを共有するすべての Gluster ノードに、ネイティブ Gluster プロトコル Fuse を使用するローカルマウントがあります。FUSE で GlusterFS ボリュームをマウントし、詳細な手順のために FUSE マウントポイントを記録します。
    /etc/fstab にエントリーを追加します。
    localhost:/myvol /mylocal glusterfs defaults,_netdev,acl 0 0
    以下に例を示します。
    localhost:/myvol 4117504 1818292 2299212 45% /mylocal
    gluster ボリュームは myvol で、/mylocalにマウントされる場合
  2. /etc/samba/smb.conf にある samba 共有設定ファイルを編集します。
    [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 を使用してボリュームが削除されるまで、ボリュームの再起動後も保持されます。
  • ボリューム VOLNAME で Gluster CLI 操作の一部として呼び出される Samba フックスクリプトは、[gluster-VOLNAME] という名前の Samba 共有でのみ動作します。つまり、フックスクリプトは、[VOLNAME] と呼ばれる samba 共有の samba 共有設定ファイルを削除したり、変更したりしません。

次に、すべての 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\>