Aralık ayında, OpenZFS geliştiricileri, 20 yıldan fazla bir süre önce Solaris için geliştirilen, Sun Microsystems'in ZFS'sinden türetilen kendi kendini onaran dosya sisteminin 2.4.0 sürümünü yayınladı. Linux çekirdekleri 4.18 ila 6.18'in yanı sıra FreeBSD 14, mevcut üretim sürümü 15 ve yaklaşık iki yıl içinde gelecek olan sürüm 16 (“-current”) açıkça desteklenmektedir.
Duyurudan sonra devamını okuyun
Ameer Hamza tarafından hazırlanan bir yama, OpenZFS'deki kullanıcılar, gruplar ve projeler için nesne kotaları da dahil olmak üzere standart kotalar getirerek, hiçbir bireysel sınır belirlenmediğinde bile tutarlı bir sınır sağlar. Bunu yapmak için, FreeBSD ve Linux'taki çekirdek ve kullanıcı alanı (zfs {kullanıcı|grup|proje}alanı) araçları, bireysel kotalar yapılandırılmamışsa standart kotalar görüntülenecek şekilde uyarlanır.
Alexander Motin tarafından yapılan bir değişiklik, ZIL tahsisini genişletir, böylece SLOG eksikse, HDD'lerde daha yüksek gecikmelere sahip mantıksız tahsisleri önlemek amacıyla ZIL blokları için özel vdev'ler (tipik olarak SSD'ler) de kullanılır. Bu, hızlı özel vdev'e sahip HDD havuzlarının senkronize iş yüklerine daha iyi hizmet vermesini sağlar. Bu, ek SLOG olmadan yapılabilir ve SSD'lerin aşınmasının belirli sınırlar dahilinde en aza indirilmesine olanak tanır.
Joel Low, geçen yılın Şubat ayında Google'ın BoringSSL'sinden OpenZFS'ye kod taşıdı ve bunun %80'e kadar daha hızlı şifreleme sağladığı söyleniyor. Bunu yapmak için Google geliştiricileri, AMD Zen3 CPU'larda AVX512/AVX10 yerine hızlı AVX2'nin kullanıldığı Vector AES (Galois/Counter Mode) için optimize edilmiş bir AES-GCM uygulaması kullandı.
Üç yeni komut
OpenZFS 2.4.0 kullanan herkesin üç yeni komuta alışması gerekir: “zfs rewrite -P”, blokları yeniden yazarken doğum zamanını korumaya çalışır, böylece gerçek veriler değişmediğinden zamandan ve kaynaklardan tasarruf sağlar. “zpool scrub -S -E” ile temizleme işlemi belirli zaman aralıklarıyla (işlem gruplarına/TXG'lere dayalı olarak) sınırlandırılabilir – taahhütte [https://github.com/openzfs/zfs/pull/16853] Ancak bazı sorunlar yaşandığı belirtiliyor. Son olarak, “zpool prefetch -t brt” ile blok klonlamayı ve blok serbest bırakmayı hızlandırmak için BRT (Blok Referans Tablosu) meta verilerinin önceden ARC'ye (Uyarlanabilir Değiştirme Önbelleği) okunması gerekir (bu konuda daha sonra daha fazla bilgi verilecektir).
Taahhütlerin çoğunluğu Rob Norris (229 taahhüt) ve Alexander Motin'den (119 taahhüt) geliyor; ikisi de FreeBSD, ZFS ve ARM konusunda uzmanlaşmış bir şirket olan Klara için çalışıyor. Sekiz geliştiricinin çift haneli aralıkta taahhütleri var, çoğu tam olarak bir taahhütle sınırlı.
Duyurudan sonra devamını okuyun
Önbellek olmadan daha hızlı yazın ve “çete blokları” ile sorun yaşayın
Yukarıdaki yenilikler bireysel taahhütlerden oluşurken, yeni OpenZFS 2.4.0'ın dört alanı bir dizi birleştirilmiş ayrıntılı iyileştirmelerden oluşur: Önbelleğe Alınmamış G/Ç, Grup Blokları, Tekilleştirme ve Blok Klonlama. Alexander Motin, performans açısından hızlı doğrudan G/Ç (sayfa hizalama gibi kısıtlamalarla) ile normal önbelleğe alınmış G/Ç arasında yer alan önbelleksiz G/Ç'yi optimize etmek üzerinde çalışıyor. Belirli senaryolarda doğrudan G/Ç mümkün değilse, daha önce olduğu gibi daha da yavaş olan önbelleğe alınmış G/Ç yerine önbelleğe alınmamış G/Ç'ye geri dönüş yapılmalıdır.
“Çete Blokları”nın kullanımını iyileştirmek için çeşitli düzeltmeler amaçlanıyor. Çoklu bloklar, büyük bir veri bloğu veya meta veri bloğunun bitişik boş alanı dolduğunda tetiklenen bir tür ZFS acil durum mekanizmasıdır. Bu durumda, ZFS, bloğu birkaç küçük fiziksel bloğa böler ve ayrıca bloğun mantıksal olarak bir birim olarak ele alınabilmesi için bu alt bloklara işaret eden en az iki yedek Grup Blok başlığını da saklar. İyileştirmelerden biri, çoklu blok başlıklarının boyutunun sabit 512 bayttan herhangi bir dinamik boyuta değiştirilmesidir.
Şirketlerin ve hükümetlerin dev veri toplama çılgınlığı, OpenZFS veri tekilleştirmesinde optimizasyonları özellikle gerekli kılmaktadır. Yalnızca sekiz işlem OpenZFS 2.4.0'ın depolama alanından tasarruf etmesine yardımcı olacaktır.
Çocuk bloğu klonlama sorunu çözüldü mü, çözülmedi mi?
Alexander Motin'in açıkladığı gibi, blok klonlamanın orijinal uygulamasında “BRT ZAP girişlerini” etkileyen yapısal bir hata yapıldı, ancak bu artık düzeltildi. Blok klonlama, verileri çoğaltmak yerine yalnızca mevcut bloklara referanslar oluşturarak dosyaları veya bunların parçalarını kopyalamanıza olanak tanır. Bu, verilerin yeniden yazılması gerekmediği için yerden ve zamandan tasarruf sağlar.
Blok Referans Tablosu (BRT), OpenZFS'de (sürüm 2.2'de sunulan) blok klonlamayı veya “yeniden bağlamayı” destekleyen yeni bir meta veri nesnesidir. OpenZFS, BRT girişlerini bir ZAP nesnesinde saklar. ZAP (ZFS Öznitelik İşlemcisi), dizinler, özellikler veya referans tabloları gibi anahtar/değer verileri için esnek bir disk üstü yapıdır. Ek düzeltmelerin amacı OpenZFS blok klonlamayı daha kararlı ve hataya daha az açık hale getirmektir. Blokların yanlış klonlanması zaten OpenZFS 2.2.0'da veri kaybına neden olmuştur.
Bazı NVMe donanımları OpenZFS ile uyumlu değil mi?
Blok klonlamanın neden olduğu sorunlara ek olarak OpenZFS, NVMe havuzları konusunda da anlaşmazlığa düşmüş gibi görünüyor. OpenZFS gönderileri veya forumlarındaki yorumların yanı sıra, örneğin Github'da da uzun tartışmalar var. Bu konuların neredeyse tamamı, özellikle NVMe sürücüleri ile ilgili sorunları vurgulamaktadır; SATA ve SAS HDD/SSD'ler daha az etkilenmiş gibi görünmektedir. Hatanın OpenZFS'den mi yoksa donanımsal bir sorundan mı kaynaklandığı her zaman belli olmuyor ve bazen hararetli tartışmalara yol açıyor.
Diğer bir olasılık ise bazı NVMe donanımlarının yüksek yük altında OpenZFS tarafından aşırı yüklenmesidir. Bu donanım diğer dosya sistemleriyle veya hatta daha eski ZFS varyantlarıyla çalışıyorsa ve mevcut OpenZFS diğer sistemlerin hemen hemen her yerinde çalışıyorsa, sorun bu kombinasyonda mı oluyor? Belki kullanılan NVMe denetleyici donanımına ve donanım yazılımına daha yakından bakmak da mantıklı olabilir? Özellikle tüketici donanımı genellikle spesifikasyonun sınırına yakın bir yerde üretilir ve bu nedenle en zorlu OpenZFS koşulları altında hatalara açık olabilir. Özellikle güçlü OpenZFS kurulumları NVMe donanımına güvenmeyi tercih ettiğinden, sorunun dikkatle analiz edilmesi gerekiyor.
OpenZFS, GNU/Linux, FreeBSD, NetBSD, macOS, OpenSolaris, Illumos ve OpenIndiana için mevcuttur. OpenZFS 2.4.0 kaynak kodu, tüm yeni özelliklerin ve değişikliklerin ayrıntılı bir listesiyle birlikte Githuv'da mevcuttur.
(yardımcı)

Bir yanıt yazın