Стан підтримки 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, але це було видалено пізніше, з посиланням на manpage (див. 3.).

В даний час у мене складається враження, що розширені атрибути zfs працюють на практиці, але xattrвластивість, яка контролювала б їх використання, не працює так, як це було б в інших розподілах zfs. Але я хотів би почути це підтверджене (або виправлене), перш ніж я довіряю великій кількості резервних даних для rsync --fake-superроботи на такій машині. Я краще не втрачу всі свої метадані через відомі проблеми xattr.

Якщо це важливо, це дуже свіжа установка FreeBSD 10.2, яку я тільки що встановив, із програмою установки, встановленою ZFS.


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_dataset.c#L

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

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

Це проливає деяке світло на речі. https://www.lesbonscomptes.com/pages/extattrs.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.