私は、ZFSを使用してFreeBSDでxattrsがサポートされているかどうか、またはどの程度までサポートされているかを調べようとしています。矛盾する情報をいくつか読みました。
-
zfs get xattr
on (default)
としてリストされます/
の場合 、/usr
および/var
、ただしoff (temporary)
上記の子を含む他のすべてのデータセットの場合。 -
zfs set xattr=on zroot/usr/home
を実行します メッセージが表示されますproperty 'xattr' not supported on FreeBSD: permission denied
。 - これは
zfs
と一致します マニュアルページ:
xattr
プロパティは現在FreeBSDではサポートされていません。 -
setextattr
、getextattr
およびlsextattr
十分に機能しているようです。 -
rsync --fake-super
を使用して、デバイスファイルノードを保存および復元することもできました。 、およびlsextattr
を使用してそのデータを表示できます およびgetextattr
。 - ウィキペディアのxattrトークページでいくつかの議論があります。どうやら、FreeBSD 8以降、ZFSがxattrをサポートしているという主張があったようですが、マンページを参照して、後で削除されました(3を参照)。
現在、zfsの拡張属性は実際には機能しているという印象を受けますが、xattr
それらの使用を制御するプロパティは、他のzfsディストリビューションの場合のようには機能しません。しかし、大量のバックアップデータをrsync --fake-super
に信頼する前に、それが確認(または修正)されたことを聞きたいです。 そのようなマシンで実行されています。既知のxattrの問題が原因で、すべてのメタデータを失いたくないのです。
重要な場合、これは非常に インストーラーによってZFSがセットアップされた、セットアップしたばかりのFreeBSD10.2の新規インストール。
承認された回答:
お気づきのとおり、xattrsは機能しますが、エッジが粗いです。
人類学者のようにオープンソースコードにアプローチしなければならない場合もあります。これ自体が役に立たない場合は、より良い貢献(または最終的にはコードの修正)を引き起こす可能性があります
私はこれをソースコードで見つけました:
https://github.com/freebsd/freebsd/blob/c829c2411ae5da594814773175c728ea816d9a12/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#L514
/*
* Register property callbacks.
*
* It would probably be fine to just check for i/o error from
* the first prop_register(), but I guess I like to go
* overboard...
*/
error = dsl_prop_register(ds,
zfs_prop_to_name(ZFS_PROP_ATIME), atime_changed_cb, zfsvfs);
error = error ? error : dsl_prop_register(ds,
zfs_prop_to_name(ZFS_PROP_XATTR), xattr_changed_cb, zfsvfs);
error = error ? error : dsl_prop_register(ds,
zfs_prop_to_name(ZFS_PROP_RECORDSIZE), blksz_changed_cb, zfsvfs);
そしてこのhttps://github.com/freebsd/freebsd/blob/386ddae58459341ec567604707805814a2128a57/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c#L302
それでも、これにより一時停止が発生します:https://github.com/freebsd/freebsd/blob/e95b1e137c604a612291fd223fce89c2095cddf2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c#L1638
関連:FreeBSD上のファイルに書き込めません—読み取り専用ファイルシステム?つまり、実際に起こっていると思うのは、xattrsが機能するということです。 ただし、ZFSデータセットのプロパティによってそれらをオフ(またはオン)にする機能が壊れているため、「サポートされていません」というメッセージは「あなたは自分で」を意味します。
MNTOPT_XATTRを設定するコードがいくつかありますが、私はそれを追跡していません。 zfs setを使用して変更しようとすると、サポートされていないメッセージが表示されます。私の推測では、これは、/、/ usr、/varを使用したzfsxattrプロパティの奇妙さ、および/homeの競合する設定/動作を説明していると思います。
これは物事にいくつかの光を当てます。 https://www.lesbonscomptes.com/pages/extattrs.html