Linux 0.8.0'da ZFS'nin piyasaya sürülmesi, Linux çekirdeği için ZFS uygulamaları

Yaklaşık iki yıllık geliştirme sürecinin ardından gönderilen serbest Linux 0.8.0'da ZFS, Linux çekirdeği için bir modül olarak paketlenmiş ZFS dosya sisteminin bir uygulaması. Modül, 2.6.32'den 5.1'e kadar olan Linux çekirdekleriyle test edilmiştir. Hazır kurulum paketleri çok yakında hazırlanacak Debian, Ubuntu, Fedora, RHEL/CentOS dahil başlıca Linux dağıtımları için. ZFS on Linux modülü halihazırda Debian, Ubuntu, Gentoo, Sabayon Linux ve ALT Linux dağıtımlarına dahil edilmiştir.

Linux'ta ZFS'nin bir parçası olarak, hem dosya sisteminin çalışması hem de birim yöneticisinin işleyişi ile ilgili ZFS bileşenlerinin bir uygulaması hazırlanmıştır. Özellikle aşağıdaki bileşenler uygulanmaktadır: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) ve ZPL (ZFS POSIX Layer). Ek olarak proje, ZFS'yi Lustre küme dosya sistemi için bir arka uç olarak kullanma yeteneği sağlar. Projenin çalışması, OpenSolaris projesinden içe aktarılan orijinal ZFS koduna dayalıdır ve Illumos topluluğundan iyileştirmeler ve düzeltmelerle geliştirilmiştir. Proje, ABD Enerji Bakanlığı ile bir sözleşme kapsamında Livermore Ulusal Laboratuvarı çalışanlarının katılımıyla geliştiriliyor.

Kod, GPLv2 ve CDDL lisansları altında karıştırma koduna izin verilmediğinden, Linux üzerindeki ZFS'nin Linux çekirdeğinin ana dalına entegre edilmesine izin vermeyen GPLv2 ile uyumlu olmayan ücretsiz bir CDDL lisansı altında dağıtılmaktadır. Bu lisans uyumsuzluğunu aşmak için, tüm ürünün CDDL lisansı altında, çekirdekten ayrı olarak sağlanan, ayrı olarak yüklenebilir bir modül olarak dağıtılmasına karar verildi. ZFS'nin Linux kod tabanındaki kararlılığı, Linux için diğer dosya sistemleriyle karşılaştırılabilir olarak derecelendirilmiştir.

