vfs_glusterfs — GlusterFS によって提供される機能の利用
vfs objects = glusterfs
この VFS モジュールは samba(8) システムの一部である。
GlusterFS (http://www.gluster.org) は、オープンソースのクラスタファイルシステムであり、ペタバイト まで容量を拡張できる。FUSE ベースのネイティブなクライアントを 使うと、GluterFS は POSIX 互換のファイルシステムとして使えるので、 追加の作業なしで、Samba から共有できる。
vfs_glusterfs
VFS モジュールは、共有を行うとき、
Samba から Gluster ファイルシステムにアクセスする、
より優れた代替手法を提供する。これは、Gluster FUSE マウントを
必要とせず、ライブラリ libgfapi
経由で
GlusterFS デーモンに直接アクセスするので、コストのかかる
kernel-userspace コンテキストスイッチを省略でき、
GlusterFS が持つより高度な機能のいくつかを利用できる。
このモジュールは他のモジュールと一緒に使えるが、
vfs objects
リスト中で一番最後のモジュールに
してはいけない。このリスト上で、glusterfs の右側に追加された
モジュールはほぼ全く効果が無い。
基本的な設定は以下の通り。
[share]
vfs objects = glusterfs
path = /relative/base/path
glusterfs:volume = gv0
kernel share modes = no
vfs_glusterfs
は Gluster mount を必要としない
ので、共有 path
は他の共有と異なった形で
扱われることに注意。使用時には gluster ボリュームからの
相対共有ベースパスとして扱われる。このため、通常は、ctdb が Samba
を管理する時の、ctdb クラスタセットアップ中にあるシステムパスと
同じではないので、ctdb 設定ファイル中で、
CTDB_SAMBA_SKIP_SHARE_CHECK=yes
を設定する
必要がある。この設定が無いと、ctdb は healthy という結果を得る
ことができない。
現在、ファイル機能が適正に動くように、glusterfs vfs モジュール を使う共有中で、カーネル共有モードを無効にしなければならないこと に注意。
vfs_glusterfs 固有のログファイルをどこに格納するかを定義する。 クライアント変数の置換はサポートされる(たとえば %M,%m,%I など) ので、クライアント単位のログファイルを指定できる。
例: glusterfs:logfile = /var/log/samba/glusterfs-vol2.%M.log
ログレベルの定義を行う。より大きな数値はより詳細であることを意味する。 0 - ログなし; 9 - トレースログレベル ; 7 は info ログレベルで 実行される。
もしもオプションで明示的にログレベルが指定されない場合は glusterfs 既定値のログレベルが使われる(通常 loglevel 7)。
使用する volfile サーバーを定義する。既定値は localhost である。これは、下記のような要素を、空白文字で分離した リストでも良い。
1. unix+/path/to/socket/file
2. [tcp+]IP|hostname|\[IPv6\][:port]
RFC2732 における、 URL に IPv6 アドレスを使う場合の制限事項と同様に、 IPv6 ホスト名に対する制約があることに注意。
この共有で使う glusterfs volumename を定義する。
GlusterFS の write-behind パフォーマンストランスレータは、 Samba と共に使うと、データのソースを破壊する可能性があります。 トランスレータが書き込み呼び出しを処理している間は、すぐに 成功を返しますが、引き続きサーバにデータをバックグラウンドで 書き込んでいます。これは、データの一貫性を提供するために Samba に 依存している 2つのクライアントが同じファイルで動作している場合に データ破壊を引き起こす可能性があります。
write-behind トランスレータは GlusterFS では既定で有効になって います。vfs_glusterfs プラグインは、トランスレータの存在を 確認し、見つかった場合には、接続を拒否します。ボリュームに対して プラグインが接続できるようにするためには、GlusterFS に対して write-behind トランスレータを無効にしてください。 write-behind トランスレータは 以下のように呼び出すことで簡単に 無効に出来ます。
gluster volume set <volumename> performance.write-behind off
GlusterFS のバージョンが 9 より大きい場合、最初の接続時には write-behind トランスレータを無条件にバイパスするので、 失敗が防げます。