Próbuję ustalić, czy xattrs są obsługiwane we FreeBSD przy użyciu ZFS. Przeczytałem niektóre sprzeczne informacje.
zfs get xattr
Wymienia się w nim jakon (default)
za/
,/usr
a/var
, ale jakoff (temporary)
w przypadku wszystkich innych zbiorów danych, w tym dzieci z tych wymienionych powyżej.- Uruchomiony
zfs set xattr=on zroot/usr/home
dostaję wiadomośćproperty 'xattr' not supported on FreeBSD: permission denied
. - Jest to zgodne ze stroną podręcznika
zfs
:Ta
xattr
właściwość nie jest obecnie obsługiwana w systemie FreeBSD. setextattr
,getextattr
Ilsextattr
wydają się działać wystarczająco dobrze.- Udało mi się również zapisać i przywrócić węzeł pliku urządzenia za pomocą
rsync --fake-super
i widziałem jego dane za pomocąlsextattr
igetextattr
. - Wikipedia ma pewne dyskusje na stronie dyskusji xattr . Najwyraźniej kiedyś było twierdzenie, że ZFS obsługuje xattr od FreeBSD 8, ale zostało to później usunięte w odniesieniu do strony podręcznika (patrz 3.).
Obecnie mam wrażenie, że rozszerzone atrybuty ZFS działają w praktyce, ale xattr
właściwość, która kontrolowałaby ich użycie, nie działa tak jak w innych dystrybucjach ZFS. Ale chciałbym usłyszeć to potwierdzone (lub poprawione), zanim zaufam dużej ilości danych kopii zapasowej rsync --fake-super
działającej na takim komputerze. Wolę nie stracić wszystkich moich metadanych z powodu znanych problemów z xattr.
Jeśli to ważne, jest to bardzo świeża instalacja FreeBSD 10.2, którą właśnie skonfigurowałem, a ZFS został skonfigurowany przez instalatora.
Odpowiedzi:
Jak zauważyłeś, xattrs będzie działać, ale są nierówne krawędzie.
Czasami musisz podejść do kodu open source jak antropolog. Jeśli to nie jest pomocne samo w sobie, być może spowoduje to lepszy wkład (lub poprawki kodu!)
Znalazłem to w kodzie źródłowym:
https://github.com/freebsd/freebsd/blob/c829c2411ae5da594814773175c728ea816d9a12/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#L514
i to https://github.com/freebsd/freebsd/blob/386ddae58459341ec567604707805814a2128a57/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c#L302
a to daje ci pauzę: https://github.com/freebsd/freebsd/blob/e95b1e137c604a612291fd223fce89c2095cddf2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c#L38
Myślę, że tak naprawdę dzieje się to, że xattrs działają, ale funkcja ich wyłączania (lub włączania) przez właściwości zestawu danych ZFS jest zepsuta, więc komunikat „nieobsługiwany” oznacza „jesteś sam”.
Jest tam trochę kodu, który ustawia MNTOPT_XATTR, ale go nie odnalazłem. próba zmiany za pomocą zestawu zfs powoduje wyświetlenie nieobsługiwanej wiadomości. Domyślam się, że wyjaśnia to dziwność właściwości xattr zfs z /, / usr, / var oraz konfliktowe ustawienie / zachowanie / home.
To rzuca trochę światła na rzeczy. https://www.lesbonscomptes.com/pages/extattrs.html
źródło