Stato del supporto xattr di ZFS in FreeBSD


15

Sto cercando di capire se, o meglio, in che misura, gli xattrs sono supportati in FreeBSD usando ZFS. Ho letto alcune informazioni contrastanti.

  1. zfs get xattrlo elenca come on (default)per /, /usre /var, ma off (temporary)per tutti gli altri set di dati, inclusi i figli di quelli sopra menzionati.
  2. In esecuzione zfs set xattr=on zroot/usr/homericevo il messaggio

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

  3. Ciò concorda con la zfspagina man :

    La xattrproprietà non è attualmente supportata su FreeBSD.

  4. setextattr, getextattrE lsextattrsembra funzionare abbastanza bene.
  5. Sono anche riuscito a salvare e ripristinare un nodo del file del dispositivo utilizzando rsync --fake-supere ho potuto vedere i suoi dati utilizzando lsextattre getextattr.
  6. Wikipedia ha alcune discussioni nella pagina di discussione di xattr . Apparentemente c'era una volta un'affermazione che ZFS supporta xattr da FreeBSD 8, ma che è stato rimosso in seguito, con riferimento alla manpage (vedi 3.).

Attualmente ho l'impressione che gli attributi estesi su zfs funzionino nella pratica, ma che la xattrproprietà che controllerebbe il loro uso non funziona come farebbe con altre distribuzioni di zfs. Ma vorrei sentirlo confermato (o corretto) prima di affidarmi a grandi quantità di dati di backup per l' rsync --fake-superesecuzione su una macchina del genere. Preferirei non perdere tutti i miei metadati a causa di noti problemi di xattr.

Se è importante, questo è un molto fresco FreeBSD 10.2 installo ho appena istituito, con ZFS istituito dal programma di installazione.


1
Ho inviato questo post sul forum di FreeBSD . Speriamo che questo, o la generosità, o entrambi, aiuteranno a ottenere una risposta autorevole su questo.
MvG

1
Ho anche inviato questo post nella mailing list di freebsd-fs . Sarebbe un peccato far scadere la taglia senza una risposta.
MvG

Il link alla mailing list è morto.
Mateusz Piotrowski,

1
@Mateusz: Il creatore di gmane ha interrotto quel servizio , sebbene apparentemente ci siano trattative per qualcun altro per continuare di nuovo. Ecco il post nell'archivio di FreeBSD o qui per cercare il mio ID messaggio .
MvG

Risposte:


5

Come hai scoperto, xattrs funzionerà, ma ci sono bordi irregolari.

A volte devi avvicinarti al codice open source come un antropologo. Se questo non è di per sé utile, forse ciò provocherà alcuni contributi migliori (o eventualmente correzioni di 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

Quindi quello che penso stia realmente accadendo è che xattrs funzioni ma la funzionalità per disattivarli (o accenderli) dalle proprietà del set di dati ZFS è rotta, quindi il messaggio "non supportato" significa "sei da solo".

C'è un po 'di codice che imposta MNTOPT_XATTR ma non l'ho tracciato. provare a cambiarlo usando zfs set ti dà il messaggio non supportato. La mia ipotesi è che spiega la stranezza della proprietà xfs di zfs con /, / usr, / var e l'impostazione / comportamento in conflitto di / home.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.