ZFS Dosya Sistemi Nedir?

Hızlı Bakış

ZFS, veriyi bütünlük ve performans odaklı yöneten gelişmiş bir dosya sistemi sunuyor. Bu sistem, işlemsel model ve anlık görüntüler ile veri değişikliklerini güvenli şekilde kaydediyor. Ayrıca sanal depolama havuzları, diskleri tek bir yapıda birleştiriyor. Böylece kapasite yönetimi ve ölçeklenebilirlik kolaylaşıyor. Örneğin klonlar, bağımsız dosya sistemleri oluşturarak alan tasarrufu sağlıyor. Bu yapı, kullanıcıların güvenli ve yönetimi kolay bir depolama ortamı elde etmesini sağlıyor.

ZFS (Zettabyte Dosya Sistemi) Ekim 2001’den beri Sun Microsystems tarafından tasarlanan ve dört yıl sonra OpenSolaris’te uygulanan bir dosya sistemidir.

ZFS Nedir?

ZFS (Zettabyte Dosya Sistemi) Nedir?

Ve ZFS’nin arkasındaki fikir mevcut teknolojiyi yükseltmek değil, dosya sistemini ve mantıksal birim yöneticisi entegrasyonunu tek bir sistemde geliştirerek veri yönetimine yeni bir yaklaşımdır.

Amacı, basit yönetim, performans, veri bütünlüğü ve ölçeklenebilirlik üzerinedir.

ZFS Tarihi ve Gelişimi

2001 yılında Sun Microsystems’da başladı. 2005 yılında Open Solaris‘in bir parçası olarak CDDL kapsamında piyasaya sürüldü. Daha sonra, Pawel Jakub Dawidek, 2007’de FreeBSD için ZFS’yi tercih etti.

Brian Behlendorf, LLNL’de yüksek performanslı hesaplamalar için 2008 yılında ZFSOnLinux projesini başlattı. Oracle, 2010 yılında Sun Microsystems’i satın aldı ve o yıl sonra Open Solaris’i durdurdu.

Illumos projesi Open Solaris’in yerini almaya başladı ve ZFS çekirdek ekibinin Mateo Ahrens ve Jeff Bonwick üyeleri istifa etti. Birçoğu şirketlerde iş buldu ve Illumos projesinin bir parçası olarak Açık Kaynak ZFS geliştirmeye devam etti.

ZFS, FSF tarafından ücretsiz bir yazılım lisansı olarak tanınan ancak GNU GPL ile uyumlu olmayan, popüler ve yaygın olarak kullanılan OSI onaylı bir açık kaynak lisansı olan CDDL kapsamında lisanslanmıştır.

Çünkü ZFS doğrudan Linux çekirdeğine eklenemez. Ancak çekirdek paketten ayrı bir DKMS paketi olarak dağıtılabilir.

ZFS Özellikleri

ZFS dosya sisteminin ana özellikleri aşağıda listelenmiştir:

   Doğrulanabilir Veri Bütünlüğü

Bu özellik, dosyadaki verilerin her zaman doğru bir şekilde korunmasını, bozuk verilerin algılanmasını ve otomatik olarak onarılmasını sağlar. Bu, işlemsel dosya modeli sayesinde gerçekleştirilir.

   İşlemsel Model

İşlemsel dosya modeli, olayların veya işlemlerin depolanmasını içerir.

Bunun için, disk üzerinde veri değiştirildiğinde, yazma üzerine kopyalama olarak bilinen teknik kullanılır. Bu veriler kaydedildiği yerdeki yeni blokların üzerine yazılmaz ve daha sonra karşılık gelen yapılar bu yeni bloklara işaret edecek şekilde değiştirilir.

   Snapshots

Anlık görüntüler, belirli bir zamanda dosya sisteminin kopyalarına karşılık gelir. Bu kopyaların salt okunur olması dışında, yedeklemelere veya yedeklemelere neredeyse anında izin vermek çok hızlıdır.

   Clones

Anlık görüntülere benzer şekilde, klonlar bir noktada dosya sisteminin kopyalarıdır, ancak yazmaya izin verilir. Oluşturulan bu dosya sistemi, yerden tasarruf etmek için diskteki blokları orijinal ile paylaşır, ancak bağımsız olarak yönetilir.

   Depolama Alanları

