Status dukungan xattr ZFS di FreeBSD

15

Saya mencoba mencari tahu apakah xattrs didukung oleh FreeBSD atau tidak menggunakan ZFS. Saya telah membaca beberapa informasi yang saling bertentangan.

  1. zfs get xattrdaftar itu on (default)untuk /, /usrdan /var, tetapi off (temporary)untuk semua dataset lain, termasuk anak-anak dari yang disebutkan di atas.
  2. Berjalan, zfs set xattr=on zroot/usr/homesaya menerima pesan

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

  3. Hal ini sesuai dengan yang zfshalaman manual :

    The xattrproperti saat ini tidak didukung pada FreeBSD.

  4. setextattr, getextattrdan lsextattrsepertinya bekerja cukup baik.
  5. Saya juga berhasil menyimpan dan mengembalikan node file perangkat menggunakan rsync --fake-super, dan bisa melihat datanya menggunakan lsextattrdan getextattr.
  6. Wikipedia memiliki beberapa diskusi di halaman pembicaraan xattr . Rupanya pernah ada klaim bahwa ZFS mendukung xattr sejak FreeBSD 8, tetapi itu dihapus kemudian, dengan referensi ke halaman manual (lihat 3.).

Saat ini saya mendapatkan kesan bahwa atribut diperluas pada zfs bekerja dalam praktiknya, tetapi xattrproperti yang akan mengontrol penggunaannya tidak berfungsi seperti pada distribusi zfs lainnya. Tapi saya ingin mendengar yang dikonfirmasi (atau diperbaiki) sebelum saya percaya sejumlah besar data cadangan untuk rsync --fake-superberjalan pada mesin seperti itu. Saya lebih suka tidak kehilangan semua metadata saya karena masalah xattr yang diketahui.

Jika itu penting, ini adalah instalasi FreeBSD 10.2 yang sangat segar yang baru saya atur, dengan ZFS yang diatur oleh penginstal.

MvG
sumber
1
Saya mengirim silang ini ke forum FreeBSD . Mari kita berharap bahwa, atau hadiah, atau keduanya, akan membantu mendapatkan jawaban yang otoritatif tentang ini.
MvG
1
Saya juga mengirim silang ini ke milis freebsd-fs . Akan memalukan memiliki hadiah berakhir tanpa jawaban.
MvG
Tautan milis sudah mati.
Mateusz Piotrowski
1
@Mateusz: Pencipta gmane menghentikan layanan itu , meskipun tampaknya ada negosiasi untuk orang lain untuk melanjutkannya lagi. Ini adalah tulisan di arsip FreeBSD, atau di sini untuk mencari id pesan saya .
MvG

Jawaban:

5

Seperti yang Anda temukan, xattrs akan berfungsi, tetapi ada sisi-sisi yang kasar.

Terkadang Anda harus mendekati kode sumber terbuka seperti seorang Antropolog. Jika ini sendiri tidak membantu, mungkin ini akan memicu kontribusi yang lebih baik (atau akhirnya perbaikan kode!)

Saya menemukan ini di kode sumber:

https://github.com/freebsd/freebsd/blob/c829c2411ae5da594814773175c728ea816d9a12/sys/cddl/contrib/opensolaris/uts/common/fs/zfs_zfsops.c#514

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

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

namun hal ini memberi Anda jeda: https://github.com/freebsd/freebsd/blob/e95b1e137c604a612291fd223fce89c2095cddf2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.

Jadi apa yang saya pikir benar-benar terjadi adalah bahwa xattrs berfungsi tetapi fungsi untuk mematikannya (atau menghidupkan) oleh properti dataset ZFS rusak, sehingga pesan "tidak didukung" berarti "Anda sendirian."

Ada beberapa kode di sana yang menetapkan MNTOPT_XATTR tapi saya belum melacaknya. mencoba mengubahnya menggunakan zfs set memberi Anda pesan yang tidak didukung. Dugaan saya adalah yang menjelaskan keanehan properti zfs xattr dengan /, / usr, / var, dan pengaturan / perilaku yang bertentangan dari / home.

Ini menjelaskan beberapa hal. https://www.lesbonscomptes.com/pages/extattrs.html

Jeremy
sumber