FreeBSD'de ZFS xattr desteğinin durumu


15

Ben xattrs ZFS kullanarak FreeBSD'de desteklenip desteklenmediğini veya daha ne ölçüde uzatmaya çalışacağım. Bazı çelişkili bilgileri okudum.

  1. zfs get xattrolarak listeler bunu on (default)için /, /usrve /var, ancak off (temporary)yukarıda belirtilen olanların çocuklar dahil tüm diğer veri setleri için.
  2. Koşu zfs set xattr=on zroot/usr/homemesajı alıyorum

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

  3. Bu , zfsman sayfasını kabul eder :

    xattrMülkiyet şu anda FreeBSD üzerinde desteklenmez.

  4. setextattr, getextattrVe lsextattryeterince iyi çalışmıyor gibi görünüyor.
  5. Ayrıca kaydetmek ve kullanma düğüm bir aygıt dosyayı geri başardı rsync --fake-superve kullanarak verileri görebilir lsextattrve getextattr.
  6. Wikipedia'nın xattr tartışma sayfasında tartışması var . Görünüşe göre bir zamanlar ZFS'nin FreeBSD 8'den beri xattr'i desteklediği, ancak daha sonra, manpage referans alınarak kaldırıldığı iddiası vardı (bakınız 3.).

Şu anda zfs üzerindeki genişletilmiş özelliklerin pratikte çalıştığı izlenimini edindim, ancak xattrkullanımlarını kontrol edecek özellik diğer zfs dağıtımlarında olduğu gibi çalışmaz. Ama rsync --fake-superböyle bir makinede çalışan büyük miktarda yedek veriye güvenmeden önce bunun onaylandığını (veya düzeltildiğini) duymak isterim . Bilinen xattr sorunları nedeniyle tüm meta verilerimi kaybetmemeyi tercih ederim.

Bu konularda, bu bir olduğunu çok ZFS yükleyicisi tarafından kurulmuş olan ben sadece, kurma taze FreeBSD 10.2.


1
Bunu FreeBSD forumuna çapraz olarak gönderdim . Bunun ya da ödülün ya da her ikisinin de bu konuda yetkili bir cevap almasına yardımcı olacağını umalım.
Mart'ta MvG

1
Bunu freebsd-fs posta listesine de gönderdim . Ödülün bir cevap olmadan sona ermesi için bir utanç olurdu.
MvG

Posta listesi bağlantısı öldü.
Mateusz Piotrowski

1
@Mateusz: Görünüşe göre başka birinin tekrar devam etmesi için müzakereler olmasına rağmen , gmane yaratıcısı bu hizmeti durdurdu . İşte FreeBSD arşivindeki yazı veya mesaj kimliğimi aramak için burada .
MvG

Yanıtlar:


5

Bulduğunuz gibi, xattr'ler işe yarayacak, ancak pürüzlü kenarlar var.

Bazen bir antropolog gibi açık kaynak koduna yaklaşmanız gerekir. Bu kendi başına yardımcı olmazsa, belki de bu bazı daha iyi katkıları (veya sonunda kod düzeltmelerini!)

Bunu kaynak kodunda buldum:

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

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

ve yine de bu size duraklama veriyor: https://github.com/freebsd/freebsd/blob/e95b1e137c604a612291fd223fce89c2095cddf2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c#L1638

Yani gerçekten olduğunu düşünüyorum ne olduğunu xattrs çalışır ama ZFS veri kümesi özellikleri tarafından kapatmak (veya açmak) işlevselliği bozuldu, bu nedenle "desteklenmiyor" mesajı "kendi başınıza" anlamına gelir.

Orada MNTOPT_XATTR ayarlar bazı kod var ama ben bunu izlemedi. bunu zfs set kullanarak değiştirmeye çalışmak size desteklenmeyen mesajı getirir. Benim tahminim, /, / usr, / var ile zfs xattr özelliği tuhaflığını ve / home öğesinin çakışan ayarını / davranışını açıklıyor.

Bu bazı şeylere ışık tutuyor. https://www.lesbonscomptes.com/pages/extattrs.html

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.