FUSEメタデータのキャッシュによって`bindfs --mirror=user1:user2:...`が破損していますか?

FUSEメタデータのキャッシュによって`bindfs --mirror=user1:user2:...`が破損していますか?

https://bindfs.org/docs/bindfs.1.html

-m, --mirror=user1:user2:..., -o mirror=...

自分をすべてのファイルの所有者と考えるユーザーのカンマまたはコロンで区切られたリスト。ここにリストされていないユーザーは、権限が許可されている場合でもマウントにアクセスできます。

グループのすべてのメンバーをミラーリングするために、「@」プレフィックスが付いたグループ名を指定することもできます。ファイルが表示されるグループは変更されません。

これがファイルメタデータのLinuxカーネルキャッシュ(VFS inodeキャッシュ)でどのように機能するのか疑問です。

運が悪い場合は、「間違った」所有者に会うことができますか?それとも、bindfsVFS inodeキャッシュがすべてのユーザースペースアクセスに対してinode所有権の詳細を再取得するように強制するLinuxカーネルFUSE実装の一部の機能を使用するのが適切ですか?

FUSEカーネルは、デフォルトで3秒ごとにユーザースペースのFUSEプロセスのinode属性を更新します。これは、ヒューズ.confファイルのヒューズ.attr.timeoutパラメータを介して調整できます。ヒューズ.attr.timeoutパラメーターは、inode属性がカーネルで更新される時間間隔を指定し、キャッシュをフラッシュするのに必要な時間を最小限に抑えるために使用できます。

https://maprdocs.mapr.com/home/AdministratorGuide/MapRfusePOSIXClient-TuneCache.html

attr_timeout=T

ファイル/ディレクトリ属性キャッシュのタイムアウト(秒単位)。デフォルト値は1.0秒です。

http://man7.org/linux/man-pages/man8/mount.fuse.8.html

ベストアンサー1

binfsはそれを処理します。

https://github.com/mpartel/bindfs/blob/1.13.9/src/bindfs.c#L2248

/* We need to disable the attribute cache whenever two users
   can see different attributes. For now, only mirroring can do that. */
if (is_mirroring_enabled()) {
    fuse_opt_add_arg(&args, "-oattr_timeout=0");
}

attr_timeoutこれがカーネルinodeキャッシュの動作に正確にどのように変換されるのかよくわかりません。しかし、同様の質問がファイルサーバーで変更された場合は、inodeの詳細を再検証できるようにしたいすべてのネットワークファイルシステムに適用されると思います。

おすすめ記事