私は、ZFSを使用してFreeBSDでxattrsがサポートされているかどうか、またはどの程度までサポートされているかを調べようとしています。矛盾する情報をいくつか読みました。
-
zfs get xattron (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