ZFS, tek bir cihazda bulunan ve birim yöneticisi gerektiren geleneksel dosya sistemlerinden farklı olarak sanal depolama alanlarını veya sanal depolama havuzlarını veya zpools’u kullanır.

Zpool, sabit disk bölümleri veya tam diskler gibi aygıt bloklarından oluşturulan sanal aygıtlardan oluşturulur. Ayrıca, tüm vdevs’lerin depolama kapasitesi zpool’daki dosya sisteminin tüm örnekleri için kullanılabilir.

   Lightweight File System (Hafif Dosya Sistemi)

Dosyalama sistemlerinin yönetimi diğer mevcut sistemlere göre çok daha kolay olduğu için, bu sistemleri oluşturma işini çok hafif bir işlem haline getirir.

Buna ek olarak, her kullanıcı için boş kota yoktur, ancak dosya sistemi başına kota vardır, böylece aynı dosya sistemindeki klasörler yerine her kullanıcı için dosya sistemleri oluşturulur.

   Compression/Sıkıştırma

Bu, disk üzerindeki alanı en üst düzeye çıkarmamıza, diskin kullanılmayan küçük parçalarını çıkarmamıza ve sonuç olarak okuma hızını çoğu zaman en üst düzeye çıkarmamıza olanak tanır.

ZFS Dosya Sistemi Kapasite

ZFS 128 bit dosya sistemidir, bu nedenle NTFS gibi diğer 64 bit sistemlere göre çok daha fazla depolama kapasitesine sahiptir.

ZFS’nin sınırları o kadar büyük olacak şekilde tasarlandığı için pratik değerler yerine teorik sonuçlar elde edildi:

  • Bir klasördeki giriş sayısı: 248
  • Bir dosyadaki özellik sayısı: 248
  • Maksimum dosya boyutu olarak bayt: 264
  • Zpool içindeki cihaz sayısı: 264
  • Bir sistemdeki maksimum zpool sayısı: 264
  • Zpool içindeki maksimum dosya sistemi sayısı: 264
  • Bazı zpool maksimum boyutu olarak bayt: 278

İşletim Sistemi Uyumluluğu

ZFS kendine aittir ve Solaris işletim sistemine dahil edilmiştir, ancak bu dosya sisteminin koduna serbestçe erişilebilir olduğundan, FreeBSD gibi diğer platformlarda da görülebilir.

ZFS’yi destekleyen platformlar aşağıda listelenmiştir:

Desteklenen İşletim Sistemleri ve Dağıtımlar
Oracle Solaris 11.3NexentaStor Community 3.1.0Schillix 0.7.2EON NAS (v1.0beta)
Oracle Solaris 10 1/13 (U11)NexentaStor Community 4.0StormOS “hail”napp-it
Oracle Solaris 11.2NexentaStor EnterpriseJarisOmniOS CE
Oracle Solaris 11 2011.11GNU/kFreeBSD “Squeeze” (as of 1/31/2013)MilaX 0.5SmartOS
Oracle Solaris Express 11 2010.11GNU/kFreeBSD “Wheezy-9” (as of 2/21/2013)FreeNAS 8.0.2 / 8.2macOS 10.5, 10.6, 10.7, 10.8, 10.9
OpenSolaris 2009.06FreeBSDFreeNAS 8.3.0macOS 10.6, 10.7, 10.8
OpenSolaris (last dev)zfs-fuse 0.7.2FreeNAS 9.1.0NetBSD
OpenIndianaZFS on Linux 0.6.5.8NAS4Free 10.2.0.2/10.3.0.3MidnightBSD
Nexenta Core 3.0.1KQ Infotech’s ZFS on LinuxKorona 4.5.0Ubuntu Linux 16.04 LTS, 18.04 LTS, 18.10, 19.10, 20.04 LTS
NexentaStor Community 3.0.1BeleniX 0.8b1EON NAS (v0.6)ZFSGuru 10.1.100

ZFS Dosya Yapısı

Dosya sistemleri, zpools adı verilen sanal depolama havuzlarının üstünde oluşturulur. Zpool, blok cihazlardan gelen sanal cihazlardan oluşturulur.

