MvG*_*MvG 16 freebsd zfs bsd xattr
我正在尝试确定是否使用 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手册页:
xattrFreeBSD 目前不支持该属性。
setextattr,getextattr而且lsextattr似乎工作得很好。rsync --fake-super,并且可以使用lsextattr和查看其数据getextattr。目前,我的印象是 zfs 上的扩展属性在实践中起作用,但是xattr控制它们使用的属性不像在其他 zfs 发行版中那样起作用。但在我相信大量备份数据可以rsync --fake-super在这样的机器上运行之前,我想听到确认(或纠正)。由于已知的 xattr 问题,我不想丢失所有元数据。
如果重要的话,这是我刚刚设置的一个非常新的 FreeBSD 10.2 安装,安装程序设置了 ZFS。
小智 5
正如您所发现的,xattrs 可以工作,但有一些粗糙的地方。
有时您必须像人类学家一样接近开源代码。如果这本身没有帮助,也许这会激发一些更好的贡献(或最终代码修复!)
我在源代码中找到了这个:
/*
* 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);
Run Code Online (Sandbox Code Playgroud)
然而这让你停下来:https : //github.com/freebsd/freebsd/blob/e95b1e137c604a612291fd223fce89c2095cddf2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset38c#
所以我认为实际发生的是 xattrs工作,但通过 ZFS 数据集属性关闭(或打开)它们的功能被破坏,所以“不支持”消息意味着“你是自己的”。
那里有一些设置 MNTOPT_XATTR 的代码,但我没有追踪它。尝试使用 zfs set 更改它会得到不受支持的消息。我的猜测是解释了 zfs xattr 属性与 /、/usr、/var 的怪异性以及 /home 的冲突设置/行为。
这说明了一些事情。 https://www.lesbonscomptes.com/pages/extattrs.html
| 归档时间: |
|
| 查看次数: |
1885 次 |
| 最近记录: |