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 - ACL の設定処理で、処理を中断し、エラーとして終了する
ignore - 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
	へのシンボリックリンクである。