Name

vfs_gpfs — GPFS 特有の ACL や prealloc 機能に対応するための Samba の拡張

Synopsis

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エラーが帰ってくる ことを防ぐ。

This module makes use of the smb.conf parameter acl map full control = acl map full control When set to yes (the default), this parameter will add in the FILE_DELETE_CHILD bit on a returned ACE entry for a file (not a directory) that already contains all file permissions except for FILE_DELETE and FILE_DELETE_CHILD. This can prevent Windows applications that request GENERIC_ALL access from getting ACCESS_DENIED errors when running against a filesystem with NFSv4 compatible ACLs.

このモジュールはスタック可能である。

Samba 4.0以降、すべてのオプションは共有単位のオプションである。

オプション

gpfs:sharemodes = [ yes | no ]

GPFS用のクロスノードsharemodeハンドリングを有効/無効にする。 Enable/Disable cross node sharemode handling for GPFS.

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

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

gpfs:leases = [ yes | no ]

GPFSのためのクロスノードリース(oplocks)を有効/無効にする。 oplockskernel oplocks オプションを同じ値に設定すべきである。 Enable/Disable cross node leases (oplocks) for GPFS. You should also set the oplocks and kernel oplocks options to the same value.

  • yes(既定値) - すべてのGPFSノードのリースを伝搬する。 propagate leases across all GPFS nodes.

  • 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()を使用する。 use gpfs_get_realfilename_path().

  • no - gpfs_get_realfilename_path()を使わない。 AIXではgpfs_get_realfilename_path()が動かないように見える。 do not use gpfs_get_realfilename_path(). It seems that gpfs_get_realfilename_path() doesn't work on AIX.

gpfs:winattr = [ yes | no ]

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

Enable/Disable usage of the windows attributes in GPFS. GPFS is able to store windows file attributes e.g. HIDDEN, READONLY, SYSTEM and others natively. That means Samba doesn't need to map them to permission bits or extended attributes.

  • no(既定値) - GPFS windows属性を使用しない。 do not use GPFS windows attributes.

  • yes - GFPS windows属性を使用する。 use GPFS windows attributes.

gpfs:merge_writeappend = [ yes | no ]

GPFS ACLは 'APPEND' 権限を認識しない。 このオプションは Samba に'APPEND' 権限をを 'WRITE' 権限に マップさせる。

  • yes(既定値) - 'APPEND'を'WRITE'にマップする。 map 'APPEND' to 'WRITE'.

  • no - 'APPEND'を'WRITE'にマップしない。 do not map 'APPEND' to 'WRITE'.

gpfs:acl = [ yes | no ]

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

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

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

gpfs:refuse_dacl_protected = [ yes | no ]

GPFSはACE4_FLAG_NO_PROPAGATE NFSv4フラグ(DESC_DACL_PROTECTEDフラグへの マッピングであろう)をサポートしないため、このフラグのステータスは 現在Sambaによってあっさり無視される。これは、もしも、Windowsの ダイアログボックスで、"..継承を有効にする.."チェックボックスを 選択しないでACLを適用した場合、フラグが即座に戻ることを意味する。

As GPFS does not support the ACE4_FLAG_NO_PROPAGATE NFSv4 flag (which would be the mapping for the DESC_DACL_PROTECTED flag), the status of this flag is currently silently ignored by Samba. That means that if you deselect the "Allow inheritable permissions..." checkbox in Windows' ACL dialog and then apply the ACL, the flag will be back immediately.

たとえば、robocopyのような、自動マイグレーションが知らないうちに (意図しないで)変更することがないようにするため、このフラグを明示的 チェックして、明示的に有効にするために、 gpfs:refuse_dacl_protected = yesを設定でき、 もしも設定した場合、Windows側にNT_STATUS_NOT_SUPPORTEDが戻り、 そのためエラーが表示され、Administratorは意図したようにACLが設定 可能でないことを認識する。

To make sure that automatic migration with e.g. robocopy does not lead to ACLs silently (and unintentionally) changed, you can set gpfs:refuse_dacl_protected = yes to enable an explicit check for this flag and if set, it will return NT_STATUS_NOT_SUPPORTED so errors are shown up on the Windows side and the Administrator is aware of the ACLs not being settable like intended

  • no(既定値) - DESC_DACL_PROTECTEDフラグを無視する。 ignore the DESC_DACL_PROTECTED flags.

  • yes - DESC_DACL_PROTECTEDでACLを拒否する。 reject ACLs with DESC_DACL_PROTECTED.

gpfs:dfreequota = [ yes | no ]

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

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

If any of the soft or hard quota limits has been reached, the free space will be reported as 0. If a quota is in place, but the limits have not been reached, the free space will be reported according to the space left in the quota. If more than one quota applies the free space will be reported as the smallest space left in those quotas. The size of the share will be reported according to the quota usage. If more than one quota applies, the smallest size will be reported for the share size according to these quotas.

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

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

gpfs:prealloc = [ yes | no ]

もしもyesに設定された場合、gpfs_prealloc 機能は、適切なときに fallocate コールバック中で使われる。もしも no に設定された場合、 gpfs_prealloc は使われない。両方の場合において、システムとライブラリ コールは回避される。

If set to yes the gpfs_prealloc function will be used in the fallocate callback when appropriate. If set to no gpfs_prealloc will not be used. In both cases the system and libc calls are avoided.

  • yes (既定値) - fallocate コールバックのために gpfs_prealloc を使う。

  • no - fallocate コールバックのために gpfs_prealloc を使わない。

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 - ACLの設定処理で、処理を中断し、エラーとして終了する

  • ignore - 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中での最適化をトリガする。

This parameter makes Samba open all files with O_SYNC. This triggers optimizations in GPFS for workloads that heavily share files.

以下は、異なった値におけるSambaの動作である。: Following is the behaviour of Samba for different values:

  • 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のみがオープンソースで、ランタイムとして 使える。

Depending on the version of gpfs, the libgpfs_gpl library or the libgpfs library is needed at runtime by the gpfs VFS module: Starting with gpfs 3.2.1 PTF8, the complete libgpfs is available as open source and libgpfs_gpl does no longer exist. With earlier versions of gpfs, only the libgpfs_gpl library was open source and could be used at run time.

コンパイル時には、gpfs_gpl.hヘッダーファイルのみが必要で、 これは3.2.1 PTF8よりも新しいgpfsバージョン中のgpfs.h へのシンボリックリンクである。

At build time, only the header file gpfs_gpl.h is required , which is a symlink to gpfs.h in gpfs versions newer than 3.2.1 PTF8.

バージョン

このマニュアルページは Samba バージョン 3.0.25用(訳注:4.0?)である。

著者

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

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

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

日本語訳

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

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

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

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

によって行なわれた。