vfs_gpfs — GPFS 特有の ACL 機能に対応するための Samba の拡張
vfs objects = gpfs
この VFS モジュールは samba(7) システムの一部である。
gpfs
VFS モジュールは、Samba が GPFS
と適切に連携する上で必要となるさまざまな GPFS エクステンションの
モジュールのベースである。
このモジュールは GPFS によって提供される GPL ライブラリインタフェースを使う。
現在のところ、gpfs VFS モジュールは以下のエクステンションのみを提供している。
GPFS のために設定可能な NFSv4 ACL インタフェース
GPFS 上でのカーネル oplock のサポート
GPFS 上での lease サポート
注意:
このモジュールは POSIX ACL
の挙動を模しているため、chown によるパーミッションの変更が可能である。
しかし、
Samba は現在のところ、この動作をサポートしていない。
このモジュールによる chown を禁止するには、Samba よりも下位の
ファイルシステム側の責任となる。
このモジュールは、smb.conf のパラメーター acl map full control = acl map full control を使用する。これを yes に設定した場合(既定値)、このパラメーターは、 FILE_DELETE と FILE_DELETE_CHILD を除いた、すべてのファイルのパーミッション に、すでに含まれている(ディレクトリではなく)ファイルに対する、戻り値内の ACE エントリ上に FILE_DELETE_CHILD ビットを追加する。これは、GENERIC_ALL アクセス 要求を行う Windows アプリケーションが、NFSv4 互換の ACL を持つ ファイルシステムに対して動作している時、ACCESS_DENIED エラーが返ってくる ことを防ぐ。
このモジュールはスタック可能である。
Samba 4.0 以降、すべてのオプションは共有単位のオプションである。
NFS4 ACL 上の特別な ID (OWNER@ と GROUP@) の置き換えを制御する。 モード simple の使用を推奨する。 このモードでは、ファイル所有者とグループの非継承 ACL エントリ のみが、特別な ID にマップされる。
以下の MODE はモジュールによって解釈される:
simple(default)
- 非継承 ACE 専用の、 OWNER@ と GROUP@ という特別な ID を使用する。
special(deprecated)
- すべてのファイル所有者とグループ ACE 用に、ACE 中で、 OWNER@ と GROUP@ という特別な ID を使用する。
このパラメータは、NFS4 ACL で検出された重複 ACE を、Samba が処理する方法を設定する。 これらは、同じ ID に対して異なるビットを持つ重複した ACE を作成することができるので、Windows クライアントを混乱させる可能性がある。
以下は、異なった値に対する Samba の挙動である :
dontcare
- 送られてきたとおりに ACE をコピーする
reject (deprecated)
- 操作を停止し、ACL 設定操作でエラーが発生した旨を添えて終了する
ignore (deprecated)
- 2番目に一致するACEを含めない
merge (default)
- 2つの重複 ACE の、2つの ace.flag と 2つの ace.mask フィールドの、ビット単位の OR を取り、1つの ACE にする
このパラメータは、基礎となるファイルシステムでサポートされている chown を 有効または無効にすることを許可する。このパラメータは注意して有効にする必要がある。 システムのセキュリティが低下する可能性があるからである。
ファイルシステムによっては a) 所有権を与えること b) 所有権を取得すること (訳注: a) giving b) stealing) として chown を許可しているものもある。 後者はリスクと考えられている。
以下は、異なる値に対する Samba の動作である:
yes
- ファイルシステムでサポートされている場合は、chown を有効にする
no (default)
- chown を無効にする
GPFS 用のクロスノード sharemode ハンドリングを有効/無効にする。
yes(既定値)
- すべての GPFS ノードにまたがって sharemode を伝搬する。
no
- すべての GPFS ノードにまたがって sharemodes を伝搬しない。
これはもしも GPFS ファイルシステムが Samba によって排他的にエクスポート
される場合にのみ使うべきである。ローカルの UNIX アプリケーションか
NFS エクスポートによるアクセスはファイルの破壊を引き起こすことに繋がる。
GPFS のためのクロスノードリース(oplocks)を有効/無効にする。
oplocks
と kernel oplocks
オプションを同じ値に設定すべきである。
yes(既定値)
- すべての GPFS ノードのリースを伝搬する。
no
- すべての GPFS ノードにまたがってリースを伝搬しない。
これは、もしも GPFS ファイルシステムが Samba によって排他的にエクスポート
される場合にのみ使うべきである。ローカルの UNIX アプリケーションか
NFS エクスポートによるアクセスはファイルの破壊を引き起こすことに繋がる。
この FS が HSM を有効にしている場合、アナウンスを有効/無効にする。
no(既定値)
- HSM アナウンスを通知しない。
yes
- HSMアナウンスを行う。
このオプションが no に設定されると、オフラインファイルを オープンしようとした場合、アクセス拒否エラーで開けなくなる。 これは、Finder や Explorer のような、不注意なアプリケーションに よって、頻繁な再読出(recall storm)が発生することを防ぐ手伝いをする。
yes(既定値)
-
オフラインのファイルを開く。これは、HSM からのファイルを
再読出する。
no
- アクセス拒否として、
オフラインファイルのアクセスを出来なくする。これは、HSM からの
ファイル再読出を抑制する。これを設定するときは、gpfs:hsm を
yes に設定することも必要である。
gpfs_get_realfilename_path()
機能の
有効/無効を指定する。
これは、大文字小文字を認識するワイルドカードファイル名アクセスを
改善する。
yes(既定値)
- gpfs_get_realfilename_path()
を使用する。
no
- gpfs_get_realfilename_path()
を使わない。
AIX では gpfs_get_realfilename_path()
が動かないように見える。
GPFS の windows 属性の使用を有効/無効にする。 GPFS は、たとえば、HIDDEN、READONLY、SYSTEM やその他のような windows 属性を個別に格納することができる。すなわち、Samba が それらの属性を、パーミッションビットや拡張属性にマップする必要がないことを 意味する。
no(既定値)
- GPFS windows 属性を使用しない。
yes
- GFPS windows属性を使用する。
このオプションは Samba に GPFS ACL を無視させるようにする。
yes(既定値)
- GPFS ACL を使う。
no
- GPFS ACL を使わず、次の SMB VFS モジュールにすべてを渡す。
SMB 共有へのアクセス時に、マウントされた GPFS ファイルシステムをチェックする。
yes(既定値)
- SMB共有が GPFS ファイルシステム上に
あるかどうかをチェックする。異なるファイルシステムだった場合は
共有へのアクセスは拒否される。
no
- SMB 共有パスが GPFS ファイルシステム上かどうかの
チェックをスキップする。
quota による共有の残量と使用量の報告を調整する。これを "yes" に 設定すると、使用量と残量の要求は、ユーザーが要求したデータの ユーザークォータ、ユーザーのプライマリグループのグループクォータ も評価する。残量問い合わせ中のファイルセットクォータを反映する ために --dfreequota オプション を GPFS がすでに提供しているとしても、 ファイルセットクォータは問合せされない。
もしも、何らかの、ソフトあるいはハードクォータ制限に達した 場合、残量は 0 と報告される。もしもクォータが動作しているが、 制限に達していない場合、残量はクォータの残り量に従って 報告される。もしも 1 つ以上のクォータが残量に引っかかって いる場合、それらのクォータの、最も小さい量のものが報告される。 共有のサイズはクォータの使用量にそって報告される。もしも 1 つ以上のクォータが適用される場合、共有のサイズは、それらの クォータの中の最も小さいものに従って報告される。
yes
- 共有の使用量と残量を報告するときにクォータを含める。
no(既定値)
- クォータを含めず、単に
ファイルシステムの大きさと残量を報告する。
ファイルまたはディレクトリのタイムスタンプを変更する際に、 gpfs_set_times API を使う。もしも、 GPFS API が有効で ない場合、utime を使う古い方法と、GPFS winaddr 呼び出し を代替として使う。
yes(規定値)
- gpfs_set_times を使う。
それが有効でない場合、utime と winattr に切り替える。
no
- gpfs_set_times を使わない。
このパラメーターは、Samba にすべてのファイルを O_SYNC で オープンするようにさせる。これは、高負荷でファイルを共用 するワークロードのための GPFS 中での最適化をトリガする。
以下は、異なった値における Samba の動作である。
yes
- ファイルを O_SYNC で開く。
no(既定値)
- 通常 Samba が行うように
ファイルをオープンする。
GPFS mount は以下のように、Samba 経由でエクスポートできる。
[samba_gpfs_share]
vfs objects = gpfs
path = /test/gpfs_mount
nfs4: mode = special
nfs4: acedup = merge
gpfs のバージョンに依存するので、libgpfs_gpl
ライブラリまたは libgpfs
ライブラリは
gpfs
VFS モジュールによって実行時に必要とされる:
gpfs 3.2.1 PTF8 の公開時には、完全な libgpfs
がオープンソースとして公開されていて、libgpfs_gpl
はもはや存在しない。それより前の gpfs バージョンでは、
libgpfs_gpl
のみがオープンソースで、ランタイムとして
使える。
コンパイル時には、gpfs_gpl.h
ヘッダーファイルのみが必要で、
これは 3.2.1 PTF8 よりも新しい gpfs バージョン中の gpfs.h
へのシンボリックリンクである。