Bu yapının özellikleri:

  • Soyutlama: ücretsiz.
  • Yönetilecek bölüm yok.
  • Otomatik olarak büyür veya küçülür.
  • Tüm bant genişliği her zaman kullanılabilir.
  • Havuzdaki tüm depolama alanları paylaşılır.

İşlemsel Model

ZFS, üzerine yazarken kopyalama işlem modeli kullanır. Tüm dosya sistemi blok işaretçileri, sivri blok üzerinde, blok okunarak kontrol edilen 256 bitlik bir sağlama toplamı içerir.

Aktif veri içeren blokların üzerine asla yazılmaz. Bunun yerine, yeni bir blok ayrılır ve değiştirilen veriler ona yazılır ve daha sonra ona başvuran tüm meta veri blokları benzer şekilde yeniden konumlandırılır ve yazılır.

Bu işlemin ek yükünü azaltmak için, işlem gruplarına birden çok güncelleştirme eklenir ve eşzamanlı yazma gerektiğinde ZFS Intent Log kullanılır.

Snapshots

ZFS verilerin üzerine yazmadığından, anlık görüntü almak, verilerin eski sürümleri tarafından kullanılan blokları serbest bırakmamak anlamına gelir.

Avantajı, anlık görüntülerin hızlı bir şekilde alınması ve ayrıca değiştirilmemiş verileri dosya sistemiyle paylaşmaları nedeniyle alan açısından verimli olmasıdır. Hem dosya sistemi hem de zvol veri kümelerinin anlık görüntülerini oluşturabilirsiniz.

Değiştirilebilir anlık görüntüler oluşturulabilir, bu da ortak bir blok kümesinin paylaşılmasıyla oluşturulan iki bağımsız dosya sistemine neden olur. Değişiklikler yapıldıkça dosya sistemi blokları ayrışır, ancak kaç tane klon olduğuna bakılmaksızın ortak bloklar korunur.

ZFS ve Diğer Dosya Sistemleri ile Arasındaki Farklar

Bu konseptin ardındaki fikir her zamanki dosya sistemlerinden farklı olarak, tek bir fiziksel cihazdan yapılandırılmıştır.

ZFS, mantıksal hacim kavramını tamamen ortadan kaldıran Havuz konsepti sayesinde belirli cihazlarla sınırlı değildir.

Ayrıca, Transactional Copy-on-Write (İşlemsel Yazmaya Kopyalama) adı verilen, aynı işaretçiyi kolaylaştıran birden çok işleme aynı kaynağa erişim sağlar. Fsck’e ihtiyaç duymadan tutarlılığı kaybetmez.

Veri bozulmasını sessiz bir şekilde algılayıp düzelterek veri bütünlüğünü korur.

ZFS Hakkında Kafanıza Takılan 6 Teknik Detay

ZFS’in ‘işlemsel kopyalama’ olayı verilerimi neden diğer sistemlerden daha güvende tutuyor?

Diğer sistemlerin yaptığı en büyük hata veriyi doğrudan eski bloğun üzerine yazmaktır. Elektrik kesilirse veya sistem çökerse dosyanız yarı yazılmış halde kalır ve tamamen çöp olur. ZFS ise asla aktif verinin üstüne gitmez.
Önce boş bir alana yeni veriyi eksiksiz yazar. Ardından işaretçileri atomik bir hareketle yeni konuma çevirir. Bu sayede sistem tam ortasında patlasa bile ya eski halinize sahipsinizdir ya da yeni halinize.
Açıkçası bu mekanizma fsck komutunun ömrünü tamamen bitirmiştir. Disk yapısı her daim tutarlı kalır çünkü geçiş anı diye bir şey yoktur.

Zpool dedikleri sanal havuz mantığı klasik RAID yönetimini nasıl çöpe atıyor?

Geleneksel dünyada bir diski bölümlere ayırır sonra o bölümü bir RAID dizisine ekler üstüne de dosya sistemi kurardınız. Tam bir işkenceydi. Büyütmek isteseniz saatlerce rebuild beklerdiniz. Zpool ise tüm bu katmanlı yapıyı ortadan kaldırır.
Diskleri doğrudan havuza atarsınız. Havuzdaki tüm boş alan otomatik olarak üzerindeki tüm dosya sistemleri tarafından paylaşılır. Kota işini tek tek bölümlerle değil havuz seviyesinde yönetirsiniz.
Dolayısıyla yeni bir disk taktığınızda sistem anında genişler. Herhangi bir LVM komutu ezberlemenize veya parted çıktısına bakarak ömür tüketmenize gerek kalmaz.

