GNU/Linux >> LINUX-Kenntnisse >  >> FreeBSD

Freebsd – Status der Zfs-Xattr-Unterstützung in Freebsd?

Ich versuche herauszufinden, ob oder inwieweit xattrs in FreeBSD mit ZFS unterstützt werden. Ich habe widersprüchliche Informationen gelesen.

  1. zfs get xattr listet es als on (default) auf für / , /usr und /var , aber als off (temporary) für alle anderen Datensätze, einschließlich Kinder der oben genannten.
  2. Ausführen von zfs set xattr=on zroot/usr/home Ich bekomme die Meldung

    property 'xattr' not supported on FreeBSD: permission denied .

  3. Das stimmt mit dem zfs überein Manpage:

    Der xattr -Eigenschaft wird derzeit von FreeBSD nicht unterstützt.

  4. setextattr , getextattr und lsextattr scheinen gut genug zu funktionieren.
  5. Ich habe es auch geschafft, einen Gerätedateiknoten mit rsync --fake-super zu speichern und wiederherzustellen , und konnte seine Daten mit lsextattr sehen und getextattr .
  6. Wikipedia hat einige Diskussionen auf der xattr-Diskussionsseite. Anscheinend wurde einmal behauptet, dass ZFS xattr seit FreeBSD 8 unterstützt, aber das wurde später mit Verweis auf die Manpage entfernt (siehe 3.).

Momentan habe ich den Eindruck, dass erweiterte Attribute auf zfs in der Praxis funktionieren, aber dass die xattr -Eigenschaft, die ihre Verwendung steuern würde, funktioniert nicht wie in anderen zfs-Distributionen. Aber ich würde das gerne bestätigt (oder korrigiert) hören, bevor ich große Mengen an Sicherungsdaten einem rsync --fake-super anvertraue läuft auf einer solchen Maschine. Ich möchte lieber nicht alle meine Metadaten aufgrund bekannter xattr-Probleme verlieren.

Wenn es darauf ankommt, ist dies ein sehr Neuinstallation von FreeBSD 10.2, die ich gerade eingerichtet habe, wobei ZFS vom Installationsprogramm eingerichtet wurde.

Akzeptierte Antwort:

Wie Sie festgestellt haben, funktionieren xattrs, aber es gibt Ecken und Kanten.

Manchmal muss man Open-Source-Code wie einen Anthropologen angehen. Wenn dies an sich nicht hilfreich ist, provoziert dies vielleicht einige bessere Beiträge (oder schließlich Code-Korrekturen!)

Ich habe das im Quellcode gefunden:

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);

und dieses https://github.com/freebsd/freebsd/blob/386ddae58459341ec567604707805814a2128a57/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c#L302

und doch gibt Ihnen das eine Pause:https://github.com/freebsd/freebsd/blob/e95b1e137c604a612291fd223fce89c2095cddf2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c#L1638

Siehe auch:Auf FreeBSD kann nicht in eine Datei geschrieben werden – schreibgeschütztes Dateisystem?

Was meiner Meinung nach tatsächlich passiert, ist, dass xattrs funktionieren aber die Funktion zum Deaktivieren (oder Aktivieren) durch ZFS-Dataset-Eigenschaften ist defekt, sodass die Meldung „nicht unterstützt“ bedeutet „Sie sind auf sich allein gestellt.“

Es gibt dort einen Code, der MNTOPT_XATTR setzt, aber ich habe ihn nicht nachverfolgt. Wenn Sie versuchen, es mit zfs set zu ändern, erhalten Sie die nicht unterstützte Meldung. Meine Vermutung ist, dass dies die Verrücktheit der xattr-Eigenschaft von zfs mit /, /usr, /var und die widersprüchlichen Einstellungen/das Verhalten von /home erklärt.

Das bringt etwas Licht in die Sache. https://www.lesbonscomptes.com/pages/extattrs.html


FreeBSD
  1. FreeBSD 11.1 Installationshandbuch

  2. Freebsd – Freebsd zum Grub2-Startmenü hinzufügen?

  3. WLAN-Fehler Wpa_supplicant?

  4. Zfs Grub-Probe-Fehler Fehler beim Abrufen des kanonischen Pfads von /dev/disk_name?

  5. Wie ist der aktuelle Stand der Linux-Grafiktreiberunterstützung?

So installieren Sie Cinnamon unter FreeBSD 13

So installieren Sie XFCE unter FreeBSD 13

So installieren Sie Mediawiki auf FreeBSD

So installieren Sie HAProxy unter FreeBSD

So installieren Sie Webmin unter FreeBSD

10 Dinge, die nach einer Neuinstallation von FreeBSD zu tun sind