Состояние поддержки ZFS xattr во FreeBSD

15

Я пытаюсь понять, поддерживаются ли xattrs во FreeBSD с помощью ZFS или, скорее, в какой степени. Я прочитал некоторую противоречивую информацию.

  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странице человека :

    Это xattrсвойство в настоящее время не поддерживается во FreeBSD.

  4. setextattr, getextattrИ , lsextattrкажется, работает достаточно хорошо.
  5. Мне также удалось сохранить и восстановить файл узла устройства с помощью rsync --fake-super, и я мог видеть его данные, используя lsextattrи getextattr.
  6. В Википедии есть обсуждение на странице обсуждения xattr . Очевидно, когда-то было утверждение, что ZFS поддерживает xattr начиная с FreeBSD 8, но позже это было удалено со ссылкой на man-страницу (см. 3.).

В настоящее время у меня складывается впечатление, что расширенные атрибуты в zfs работают на практике, но xattrсвойство, которое будет контролировать их использование, работает не так, как в других дистрибутивах zfs. Но я хотел бы услышать это подтверждение (или исправление), прежде чем доверять большие объемы данных резервного копирования для rsync --fake-superработы на такой машине. Я бы предпочел не потерять все свои метаданные из-за известных проблем с xattr.

Если это имеет значение, это очень свежая установка FreeBSD 10.2, которую я только что установил, с ZFS, установленной установщиком.

MVG
источник
1
Я сделал это на форуме FreeBSD . Будем надеяться, что это, или щедрость, или оба, помогут получить авторитетный ответ на этот вопрос.
MvG
1
Я также отправил это в список рассылки freebsd-fs . Было бы стыдно, чтобы срок действия награды истек без ответа.
MvG
Ссылка на список рассылки не работает.
Матеуш Пиотровски
1
@Mateusz: создатель gmane прекратил эту услугу , хотя, очевидно, ведутся переговоры о том, чтобы кто-то еще продолжил ее. Вот сообщение в архиве FreeBSD или здесь, чтобы найти мой идентификатор сообщения .
MvG

Ответы:

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_Lat16.

Так что я думаю, что на самом деле происходит то, что xattrs работают, но функциональность их отключения (или включения) с помощью свойств набора данных ZFS нарушена, поэтому сообщение «не поддерживается» означает «вы по своему усмотрению».

Там есть некоторый код, который устанавливает MNTOPT_XATTR, но я его не отследил. попытка изменить его с помощью zfs set приводит к неподдерживаемому сообщению. Я предполагаю, что это объясняет странность свойства zfs xattr с помощью /, / usr, / var и противоречивую настройку / поведение / home.

Это проливает некоторый свет на вещи. https://www.lesbonscomptes.com/pages/extattrs.html

Джереми
источник