Я пытаюсь понять, поддерживаются ли xattrs во FreeBSD с помощью ZFS или, скорее, в какой степени. Я прочитал некоторую противоречивую информацию.
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 . Очевидно, когда-то было утверждение, что ZFS поддерживает xattr начиная с FreeBSD 8, но позже это было удалено со ссылкой на man-страницу (см. 3.).
В настоящее время у меня складывается впечатление, что расширенные атрибуты в zfs работают на практике, но xattr
свойство, которое будет контролировать их использование, работает не так, как в других дистрибутивах zfs. Но я хотел бы услышать это подтверждение (или исправление), прежде чем доверять большие объемы данных резервного копирования для rsync --fake-super
работы на такой машине. Я бы предпочел не потерять все свои метаданные из-за известных проблем с xattr.
Если это имеет значение, это очень свежая установка FreeBSD 10.2, которую я только что установил, с ZFS, установленной установщиком.
Ответы:
Как вы обнаружили, xattrs будет работать, но есть неровные края.
Иногда вам нужно подходить к открытому исходному коду, как к антропологу. Если это само по себе бесполезно, возможно, это спровоцирует некоторые улучшения (или, в конечном итоге, исправления кода!)
Я нашел это в исходном коде:
https://github.com/freebsd/freebsd/blob/c829c2411ae5da594814773175c728ea816d9a12/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#L514
и этот 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_Lat16.
Так что я думаю, что на самом деле происходит то, что xattrs работают, но функциональность их отключения (или включения) с помощью свойств набора данных ZFS нарушена, поэтому сообщение «не поддерживается» означает «вы по своему усмотрению».
Там есть некоторый код, который устанавливает MNTOPT_XATTR, но я его не отследил. попытка изменить его с помощью zfs set приводит к неподдерживаемому сообщению. Я предполагаю, что это объясняет странность свойства zfs xattr с помощью /, / usr, / var и противоречивую настройку / поведение / home.
Это проливает некоторый свет на вещи. https://www.lesbonscomptes.com/pages/extattrs.html
источник