GNU/Linux >> Linux Esercitazione >  >> FreeBSD

Freebsd - Supporto allo stato di Zfs Xattr in Freebsd?

Sto cercando di capire se, o meglio fino a che punto, xattr sono supportati in FreeBSD usando ZFS. Ho letto alcune informazioni contrastanti.

  1. zfs get xattr lo elenca come on (default) per / , /usr e /var , ma come off (temporary) per tutti gli altri set di dati, compresi i figli di quelli sopra menzionati.
  2. Eseguire zfs set xattr=on zroot/usr/home Ricevo il messaggio

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

  3. Questo è d'accordo con zfs pagina man:

    Il xattr la proprietà non è attualmente supportata su FreeBSD.

  4. setextattr , getextattr e lsextattr sembrano funzionare abbastanza bene.
  5. Sono anche riuscito a salvare e ripristinare un nodo file del dispositivo utilizzando rsync --fake-super e potrebbe vedere i suoi dati usando lsextattr e getextattr .
  6. Wikipedia ha alcune discussioni nella pagina di discussione di xattr. Apparentemente c'era una volta un'affermazione secondo cui ZFS supporta xattr da FreeBSD 8, ma è stata rimossa in seguito, con riferimento alla manpage (vedi 3.).

Attualmente ho l'impressione che gli attributi estesi su zfs funzionino in pratica, ma che xattr la proprietà che ne controllerebbe l'uso non funziona come in altre distribuzioni zfs. Ma mi piacerebbe sentirlo confermato (o corretto) prima di affidare grandi quantità di dati di backup a un rsync --fake-super in esecuzione su una macchina del genere. Preferirei non perdere tutti i miei metadati a causa di problemi noti di xattr.

Se è importante, questo è un molto nuova installazione di FreeBSD 10.2 che ho appena impostato, con ZFS impostato dall'installer.

Risposta accettata:

Come hai scoperto, xattrs funzionerà, ma ci sono degli spigoli.

A volte devi avvicinarti al codice open source come un antropologo. Se questo non è di per sé utile, forse questo provocherà dei contributi migliori (o eventualmente correzioni del codice!)

Ho trovato questo nel codice sorgente:

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

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

eppure questo ti dà una pausa:https://github.com/freebsd/freebsd/blob/e95b1e137c604a612291fd223fce89c2095cddf2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c#L1638

Relazionato:Impossibile scrivere su file su FreeBSD — filesystem di sola lettura?

Quindi quello che penso stia effettivamente accadendo è che xattr funziona ma la funzionalità per disattivarli (o attivarli) dalle proprietà del set di dati ZFS è interrotta, quindi il messaggio "non supportato" significa "sei da solo".

C'è del codice che imposta MNTOPT_XATTR ma non l'ho rintracciato. provare a cambiarlo usando zfs set ti ottiene il messaggio non supportato. La mia ipotesi è che spieghi la stranezza della proprietà zfs xattr con /, /usr, /var e l'impostazione/comportamento in conflitto di /home.

Questo fa luce sulle cose. https://www.lesbonscomptes.com/pages/extattrs.html


FreeBSD
  1. Guida all'installazione di FreeBSD 11.1

  2. Freebsd – Aggiungi Freebsd al menu di avvio di Grub2?

  3. Errore Wi-Fi Wpa_supplicant?

  4. Errore Zfs Grub-probe Impossibile ottenere il percorso canonico di /dev/disk_name?

  5. Qual è lo stato attuale del supporto dei driver video di Linux?

Come installare Cinnamon in FreeBSD 13

Come installare XFCE in FreeBSD 13

Come installare mediawiki su FreeBSD

Come installare HAProxy su FreeBSD

Come installare Webmin su FreeBSD

10 cose da fare dopo una nuova installazione di FreeBSD