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 (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:
Oracle Solaris 11.3 | NexentaStor Community 3.1.0 | Schillix 0.7.2 | EON NAS (v1.0beta) |
Oracle Solaris 10 1/13 (U11) | NexentaStor Community 4.0 | StormOS “hail” | napp-it |
Oracle Solaris 11.2 | NexentaStor Enterprise | Jaris | OmniOS CE |
Oracle Solaris 11 2011.11 | GNU/kFreeBSD “Squeeze” (as of 1/31/2013) | MilaX 0.5 | SmartOS |
Oracle Solaris Express 11 2010.11 | GNU/kFreeBSD “Wheezy-9” (as of 2/21/2013) | FreeNAS 8.0.2 / 8.2 | macOS 10.5, 10.6, 10.7, 10.8, 10.9 |
OpenSolaris 2009.06 | FreeBSD | FreeNAS 8.3.0 | macOS 10.6, 10.7, 10.8 |
OpenSolaris (last dev) | zfs-fuse 0.7.2 | FreeNAS 9.1.0 | NetBSD |
OpenIndiana | ZFS on Linux 0.6.5.8 | NAS4Free 10.2.0.2/10.3.0.3 | MidnightBSD |
Nexenta Core 3.0.1 | KQ Infotech’s ZFS on Linux | Korona 4.5.0 | Ubuntu Linux 16.04 LTS, 18.04 LTS, 18.10, 19.10, 20.04 LTS |
NexentaStor Community 3.0.1 | BeleniX 0.8b1 | EON 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.