Ana değişiklikler:

  • Dosya sistemi ve bölümler düzeyinde depolanan verilerin şifrelenmesi için yerleşik destek eklendi. Varsayılan şifreleme algoritması aes-256-ccm'dir. Şifreleme anahtarlarını yüklemek için "zfs load-key" komutu önerilmiştir;
  • 'zfs gönder' ve 'zfs al' komutlarını yürütürken şifrelenmiş verileri aktarma yeteneği uygulandı. “-w” seçeneği belirtilirken, havuzda zaten şifrelenmiş olan veriler, ara şifre çözme olmadan olduğu gibi başka bir havuza aktarılır. Bu tür bir kopyalamada, veriler, güvenilmeyen sistemlere yedekleme için bu modun kullanılmasına izin veren gönderenin anahtarı tarafından korunmaya devam eder (alıcının güvenliğinin aşılması durumunda, saldırgan, anahtar olmadan verilere erişemez);
  • Hem ayrı ayrı hem de aynanın parçası olarak bağlanan birincil sürücüleri bir depolama havuzundan çıkarmak için destek eklendi. Kaldırma "zpool remove" komutu ile gerçekleştirilir. Silme işlemi, hariç tutulan sürücüdeki verileri havuzda kalan birincil sürücülere kopyalar;
  • Havuzun mevcut durumunu kaydetmek için "zpool checkpoint" komutu eklendi ve zaman içinde kaydedilen noktaya daha fazla değişiklik geri alma yeteneği eklendi (tüm havuzun bir anlık görüntüsü oluşturulur). Bu özellik, normal koşullar altında geri alınamaz değişikliklere yol açan (örneğin, yeni ZFS işlevselliği için bayrakların etkinleştirilmesi veya verilerin silinmesi) potansiyel olarak tehlikeli karmaşık idari işleri gerçekleştirme sürecinde yararlı olabilir;
  • Artık kullanılmayan sektörler hakkında havuzda kullanılan sürücüleri bilgilendirmek için "zpool trim" komutu eklenmiştir. TRIM işleminin kullanılması, SSD'lerin verimliliğini artırmayı ve performanslarının düşmesini önlemeyi mümkün kılar. TRIM komutlarının iletilmesine yönelik sürekli arka plan sürecini etkinleştirmek için yeni bir "autotrim" özelliği önerilmiştir;
  • İlk erişimde performans düşüşü olmadan (örneğin, VMware VMDK gibi sanallaştırılmış depoları barındırırken) anında kullanıma hazır olmasını sağlayan tüm ayrılmamış disk alanını başlatmak için "zpool başlatma" komutu eklendi;
  • Daha önce mevcut olan kullanıcı ve grup düzeyinde kotalara ek olarak muhasebe ve proje düzeyinde kotalar için destek eklendi. Özünde, projeler, ayrı bir tanımlayıcı (proje kimliği) ile ilişkili ayrı bir nesne alanıdır. Bağlama, 'chattr -p' işlemi veya öznitelik kalıtımı yoluyla tanımlanır. Proje yönetimi için, projelerin oluşturulmasını yönetmenize ve bunlar için disk alanı sınırları belirlemenize olanak tanıyan “zfs project” ve “zfs projectspace” komutları sunulur;
  • ZFS ile çeşitli çalışmaları otomatikleştirmek için Lua betikleri oluşturma yeteneği eklendi. Komut dosyaları, "zpool program" komutu kullanılarak özel yalıtılmış ortamlarda çalıştırılır;
  • Yeni kitaplık uygulandı Pyzf'ler, Python uygulamalarından ZFS'yi yönetmek için kararlı bir API sağlar. Kitaplık, libzfs_core etrafında bir sarmalayıcıdır ve aynı işlev kümesini sağlar, ancak daha yakın Python türleri kullanır;
  • arcstat, arcsummary ve dbufstat yardımcı programları Python 3 ile uyumlu hale getirildi. arcstat.py, arc_summary.py ve dbufstat.py yardımcı programları, ".py" uzantısı olmayan sürümler olarak yeniden adlandırıldı;
  • Ön belleğe almadan ve önbelleği atlamadan verilere erişmeye izin veren Linux Direct IO (O_DIRECT) çekirdek arabirimi için destek eklendi;
  • Performans optimizasyonları tanıtıldı:
    • “Scrub” ve “resilver” komutlarının çalışması, iki aşamaya ayrılması nedeniyle hızlandırılmıştır (meta verileri taramak ve sıralı verileri kullanarak daha fazla doğrulamaya izin veren diskteki verilerle blokların konumunu belirlemek için ayrı bir aşama ayrılmıştır) okuma);
    • Tahsis sınıfları için destek eklendi,
      Nispeten küçük SSD'lerin bir havuzda toplanmasına ve yalnızca meta veriler, DDT verileri ve küçük dosya blokları gibi yaygın olarak kullanılan belirli blok türlerini depolamak için kullanılmasına izin verilmesi;

    • gibi yönetici komutlarının geliştirilmiş performansı
      "zfs list" ve "zfs get", işlemleri için gerekli meta verileri önbelleğe alarak;

    • Her bir metaslab grubu için ayrı ayırıcı işlemler çalıştırarak blok ayırma işlemlerinin paralelleştirilmesi için destek eklendi. Konvansiyonel sistemlerde %5-10 performans artışı var ama büyük sistemlerde (8 adet 128 GB SSD, 24 çekirdekli NUMA, 256 GB RAM) blok ayırma işlemlerinde artış %25'e ulaşabiliyor;
    • "Resilver" komutunun ertelenmiş yürütme olasılığı eklendi (sürücülerin yapılandırmasındaki değişiklikleri hesaba katarak veri dağıtımını yeniden oluşturma) - yeni bir işlemi başlatırken önceki komut henüz tamamlanmadıysa, yeni işleyici yalnızca bundan sonra yürütmeye başlayacaktır. öncekinin sonu;
    • Depolama tarafından hala işlenmekte olan blokların mevcudiyetinde blokların oluşturulmasına ve işlenmesine izin vermek için ZIL'ye (ZFS Amaç Günlüğü) optimizasyonlar eklendi;
    • Sistemdeki bölümler (zvol) için azaltılmış kayıt süresi. Bir havuz çok sayıda bölüm içerdiğinde, artık "zpool içe aktarma" işlemi yapıldıktan hemen sonra kullanılabilirler;
    • Intel QAT (Hızlı Yardım Teknolojisi) çiplerini kullanarak SHA256 sağlamalarının donanım hızlandırmalı hesaplaması ve AES-GSM şifreleme işlemleri için destek eklendi. Intel C62x yonga seti ve CPU Atom C3000 için donanım hızlandırma desteği eklendi.

Kaynak: opennet.ru

Yorum ekle