名前

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:sharemodes = [ yes | no ]

GPFS 用のクロスノード sharemode ハンドリングを有効/無効にする。

  • yes(既定値) - すべての GPFS ノードにまたがって sharemode を伝搬する。

  • no - すべての GPFS ノードにまたがって sharemodes を伝搬しない。 これはもしも GPFS ファイルシステムが Samba によって排他的にエクスポート される場合にのみ使うべきである。ローカルの UNIX アプリケーションか NFS エクスポートによるアクセスはファイルの破壊を引き起こすことに繋がる。

gpfs:leases = [ yes | no ]

GPFS のためのクロスノードリース(oplocks)を有効/無効にする。 oplockskernel oplocks オプションを同じ値に設定すべきである。

  • yes(既定値) - すべての GPFS ノードのリースを伝搬する。

  • no - すべての GPFS ノードにまたがってリースを伝搬しない。 これは、もしも GPFS ファイルシステムが Samba によって排他的にエクスポート される場合にのみ使うべきである。ローカルの UNIX アプリケーションか NFS エクスポートによるアクセスはファイルの破壊を引き起こすことに繋がる。

gpfs:hsm = [ yes | no ]

この FS が HSM を有効にしている場合、アナウンスを有効/無効にする。

  • no(既定値) - HSM アナウンスを通知しない。

  • yes - HSMアナウンスを行う。

gpfs:recalls = [ yes | no ]

このオプションが no に設定されると、オフラインファイルを オープンしようとした場合、アクセス拒否エラーで開けなくなる。 これは、Finder や Explorer のような、不注意なアプリケーションに よって、頻繁な再読出(recall storm)が発生することを防ぐ手伝いをする。

  • yes(既定値) - オフラインのファイルを開く。これは、HSM からのファイルを 再読出する。

  • no - アクセス拒否として、 オフラインファイルのアクセスを出来なくする。これは、HSM からの ファイル再読出を抑制する。これを設定するときは、gpfs:hsm を yes に設定することも必要である。

gpfs:getrealfilename = [ yes | no ]

gpfs_get_realfilename_path() 機能の 有効/無効を指定する。 これは、大文字小文字を認識するワイルドカードファイル名アクセスを 改善する。

  • yes(既定値) - gpfs_get_realfilename_path() を使用する。

  • no - gpfs_get_realfilename_path() を使わない。 AIX では gpfs_get_realfilename_path() が動かないように見える。

gpfs:winattr = [ yes | no ]

GPFS の windows 属性の使用を有効/無効にする。 GPFS は、たとえば、HIDDEN、READONLY、SYSTEM やその他のような windows 属性を個別に格納することができる。すなわち、Samba が それらの属性を、パーミッションビットや拡張属性にマップする必要がないことを 意味する。

  • no(既定値) - GPFS windows 属性を使用しない。

  • yes - GFPS windows属性を使用する。

gpfs:acl = [ yes | no ]

このオプションは Samba に GPFS ACL を無視させるようにする。

  • yes(既定値) - GPFS ACL を使う。

  • no - GPFS ACL を使わず、次の SMB VFS モジュールにすべてを渡す。

gpfs:check_fstype = [ yes | no ]

SMB 共有へのアクセス時に、マウントされた GPFS ファイルシステムをチェックする。

  • yes(既定値) - SMB共有が GPFS ファイルシステム上に あるかどうかをチェックする。異なるファイルシステムだった場合は 共有へのアクセスは拒否される。

  • no - SMB 共有パスが GPFS ファイルシステム上かどうかの チェックをスキップする。

gpfs:refuse_dacl_protected = [ yes | no ]

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 を拒否する。

gpfs:dfreequota = [ yes | no ]

quota による共有の残量と使用量の報告を調整する。これを "yes" に 設定すると、使用量と残量の要求は、ユーザーが要求したデータの ユーザークォータ、ユーザーのプライマリグループのグループクォータ も評価する。残量問い合わせ中のファイルセットクォータを反映する ために --dfreequota オプション を GPFS がすでに提供しているとしても、 ファイルセットクォータは問合せされない。

もしも、何らかの、ソフトあるいはハードクォータ制限に達した 場合、残量は 0 と報告される。もしもクォータが動作しているが、 制限に達していない場合、残量はクォータの残り量に従って 報告される。もしも 1 つ以上のクォータが残量に引っかかって いる場合、それらのクォータの、最も小さい量のものが報告される。 共有のサイズはクォータの使用量にそって報告される。もしも 1 つ以上のクォータが適用される場合、共有のサイズは、それらの クォータの中の最も小さいものに従って報告される。

  • yes - 共有の使用量と残量を報告するときにクォータを含める。

  • no(既定値) - クォータを含めず、単に ファイルシステムの大きさと残量を報告する。

gpfs:settimes = [ yes | no ]

ファイルまたはディレクトリのタイムスタンプを変更する際に、 gpfs_set_times API を使う。もしも、 GPFS API が有効で ない場合、utime を使う古い方法と、GPFS winaddr 呼び出し を代替として使う。

  • yes(規定値) - gpfs_set_times を使う。 それが有効でない場合、utime と winattr に切り替える。

  • no - gpfs_set_times を使わない。

nfs4:mode = [ simple | special ]

GPFS 上の特別な ID(OWNER@ と GROUP@)の置換を制御する。 mode を simple にする事を推奨する。このモード中では、 ファイル所有者とグループに対する、非継承 ACL エントリのみが特別な ID にマップされる。

以下のモードがこのモジュールによって指定可能である:

  • simple(既定値) - 非継承 ACE のみに対して、OWNER@ と GROUP@ の特別な ID を使用する。

  • special - すべてのファイル所有者とグループ ACE に対して、OWNER@ と GROUP@ の特別な ID を使用する。

nfs4:acedup = [dontcare|reject|ignore|merge]

このパラメーターは 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 に統合する

nfs4:chown = [yes|no]

このパラメーターはファイルシステムのレイヤによって サポートされる chown を有効または無効に設定する。 このパラメーターは、あなたのシステムのセキュリティを 低下させるかもしれない事に注意して有効にすべきである。

いくつかのファイルシステムでは、chown の a) 許可 b) 拒否 が可能である。 リスクについて考慮されたのが後者である。

以下はそれぞれの値に対する Samba の動作である:

  • yes - ファイルシステム下でサポートするような chown を有効にする。

  • no(既定値) - chown を無効にする

gpfs:syncio = [yes|no]

このパラメーターは、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 へのシンボリックリンクである。

バージョン

このマニュアルページは Samba バージョン 4.14.5 用である。

著者

オリジナルの Samba ソフトウェアと関連するユーティリティは、Andrew Tridgell によって作成された。現在 Samba は Samba Team に よって、Linux カーネルの開発と同様のオープンソースプロジェクト として開発が行なわれている。

GPFS VFS モジュールは Volker Lendecke と IBM の開発者によって寄贈され、作成された。

このマニュアルページは、IBM FSCC チームによって作成された。

日本語訳

このマニュアルページは Samba 4.11.0 - 4.14.5 に対応する。

このドキュメントの Samba 3.2.4 - 4.14.5 対応の翻訳は

  • たかはしもとのぶ (monyo@samba.gr.jp)

  • 太田俊哉 (ribbon@samba.gr.jp)

によって行なわれた。