FreeBSD中ZFS xattr支持的状态


15

我正在尝试确定使用ZFS的FreeBSD是否支持xattrs,或者更广泛地支持xattrs。我读了一些矛盾的信息。

  1. zfs get xattr将其列为on (default)//usr/var,但off (temporary)对所有其他数据集,包括上面提到的那些孩子们。
  2. 运行zfs set xattr=on zroot/usr/home我得到消息

    property 'xattr' not supported on FreeBSD: permission denied

  3. 这符合zfs手册页

    xattrFreeBSD当前不支持该属性。

  4. setextattrgetextattr并且lsextattr看起来效果很好。
  5. 我也设法保存和恢复设备文件节点使用rsync --fake-super,并且可以用看到它的数据lsextattrgetextattr
  6. Wikipedia在xattr讨论页面上进行了一些讨论。显然曾经有人声称ZFS从FreeBSD 8开始就支持xattr,但是后来参考联机帮助页将其删除(请参阅3.)。

当前,我得到的印象是,zfs上的扩展属性实际上可以工作,但是xattr控制其使用的属性不像其他zfs发行版那样起作用。但是我希望在我将大量备份数据信任rsync --fake-super在这样一台计算机上运行之前确认(或更正)该消息。由于已知的xattr问题,我宁愿不丢失所有元数据。

如果重要的话,这是我刚刚设置的非常新颖的FreeBSD 10.2安装,由安装程序设置了ZFS。


1
我将其交叉发布到FreeBSD论坛。我们希望这或赏金或两者都将有助于获得有关此问题的权威性答案。
MvG

1
我还把它交叉发布到freebsd-fs邮件列表中。悬赏赏金无答案而过期将是可耻的。
MvG

邮件列表链接已死。
Mateusz Piotrowski

1
@Mateusz:gmane 的创建者终止了该服务,尽管显然正在谈判让其他人继续使用该服务。是FreeBSD档案中的帖子,或者在这里搜索我的信息ID
MvG

Answers:


5

如您所见,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

因此,我认为实际上正在发生的是xattrs可以工作,但是通过ZFS数据集属性关闭(或打开)它们的功能已损坏,因此“不支持”消息表示“您自己一个人”。

那里有一些设置MNTOPT_XATTR的代码,但是我没有找到它。尝试使用zfs set更改它会得到不支持的消息。我的猜测是用/,/ usr,/ var和/ home的冲突设置/行为解释了zfs xattr属性的怪异之处。

这为事物提供了一些启示。 https://www.lesbonscomptes.com/pages/extattrs.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.