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 以降、すべてのオプションは共有単位のオプションである。
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 ファイルシステム上かどうかの
チェックをスキップする。
GPFS は ACE4_FLAG_NO_PROPAGATE NFSv4 フラグ(DESC_DACL_PROTECTED フラグへの マッピングであろう)をサポートしないため、このフラグのステータスは 現在 Samba によってあっさり無視される。これは、もしも、Windows の ダイアログボックスで、"..継承を有効にする.." チェックボックスを 選択しないで ACL を適用した場合、フラグが即座に戻ることを意味する。
たとえば、robocopy のような、自動マイグレーションが知らないうちに
(意図しないで)変更することがないようにするため、このフラグを明示的
チェックして、明示的に有効にするために、
gpfs:refuse_dacl_protected = yes
を設定でき、
もしも設定した場合、Windows 側に NT_STATUS_NOT_SUPPORTED が戻り、
そのためエラーが表示され、Administrator は意図したように ACL が設定
可能でないことを認識する。
no(既定値)
- DESC_DACL_PROTECTED フラグを無視する。
yes
- DESC_DACL_PROTECTED で ACL を拒否する。
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 を使わない。
GPFS 上の特別な ID(OWNER@ と GROUP@)の置換を制御する。 mode を simple にする事を推奨する。このモード中では、 ファイル所有者とグループに対する、非継承 ACL エントリのみが特別な ID にマップされる。
以下のモードがこのモジュールによって指定可能である:
simple(既定値)
- 非継承 ACE のみに対して、OWNER@ と GROUP@ の特別な ID を使用する。
special
- すべてのファイル所有者とグループ ACE に対して、OWNER@ と GROUP@ の特別な ID を使用する。
このパラメーターは GPFS の ACL 中で遭遇した、重複した ACE を Samba がどのように取り扱うかを設定する。 GPFS は同じ ID に対して異なった bit を持つ重複した ACE を許容し作成する。
以下はそれぞれの値における Samba の動作である:
dontcare
- 重複した ACE をそのまま利用する
reject (deprecated)
- ACL の設定処理で、処理を中断し、エラーとして終了する
ignore (deprecated)
- 2 番目にマッチした ACE を無視する
merge (既定値)
- 2 つの ace.flag フィールド、及び 2 つの ace.mask フィールドをビット演算で OR を取り、2 つの重複した ACE を 1 つの ACE に統合する
このパラメーターはファイルシステムのレイヤによって サポートされる chown を有効または無効に設定する。 このパラメーターは、あなたのシステムのセキュリティを 低下させるかもしれない事に注意して有効にすべきである。
いくつかのファイルシステムでは、chown の a) 許可 b) 拒否 が可能である。 リスクについて考慮されたのが後者である。
以下はそれぞれの値に対する Samba の動作である:
yes
- ファイルシステム下でサポートするような chown を有効にする。
no(既定値)
- chown を無効にする
このパラメーターは、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
へのシンボリックリンクである。