vfs_fileid — クラスター構成時で使えるように、 ユニークなデバイス ID 値で file_id 構造体を生成する
vfs objects = fileid
この VFS モジュールは samba(7) システムの一部である。
ファイルロックの際、Samba は file_id 構造体を使ってファイルを一意に
特定する。デフォルトでは、file_id には stat()
システムコールで返されたデバイスおよび inode 番号が格納されている。
file_id はファイルの一意な識別子であるため、これはある特定のクラスター
構成のの中では、すべてのノードで同じ値である必要がある。
このモジュールは SMB_VFS_FILE_ID_CREATE()
の動作を
オーバーライドし、設定されたアルゴリズム( "fileid:algorithm"
オプションを参照のこと)に従ってデバイス番号を生成する。
fsname 又は fsid アルゴリズムを使う場合、file_id を生成するために、
すべてのマウントされたファイルシステムにおいて、
stat()
と statfs()
呼び出しが必要である。
たとえば、NFS ファイルシステムが応答しなくなると、そのような呼び出しは
ブロックされ、smbd プロセスが応答しなくなる。
"fileid:fstype deny"、"fileid:fstype allow"、"fileid:mntdir deny"、
または "fileid:mntdir allow" オプションを使うことで、潜在的に応答しない
ファイルシステムを無視する。
指定できるアルゴリズムはfsname
、
fsname_nodirs
、fsid
と
hostname
である。デフォルト値は
fsname
である。
fsname
アルゴリズムでは、
デバイス ID を カーネルのデバイス名から生成する。
fsname_nodirs
アルゴリズムは、ファイルの
カーネルのデバイス名をハッシュし、ディレクトリのホスト名を
ハッシュすることで、デバイス ID を生成する。これは、意図的に、
クラスタ中のディレクトリの一貫性を破るために使用できる。
fsid
アルゴリズムは、デバイス ID を
statfs()
システムコールで返された
f_fsid
から生成する。
hostname
アルゴリズムは、
ホスト名をハッシュしてデバイス IDを生成する。これは、
クラスタ中のロックの一貫性を破るために使用できる。
fsname_norootdir
アルゴリズムは、
hostname アルゴリズムで使われる、共有のルートディレクトリを除き、
カーネルデバイス名をハッシュして、デバイス IDを生成する。
これは、共有のルートディレクトリのクラスタ中の、ロックの
一貫性を破るのに使われる。
fsname_norootdir_ext
アルゴリズムは
カーネルデバイス名をハッシュすることにより、デバイス id を生成するが、
ホスト名アルゴリズムを使う共有のルートディレクトリでは行わない。
さらに、プロセスの pid をベースにした extid も生成する。
これは、共有のルートディレクトリ用の、クラスタ全体中で、すべての
smbd プロセス間でのロックの一貫性を意図的に解除することができる。
このオプションはfileid:algorithm
オプションの
レガシーな(古い)バージョンである。これは Samba 3.0 のカスタム
バージョンにおいて、フィールドマッピング機能に関する以前のバージョンで
使われていた。
file_id 生成時に無視されるファイルシステムタイプの一覧。
file_id 生成時に有効となるファイルシステムタイプの一覧。 このオプションが設定された場合、ここで指定されたファイルシステムタイプ 以外は無視される。
file_id 生成時に無視される、ファイルシステムマウントポイント の一覧。
file_id 生成時に有効となる、ファイルシステムマウントポイントの 一覧。このオプションが設定された場合、ここで指定されたファイルシステム マウントポイント以外は無視される。
このオプションは、クラスタ中にある、対応するファイルまたは ディレクトリのロックの一貫性を意図的に破るのに使用できる 設定された inode に対する、fileid hostnameアルゴリスムの使用を トリガする。