ZFS 2.3 yayımlandı, RAIDZ genişletme özelliğiyle geliyor
(github.com/openzfs)- OpenZFS 2.3.0, mevcut bir RAIDZ havuzuna yeni cihazlar ekleyerek kesinti olmadan kapasiteyi artıran RAIDZ Expansion özelliğini temel yenilik olarak içeriyor
- Fast Dedup, mevcut tekilleştirme özelliğinin performansını önemli ölçüde iyileştiriyor; kod tabanının genelinde performans iyileştirmeleri de yer alıyor
- Direct IO, okuma/yazma işlemlerinde ARC’nin atlanabilmesini sağlayarak, NVMe cihazlar gibi önbelleklemenin verimliliği düşürebileceği ortamları hedefliyor
- Sık kullanılan komutlar için isteğe bağlı JSON çıktısı, en fazla 1023 karakterlik dosya ve dizin adı desteği ve önceki sürümlerdeki sorunları ele alan önemli hata düzeltmeleri eklendi
- Destek kapsamı Linux çekirdeği 4.18~6.12 ile FreeBSD 13.3 ve 14.0~14.2; bu sürüm döngüsüne 134 kişi katkıda bulundu
OpenZFS 2.3.0’da değişenler
- OpenZFS 2.3.0; depolama genişletme, tekilleştirme performansı, giriş/çıkış yolu, komut çıktı biçimi ve dosya adı uzunluğu desteği odağında güncellendi
- Sürüm etiketi zfs-2.3.0 ve OpenZFS 2.2.0’dan sonraki değişiklikleri içeriyor
Depolama genişletme ve performans iyileştirmeleri
- RAIDZ Expansion, mevcut bir RAIDZ havuzuna yeni cihazlar ekleyerek kesinti olmadan depolama kapasitesinin artırılmasını sağlıyor
- Fast Dedup, mevcut OpenZFS tekilleştirme özelliği için önemli bir performans yükseltmesi
- Direct IO, okuma/yazmada ARC’nin atlanmasına izin veriyor
- NVMe cihazlar gibi önbelleklemenin verimliliği engelleyebileceği durumlarda performans iyileştirmeyi hedefliyor
- Kod tabanının genelinde de çeşitli performans iyileştirmeleri bulunuyor
Komut çıktısı ve ad uzunluğu
- JSON, en çok kullanılan komutlara isteğe bağlı JSON çıktısı ekliyor
- Long names, dosya ve dizin adları için en fazla 1023 karakter desteği sağlıyor
Kararlılık, platformlar ve katkılar
- Önceki sürümlerde bildirilen sorunları ele alan önemli hata düzeltmeleri içeriyor
- Desteklenen platformlar:
- Linux çekirdeği 4.18~6.12
- FreeBSD 13.3, 14.0~14.2
- Bu sürüm döngüsüne 134 katkıcı katıldı
Belgeler ve değişiklik günlüğü
- OpenZFS documentation üzerinden Linux ve FreeBSD belgelerine erişilebilir
- Complete v2.2.0 - v2.3.0 change log, OpenZFS 2.2.0’dan 2.3.0’a kadar tüm değişiklik günlüğünü sunuyor
Modül seçeneği değişiklikleri
- Tüm seçenekler ve kontrol ettikleri alanlar module parameters belgesinde özetleniyor
- Yeni modül seçenekleri RAIDZ genişletme, tekilleştirme günlüğü, Direct IO, allocator, scrub ve resilver ile ilgili öğeleri içeriyor
- Örnek:
raidz_expand_max_copy_bytes,raidz_expand_max_reflow_bytes,zfs_dio_enabled,zfs_dedup_log_mem_max,zfs_scrub_after_expand
- Örnek:
- Kaldırılan modül seçeneği:
zfetch_array_rd_sz
- Değiştirilen modül seçenekleri:
zfs_arc_shrinker_limitzfs_bclone_enabledzfs_vdev_disk_classiczio_taskq_write
1 yorum
Hacker News yorumları
Yıllardır hazırlanan ZFS RAIDZ genişletme sonunda dahil edildi
Başlıca özellikler; mevcut bir RAIDZ havuzuna aygıt ekleyerek kesinti olmadan kapasiteyi artıran RAIDZ genişletme, OpenZFS tekilleştirme performansını büyük ölçüde artıran hızlı tekilleştirme, ARC’yi atlayarak NVMe gibi önbelleğin verimsiz olabileceği ortamlarda performansı iyileştiren doğrudan G/Ç, sık kullanılan komutlar için isteğe bağlı JSON çıktısı ve dosya/dizin adlarında en fazla 1023 karakter desteği
Bu özelliğin hangi kullanım senaryolarına uygun olduğunu bilmek isterim
ZFS ekibinin şifrelemeyi gerçekten birinci sınıf öncelik olarak ele alıp almadığı da şüpheli
Linux’taki ZFS, Solaris’teki ZFS’in itibarının büyük kısmını devraldı; ancak üretim ortamında kullananların gerçeği görmek için issue tracker’a epey ayrıntılı bakması gerekiyor
Kullanıcı sayısı bakımından açık ara en büyük PC platformu olan Windows tarafında hâlâ ZFS’e bir yanıt olmamasını anlayamıyorum
Microsoft’un WinFS’i vardı, ardından ReFS de vardı ama geri plana itildiler; geliştirme sürüyor ve Win11’e ara sıra bazı parçalar girse de resmî bir sürüm görünmüyor
Bazı bireyler ZFS uyumluluk katmanı oluşturmak gibi büyük bir işi deniyor, ancak henüz olgun ya da gerçek kullanım için uygun seviyeden uzak
Windows’un hâlâ nasıl 32 yıllık bir dosya sistemi kullandığını bilmiyorum
ZFS’in Linux ile lisans sorunu var ve bu tam entegrasyonu engelliyor; Btrfs ise 15 yıldır geliştiriliyor olmasına rağmen özellik ve kararlılık açısından hâlâ ZFS’in gerisinde
Çoğu Linux dağıtımı hâlâ varsayılan olarak 19 yıllık ext4 kullanıyor; ext4 de aslında NTFS ile aynı yaşta olan ext2’nin üzerine genişletmeler eklenmiş bir şeye daha yakın
Adil olmak gerekirse, dosya sistemi kadar kritik işletim sistemi bileşeni azdır ve üretim ortamında 10 yıldan uzun süre doğrulanmamış bir dosya sistemine dokunmak istemeyen çok kişi var
Snapshot, blok düzeyinde tekilleştirme, nesne depolama teknolojisi, RAID/dayanıklılık, yeniden boyutlandırma gibi gerekli özellikleri depolama cihazları sağlıyor
Modern depolama appliance’ları neredeyse kara büyü seviyesinde; bu yüzden NTFS’in mutlaka daha fazla özelliğe ihtiyacı yok
NAS/SAN üzerinden şeffaf biçimde erişebilir ya da yetenekli bir disk kutusu üzerinde NTFS birimi depolayabilirsiniz
Linux dünyasının üst seviye alanlarında Lustre ve GPFS var; ZFS ise çoğunlukla performansın ana konu olmadığı ama dayanıklılığın gerektiği kullanımlara uygun
Zor ve riski yüksek; karşılığı ise çoğunlukla teknik saygıdan ibaret diye düşünüyorum
Ciddi değiller ama şimdilik şifrelemeden kaçınmak iyi olur; kalan sorunları düzeltmek için birkaç haftada bir yeni sürüm adayı çıkacak kadar geliştirme hızı yüksek
Buna Storage Spaces’ı ekleyip farklı türde veya boyutta diskleri havuzlayarak konumu, yedekliliği ve katmanlamayı Space bazında tanımlarsanız Windows artık gelişmiş bir depolama platformu hâline geliyor
Windows Server, örneğin uygun fiyatlı 2022/2025 Essentials kullanırsanız LAN ve sanal sabit disk .vhdx üzerinde 10 Gbyte/s’ye kadar performans sağlayan SMB Direct/RDMA da kullanabilirsiniz; bu da iSCSI’ye göre ayarsız ve hızlı bir alternatif olur
Bu yüzden ZFS web GUI’si napp-it cs’yi Solaris’ten Windows’a port ederek Storage Spaces ve ZFS’i, ayrıca Proxmox gibi uzak OpenZFS sunucularını yönetebilir hâle getirdim; ticari olmayan kullanım ücretsiz
Genişletme özelliğinin oldukça muhafazakâr tasarlanmış olması hoşuma gidiyor
Genişletme tamamen şeffaf ve sürdürülebilir/yeniden başlatılabilir olmakla kalmıyor, süreç boyunca yedeklilik de korunuyor
Yalnız insanların bilmesi gereken küçük bir not var
Genişletme bittikten sonra bile mevcut bloklar eski veri/parite oranını koruyor. Örneğin 5-wide RAIDZ2, 3 veri + 2 parite olarak daha büyük disk kümesine dağıtılıyor
Yeni bloklar ise yeni veri/parite oranıyla yazılıyor. Örneğin 5-wide RAIDZ2 bir kez genişletilip 6-wide olursa 4 veri + 2 parite oluyor
Yine de RAIDZ N’in avantajı aynen sürüyor; en fazla N disk tamamen arızalansa bile pool çalışmaya devam ediyor
Örneğin yapılandırma değişiklikleri de yalnızca yeni verilere uygulanır
Da1 Db1 Dc1 Pa1 Pb1Da2 Db2 Dc2 Pa2 Pb2Da3 Db3 Dc3 Pa3 Pb3___ ___ ___ Pa4 Pb4Burada
___boş alan. Bir disk ekleyip genişlettiğinizde mantıksal olarak şunu bekleyebilirsinizDa1 Db1 Dc1 Da2 Pa1 Pb1Db2 Dc2 Da3 Db3 Pa2 Pb2Dc3 ___ ___ ___ Pa3 Pb3___ ___ ___ ___ Pa4 Pb4Ama anladığım kadarıyla gerçekte şöyle genişliyor
Da1 Db1 Dc1 Dd1 Pa1 Pb1Da2 Db2 Dc2 Dd2 Pa2 Pb2Da3 Db3 Dc3 Dd3 Pa3 Pb3___ ___ ___ ___ Pa4 Pb4Burada Dd1~3 blokları düpedüz boşa gidiyor. Yani diziye yeni bir disk ekleseniz bile boş depolama alanı yalnızca %25 artıyor demek
Örneğin 8 TB disklerle başlangıçta toplam 24 TB kullanılabilir alanınız varsa ve genişletmeden önce 4 TB boş alan kalmışsa, genişletmeden sonra boş alan 5 TB oluyor
Umarım yanlış anlamışımdır. Yanlış anlamadıysam epey işe yaramaz bir uygulama gibi görünüyor
ZFS kullanıcıları için büyük haber. Muhtemelen özellikle hobi/ev kullanıcıları için öyledir ama yine de büyük
RAIDZ genişletme yıllardır en çok istenen özelliklerden biriydi
Daha büyük ya da daha küçük disk eklenebiliyor mu, yoksa tüm disk boyutlarının aynı mı olması gerekiyor, bunu bilmek istiyorum
Bu bir çevrimiçi genişletme. Genişletmenin kendisi eskiden de mümkündü ama diziyi kapatmak gerekiyordu
Daha büyük sürücülere geçmek de mümkündü ama tek tek değiştirmek gerekiyordu ve doğal olarak yeni kapasiteyi ancak tüm sürücüler yükseltildikten sonra elde edebiliyordunuz
Bildiğim kadarıyla pool küçültme hâlâ mümkün değil. Bu yüzden 5 sürücülü bir pool’a 6. sürücüyü eklerseniz, veri çok az olsa bile tekrar 5 sürücüye dönemiyorsunuz
Sonunda!
Şu anda satın alınabilen en pahalı ve en yüksek yoğunluklu 4 sabit diskle RAID-Z3 gibi sınırda çılgın bir tek vdev yapılandırması bile mümkün hale geliyor
Başta 3 disk kadar yedeklilik olduğu için etkin alan kullanım oranı yalnızca %25 olur, ama alan ihtiyacı arttıkça tek tek disk satın alıp yaklaşık 12 diske kadar genişletebilirsiniz
Zamanla disk fiyatları düşer ve diskleri farklı zamanlarda eklediğiniz için arıza olasılığı da dağılır
Diziyi genişletmek mevcut verinin daha verimli depolanmasını sağlamıyor
Yeni parite/veri oranını elde etmek için veriyi zorla kopyalayıp eski verimsiz sürümü silmeniz gerekir. Örneğin bunun gibi bir araca ihtiyaç var [1]
Kişisel olarak tek tek tamamlanmış RAID-Z yapılandırmaları satın alıp yeni yapılandırma eklemenin ya da eski yapılandırmayı disk disk değiştirmenin çok daha iyi olduğunu düşünüyorum
[1] https://github.com/markusressel/zfs-inplace-rebalancing
ZFS’nin btrfs ile karşılaştırıldığında nasıl olduğunu merak ediyorum
Şu anda ev sunucumda btrfs kullanıyorum ama birkaç kez garip sorunlar yaşadım
ZFS’ye geçmeyi düşünüyorum, ama aynı duruma düşmek istemiyorum
3 gün içinde silemediğim bir dosya oluştu, ben de kullanmayı bıraktım ve sonra ZFS’yi buldum
ZFS’de de daha az ciddi birkaç sorun vardı, ama o zamanlar bilgisayar bilimi öğrencisiydim ve btrfs’de yaşadığım sorunla karşılaştırınca önemsiz göründükleri için düzeltebileceğimi düşündüm
Sonraki 18 ay boyunca canımı sıkan tüm sorunları çözdüm ve o zamanki ZFSOnLinux deposuna yamalar gönderdim; bu çaba ZFS’nin Linux’ta üretim ortamında kullanılabilir hale gelmesine yardımcı oldu
O zamandan beri ZFS kullanıyorum ve iyi çalışıyor
btrfs’nin durumu daha iyi olsaydı btrfs katkıcısı olurdum. Ama o dönemde durumu kötü olmakla kalmıyordu; sonrasında da ciddi kullanım için her denediğimde, hâlâ yer olmasına rağmen sık sık ENOSPC almak gibi sorunlar yakamı bırakmadı
Buna karşılık ZFS sadece çalışıyor. Ben ve birçok kişi düzgün çalışması için çok emek verdik
En büyük fark, ZFS’nin çok sağlam bir temele sahip olmasıydı; bu da mükemmel regresyon testi altyapısı sayesindeydi
Kullanıcı alanı sürümü kodu rastgele çalıştırarak üretim ortamında patlamadan önce hataları buluyor ve önerilen her değişiklik için test paketleri koşturup hataları yakalıyor
ZFS’de önerilen değişiklikleri inceleyen kişi sayısı da diğer dosya sistemlerine göre daha fazla. Btrfs geliştiricileri de iki dosya sistemi arasında insan gücü farkının büyük olduğunu sıkça söyler; yanlış hatırlamıyorsam yaklaşık 6 kat demişlerdi
Her hâlükârda ZFS kullanıp pişman olan azdır; muhtemelen hoşuna gider
BTRFS belgelerine göre BTRFS hâlâ tamamen üretim ortamına uygun değil: https://btrfs.readthedocs.io/en/latest/btrfs-man5.html#raid5...
Basit kullanım senaryolarının bir kısmı için BTRFS üretim ortamına yeterince uygun sayılabilir, ama sonuç ortamdan ortama değişir
DKMS gerektirmediği için kök bölümünde kullanmıştım, ama sorunları çoktu
Oldukça basit şekilde yalnızca mirror olarak kullandım; bir gün dizideki disklerden biri sorun çıkarınca btrfs düzgün dayanamadı
Hatırladığım kadarıyla her şeyi salt okunur olarak yeniden bağladı ve varsayılan ayarlarla degraded modda çalışmadı
Checksum gibi özellikleri olmayan mdraid bile bundan daha iyi olurdu
ZFS de benzer şekilde diziyi arızalı olarak işaretler ama doğal olarak kullanmaya devam etmenize izin verir
Varsayılan davranışının RAID olmaması, yani veriyi yeniden okuma anlamındaki R kısmının fiilen eksik olması yüzünden güvenimi kaybettim
ZFS’ye geçtikten sonra sorun yaşamadım; ayrıca topluluğu ve iyi araçları da çok daha fazla
Btrfs’de de bir iki garip olay yaşadım ama sonunda hepsinden kurtarabildim
Genel olarak Btrfs’nin esnekliği iyiydi, ancak çoğu durumda fazla yavaş hissettirdi
Şimdi Arch Linux’ta ZFS kullanıyorum ve şimdiye kadar genel olarak sorunsuz
Performansı optimize etmek için daha fazla özelleştirme ve yöntem de var
Tek tavsiyem, ZFS’yi yeterince araştırıp test etmeniz olur. Biraz öğrenme eğrisi var, ama benim için geçmeye değdi
NVMe performansı için ARC bypass gelmesi sevindirici
ZFS, NVMe’nin potansiyelinden tam olarak yararlanamama eğiliminde
Çevrimiçi genişletme de ilginç olabilir
Çok yoğun bir veritabanında ZFS kullanmayı denemiştim ve parçalanma hatası yüzünden fena darbe aldım
Performansı geri getirmenin tek yolu, verileri volume dışına kopyalayıp volume’ü silmek ve sonra geri kopyalamak gibi görünüyordu
Artık belki zpool’u genişlettikten sonra aynı volume içinde tablespace’i kopyalayarak parçalanmayı azaltmak mümkün olabilir
TrueNAS’in bu özelliği zaten destekliyor olması da dikkat çekici[0]
Görünüşe göre muhtemelen 2.3.0rc3 kullanıyor; kararlılığından emin değilim ama çok heyecan verici
https://www.truenas.com/blog/electric-eel-openzfs-23/
Ev kullanımı için neden ZFS gibi bir şey kullanıldığını açıklayabilir misin?
Sağlama toplamı: Ev kullanımında donanım kalitesi genelde düşük olduğundan bu aslında daha da önemli. Arızalı denetleyiciler, kötü kablolar, önerilenden yüksek sıcaklıklarda saklanan sabit diskler gibi hatalı verinin yazılmasına yol açabilecek çok neden var; ZFS, yedeklilik varsa bunu otomatik olarak iyi şekilde hallediyor
Anlık görüntüler: Yedek oluşturmak ve hata yaptığında dosyanın eski bir sürümüne hızla dönmek için çok kullanışlı
İç rahatlığı: Alternatiflerle karşılaştırınca ZFS'nin kullanımı kolay ve veri kaybına yol açacak hatalar yapmanın zor olduğunu hissediyorum. Örneğin bozuk bir diski değiştirirken yanlışlıkla başka bir diski çıkarıp havuzu kullanılamaz hâle getirsen bile, geri taktığında hiçbir şey olmamış gibi geri dönüyor
Şimdilerde mdadm de farklı olabilir ama birkaç yıl önce kullandığımda yıkıcı bir hata yapacağım diye hep tedirgindim
recordsize=1Mvecompression=zstdayarlarsan çoğu durumda aynı alana yaklaşık %33 daha fazla oyun sığdırabiliyorsunBir arkadaşım birkaç sabit diskte Steam oyunlarını depolamak için ZFS kullanıyor. Ayrıca ZFS'ye L2ARC olarak bir SSD vermiş
ZFS, sık çalıştırdığı oyunları otomatik olarak SSD'de önbelleğe alıp hızlı yüklenmelerini sağlıyor
Sevdiğin oyunlar değiştiğinde ZFS otomatik olarak uyum sağlayıp bu oyunları SSD'de önbelleğe alıyor
WD_BLACK SN850 aniden öldüğünde [1] bir kez büyük yardımı dokundu
Klasik bir git hatasıyla uçurduğum kodu da geri getirdi
Kullanıcı hatası veya tek bir cihaz arızası yüzünden veri kaybetmek artık mümkün olmamalı. Bunun için teknolojiye sahibiz
[1]: https://chromakode.com/post/zfs-recovery-with-zrepl/
Sağlama toplamı ve kendi kendini iyileştirme var; Linux, FreeBSD, Windows ve macOS'te okunup yazılabilen başka modern bir dosya sistemi yok
Anlık görüntüleri, yani önyükleme ortamlarını Btrfs de destekliyor. Benim Linux kurulumum, kök dosya sistemini okumak için üçüncü taraf çekirdek modülleriyle uğraşmamak adına onu kullanıyor
Performansı da harika değil; Linux açısından performans ana öncelikse XFS daha iyi bir seçenek
Ondan önce MDADM + LVM + dm-crypt + ext4 kullanıyordum; o da çalışıyordu ama katman sayısı çok fazla olduğundan baş ağrıtıyordu
Otomatik anlık görüntüler çok kolay ve hızlı
Bir dosyayı sildiğinde erişmesi de kolay; tüm anlık görüntüyü geri yüklemeye gerek kalmadan gizli
.zfs/klasöründen sadececpyapmak yeterliYıllardır 6 adet 8TB diskle çalıştırıyorum. RAIDZ2 olduğu için en fazla 2 diskin ölmesi sorun değil
Masaüstündeki tek bir diskte kullanır mıyım diye sorarsan, muhtemelen kullanmam