Anlık görüntü almak bu kadar hızlı ve az yer kaplıyorsa sürekli snapshot alıp sömürsem ne olur?

İşte tam da bu yüzden bu teknolojiye aşığım. Saniyede yüzlerce snapshot alsanız bile diskte neredeyse sıfır yer kaplarsınız. Çünkü snapshot sadece blokları donduran bir işaretçi listesidir. Henüz hiçbir veriyi kopyalamadınız ki.
Asıl yer kaplama olayı siz dosyaları değiştirmeye başlayınca devreye girer. Değişen her blok için eski kopya snapshot’a ait sayılır ve silinmez. Dolayısıyla bir klasörü yanlışlıkla sildiğinizde veri kurtarma yazılımlarına servet dökmenize gerek kalmaz.
Önceki bir snapshot’a gidip dosyayı sanki hiç silinmemiş gibi geri alırsınız. Bu özellik özellikle fidye yazılımlarına karşı en sağlam kalkanlardan biridir.

128-bit olması teoride sonsuz alan demekmiş ama pratikte bu kadar büyük bir havuzu kim dolduracak?

Teorik limitler gerçekten de kahkaha attıracak cinsten. 256 kentilyon Zettabyte gibi rakamlardan bahsediyoruz. Dünyadaki tüm kum tanelerini saysanız bu sayının yanına bile yaklaşamazsınız. Peki pratikte ne işimize yarar?
Bu devasa adresleme kapasitesi sayesinde iç yapı çok daha verimli çalışır. Dosya özniteliklerini saklamak veya karmaşık sağlama toplamlarını yönetmek için asla alan sıkıntısı çekmez. NTFS gibi 64-bit sistemlerde belirli bir dosya sayısından sonra performans düşüşü yaşanır.
Bu mimaride ise milyarlarca dosyayı yönetirken bile nefes nefese kalmazsınız. Limitin pratikte olmaması ölçeklenebilirliğin garantisidir.

Linux çekirdeğine doğrudan eklenememe hikayesinin altında nasıl bir lisans krizi yatıyor?

Durum tamamen hukuki bir satranç oyunundan ibaret. ZFS kodu Sun Microsystems zamanında CDDL lisansı ile özgürleştirildi. Linux çekirdeğinin kalbi ise GPL ile korunuyor. Bu iki lisans birbiriyle anlaşamayan inatçı iki komşu gibidir.
GPL kısıtlamaları gereği CDDL kodunu çekirdeğin içine derleyip dağıtamazsınız. Neyse ki mühendisler harika bir yol buldu. DKMS modülü sayesinde kodu çekirdeğin dışında tutup çalışma anında entegre ediyoruz.
Yani Ubuntu’da tek bir komutla kurulum yapıp kullanmaya başlarsınız. Hukuki belgeler avukatların meselesidir ancak teknik olarak sorunsuzca keyfini sürebilirsiniz.

Sessiz veri bozulması denen illeti ZFS tam olarak nasıl engelliyor?

Diskleriniz size yalan söyler. Sektörler zamanla bozulur ancak disk kontrolcüsü bunu size söylemez ve sessizce bozuk veriyi okutur. İşte bu kabus senaryosuna Bit Rot denir. Bu yapı ise her bloğa 256-bitlik bir sağlama toplamı yapıştırır.
Veriyi her okuduğunda bu imzayı kontrol eder. Eğer tutarsızlık varsa alarm zilleri çalar. Eğer RAID-Z veya Mirror bir yapı kullanıyorsanız bozuk veriyi sağlam kopyadan otomatik olarak onarır ve diske geri yazar.
Sonuç olarak arşivlediğiniz bir fotoğrafın 10 yıl sonra piksel piksel çürümesi imkansız hale gelir. Bu özellik başlı başına sunucu dünyasında bu dosya sistemini tercih etmenin yegane sebebidir.

Bu Rehberi Keşfettikleri İçin Sana Teşekkür Edecekler!

Sadece bir tıkla sevdiklerine dev bir iyilik yapmaya hazır mısın? Bilgi paylaştıkça devleşir.

İlk yorumu sen paylaş