Saya mencoba mencari tahu apakah, atau lebih tepatnya sejauh mana, xattrs didukung di FreeBSD menggunakan ZFS. Saya telah membaca beberapa informasi yang bertentangan.
zfs get xattr
mencantumkannya sebagaion (default)
untuk/
,/usr
dan/var
, tetapi sebagaioff (temporary)
untuk semua set data lainnya, termasuk turunan dari yang disebutkan di atas.- Menjalankan
zfs set xattr=on zroot/usr/home
Saya mendapatkan pesannyaproperty 'xattr' not supported on FreeBSD: permission denied
. - Ini sesuai dengan
zfs
halaman manual:xattr
properti saat ini tidak didukung di FreeBSD. setextattr
,getextattr
danlsextattr
tampaknya bekerja cukup baik.- Saya juga berhasil menyimpan dan memulihkan node file perangkat menggunakan
rsync --fake-super
, dan dapat melihat datanya menggunakanlsextattr
dangetextattr
. - Wikipedia memiliki beberapa diskusi di halaman pembicaraan xattr. Rupanya pernah ada klaim bahwa ZFS mendukung xattr sejak FreeBSD 8, tetapi klaim itu kemudian dihapus, dengan mengacu pada halaman manual (lihat 3.).
Saat ini saya mendapat kesan bahwa atribut yang diperluas pada zfs berfungsi dalam praktik, tetapi xattr
properti yang akan mengontrol penggunaannya tidak berfungsi seperti pada distribusi zfs lainnya. Tapi saya ingin mendengar itu dikonfirmasi (atau dikoreksi) sebelum saya memercayai sejumlah besar data cadangan ke rsync --fake-super
berjalan pada mesin seperti itu. Saya lebih suka tidak kehilangan semua metadata saya karena masalah xattr yang diketahui.
Jika itu penting, ini adalah sangat baru menginstal FreeBSD 10.2 Saya baru saja mengatur, dengan ZFS diatur oleh penginstal.
Jawaban yang Diterima:
Seperti yang Anda temukan, xattrs akan berfungsi, tetapi ada bagian yang kasar.
Terkadang Anda harus mendekati kode sumber terbuka seperti seorang Antropolog. Jika ini tidak membantu dengan sendirinya, mungkin ini akan memicu beberapa 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/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);
dan ini https://github.com/freebsd/freebsd/blob/386ddae58459341ec5676044707805814a2128a57/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c#L302
namun ini memberi Anda jeda:https://github.com/freebsd/freebsd/blob/e95b1e137c604a612291fd223fce89c2095cddf2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c#L1638
Terkait:Tidak dapat menulis ke file di FreeBSD — sistem file read-only?Jadi menurut saya yang sebenarnya terjadi adalah xattrs berfungsi tetapi fungsi untuk menonaktifkannya (atau mengaktifkannya) oleh properti kumpulan data ZFS rusak, jadi pesan "tidak didukung" berarti "Anda sendirian".
Ada beberapa kode di sana yang menetapkan MNTOPT_XATTR tetapi saya belum melacaknya. mencoba mengubahnya menggunakan zfs set memberi Anda pesan yang tidak didukung. Dugaan saya adalah itu 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