Maceraya hazır mısın! bir BSD almaz mısın?

Duyuru
* Forum tasarımımız yenilendi.
* FreeBSD 10.4 - RELEASE Final çıktı.
* FreeBSD 11.1 - RELEASE Final çıktı.
Son Mesajlar
Çevrimiçi (0)

ZFS - Zettabyte Dosya Sistemi

ZFS - Zettabyte File System | Zettabyte Dosya Sistemi



ZFS

, Zettabyte File System, Sun Microsystems tarafından 2000'li yıllarda geliştirilmeye başlanmıştır. Fakat geliştirilmesi süreci 4 yıl kadar sürüp 2004 yılında IT sektörüne duyurmuş ve bundan bir yıl sonra 2005 yılında Solaris 10 'da monte edilmiştir. FreeBSD'ye ise 2007 yılında entegre edilmiştir. FreeBSD 8.2 de ZFS’in versiyonu 15 iken,9.0 sürümünde ZFS’in versiyonu 30 olmuştur. yani başka bir deyiş ile FreeBSD’ye implementasyonu hala devam etmektedir. Başka bir bakış açısı ile baktığımızda ise ZFS çok yeni olmayan bir teknoloji olmasına rağmen kendisine hayran bırakan özelliklere sahip açık kaynak bir dosya sistemidir. Zettabyte File System, Oracle Solaris, FreeBSD, NetBSD, FreeNAS, MacOS X ve Linux kernelini kullanan işletim sistemlerinde kullanılabilmektedir.

Hali hazırda Zettabyte File System'i yaklaşık 6 Linux işletim sisteminde kullanılabilmektedir. Bunlar, Oracle Solaris, FreeBSD, NetBSD, FreeNAS, MacOS X ve Linux kernelini kullanan işletim sistemlerinde kullanılabilmektedir. Zettabyte File System’in, CDDL (Common Development and Distribution License) olarak bilinen Sun Microsystems’in kendi lisansı ile dağıtılmış olmasından dolayı Linux İşletim Sistemlerinde kullanabilmek için bir kaç adım daha lazımdı. Common Development and Distribution License ( CDDL ) lisansı, General Public License ( GPL ) ile bazı yönlerden dolayı uyumsuz olduğu için ancak 'FUSE' ile kullanılabilmekteydi. ZFS’i , Linux’a eklemek için, kernel'de değişiklikler yapmak gerektiğinden bu da GPL lisansının kötüye kullanma anlamına gelmekteydi. Şuanda ise, Linux’ta bir paket kurulumu kadar kolay. Kernel modülü olarak, sisteme eklendiğinde Linux İşletim Sistemlerinde de kullanılabilir hale gelmekte. Günümüzde yaygın kullanımda olan File Systemlerde bulunan Encryption, DeDuplication, SnapShot, Clonlama teknikleri gibi birçok özelliği içinde barındırmaktadır.

Sun Microsystems bünyesinde bulunan Jeff Bonwick ZFS'nin babası olarak ZFS'yi “The Last Word in File Systems” olarak tanıtmıştır.

Zettabyte File System'i anlamak adına;

Zettabyte datanın büyüklüğünü belirtmek için kullandığımız bir terimdir. Aynı Megabyte (MB), Gigabyte (GB), Kilobyte (KB) gibi diyebiliriz. 256 katrilyon zettabyte'lık desteği ile de dünya üzerinde bulunan tüm digital datayı adresleme özelliğine sahiptir. Tabi şuanda ki ihtiyaçlara göre böyle bir sisteme ihtiyaç duyulmamıştır. Teorik olarak hiç bir sistem bu depolamayı dolduramaz hatta cürret bile edemez :)

Kilobyte › Megabyte › Gigabyte › Terrabyte › Petabyte › Exabyte › Zettabyte

1 Zettabyte = 1024 Exabyte

1 Zettabyte = 1 milyar TB
zettabyte1_zps4cd1d34d.png

Genel Olarak Zettabyte File System'in özelliklerine bakacak olursak aslında say say bitmiyor neredeyse :)
1- 128Bit dosya sistemi

2- 265 katrilyon zettabyte desteği

3- Fiziksel harddisklerin yönetimi için Storage Pool desteği

4- Dosya sisteminin birden çok harddiske yayılabilmesi

5- Disk havuzlarının ve dosya sistemlerinin otomatik olarak mount edilmesi

6- Basit Yönetim

7- Transactional dosya sistemi

8- dosya sistemi boyutu, dosya sayısı, dosya büykülükleri gibi fiziksel limitlerinin bulunmaması

9- Dünyada kendini iyileştirebilen(self-healing) tek dosya sistemi

10- fsck komutu kullanımını gerektirmeyen ve verinin bozulmasını engelleyen checksum mekanizması

11- Volume yapısı

12- Snapshot özelliği

13- ZFS Send/Receive

14- Özelleştirilebilen ayarlar ( Sıkıştırma, Checksum, Şifreleme, veri tekilleştirme gibi şeyler )

15- Maaliyet 

16- RAID-0/1 (striping & mirroring) , RAIDZ(RAID5'ten daha gelişmiş – RAID6 )

17- High availability

18- Cache Cihaz Desteği

19- SAN Desteği

Yukarıdaki özellikleri saymışken aslında 2-3 tanesine değinmeden olmaz kesinlikle;

Storage Pool Desteği
Sisteminiz üzerinde bulunan harddiskleri yönetmek için kullanılan bir sistemdir Storage Pool. Storage pool şunu yapar; disklerin kullanılabilir olduğu havuza dahil edilen fiziksel disklerin biçimlerini tanımlar. Disklerin hangi amaçlarla kullanılacağına dair özellikleri verir. Aynı zamanda Zettabyte File System, volume mekanizmasını da desteklemektedir. Aslında Storage Pool, az da olsa Volume konseptine benzemektedir. Aralarındaki farklara bakacak olursak;

Volume Modelinde; Her dosya sistemi için partition ( bölmeler ) veya volume olmalı. Volumelerin boyutlarını küçültme veya büyütme işlemleri manuel ( elle ) olarak yapılmalıdır. Her dosya sisteminin bir kapasitesi bulunur. Her dosya sistemi parçalara ayrılmıştır.

ZFS storage pool'da; Yönetilecek partition/bölme yoktur. Dosya sistemlerinin boyutlarını küçültmek veya büyütmek istediğimizde, istersek işlemleri otomatik olarak da yapabiliriz. ZFS Storage Pool'daki tüm veri paylaşılabilir durumdadır.
Zfs_poolpreview_zpsc875d42b.png

Basit Yönetim
Kossskoca Zettabyte File System'i sadece 'zpool' ve 'zfs' gibi 2 komutla yönetmek mümkün. Dosya sistemlerini bir komutla oluşturup, özelliklerini yine sadece bir komutla değiştirerek kullanılabilir hale getirilebiliyor. Yöne bir komut ile Mirror veya Raid yapıları oluşturulabilir. Ve sistem yöneticileri için bazen sıkıntı oluşturabilen hata oluşmuş olan diskleri değiştirmede veya tekrar inşa edilmesi aşamasında kişilere ve firmalara büyük kazançlar sağlamaktadır. Örnek olarak bir komut koşturalım
Storage Pool oluşturma komutu;
# zpool create inseptra /dev/da0

Yukardaki komutu terminalde koşturduğumuzda ZFS Storage Pool hazır hale gelecektir. Aynı zamanda otomatik olarak oluşturulan Storage Pool sisteme mount edilir.

Storage Pool oluşturulduktan sonra Terminalde başka bir komut koışturularak mount point değiştirilebilir. Örnek olarak;
# zfs set mountpoint=/opt/ sertac sertac

En üstteki dosya sisteminin özellikleri altında oluşturulacak olan yeni dosya sistemlerine(miras-inheritance) aktarılabilir. Bu özellikler Compression, Quotas, Checksum gibi dosya sistemine ait olabilir.

Transactional Semantics
Bunu aslında direk bir örnek ile açıklasak sanki daha anlaşır olur. Örneğin siz 100gb'lik bir dosyayı diskinize kopyaladınız. Bu işlemi başlattığınızda, dosya sisteminde,UFS, data bloğu ayrılır ve ilgili klasöre linklenir. İşlem sırasında elektrik kesintisi veya donanımsal bir hata gibi beklenmedik durum meydana gelirse şayet “fsck” komutunu kullanarak, meydana gelen hataları çözmeye çalışacaktır. Yani bir bakıma aslında kopyalama sırasında meydana gelen zararları tamir ederek zararınızı minimuma indiriyor ve sistemin tutarlı duruma geçirerek sistemini işleyişini stabil hale getirmektedir. fakat unutulmamalıdır ki hiç bir sistem %100 kurtarma garantisi verememekte. Bunun için kafanızda mutlaka her şey düzelecek diye de bir algı oluşmasın. Bazı dosya sistemleri, “journaling” konseptini oluşturdular. Yani yapılan her işlem bir dosyaya kaydediliyor ve sistemin arızalnamasına  karşı ise son veriler buradan okunabiliyor. Çünkü veriler yeniden kurtarılmaya çalışırken verinin tekrar yazılması gerekebiliyor ve beklendiği gibi stabil çalışmayabiliyor.

Transactional

“ dosya sisteminde ise, “copy on write semantics” diye söylenen model kullanılarak data kontrol ediliyor. Datalar, işlemler tamamen bitmeden hard diske yazılmıyor, lakin data yazma işlemi bitmemiş ve bir hata meydana gelmiş ise o zaman yazılacak data görmezden gelinmektedr. Böylece herhangi bir sistem çökmesi ile karşılaşıldığında diskteki veriler her zaman tutarlı oluyor. Bununla birlikte “fsck” kullanımı bu özellik ( Transactional ) ile tarihe karışıyor demekte fayda var gibi. Sun Microsystems, "son yazılan veriler düşük bir ihtimal olsa da kaybedilebileceğini,fakat daha önce diske yazılmış olan hiçbir verinin kaybedilmeyeceğini ve daima diskte bulunacağını belirtmekte"

Self-Healing
Checksums ve Kendini İyileştirebilme Özelliği 'de diyebiliriz aslında. Bilindiği ve yukarıda da bahsettiğimiz gibi ZFS dosya sisteminde her data bloklara yazılır ve ZFS'deki her bloğun Checksums'u alınır. Datanın doğruluğu, 265bitlik Checksumlar ile onaylanır ve data korunur.

Diğer dosyalama sistemlerindeyse donanımın hataları görmesi ve onları düzeltmesi beklenir. Fakat ZFS, verilerin doğruluğu 265bitlik kontrollerle zaten yapmaktadır. Dolayısı ile tekrardan hataları tekrar gözden geçirmesine gerek kalmaz. Checksum algoritmaları, basit lakin seri olan 'Fletcher-2' olabileceği gibi, daha yavaş ama daha güvenli olan SHA-256 algoritmasını kullanarak da yapılabilir. Şayet ZFS, RAID-Z veya Mirror dosya sisteminde eşleşmeyen bir Checksum ile karşılaşırsa, uygun durumda olan bloktan sağlam datayı alır ve bozuk olan bloğa yazar ve böylece kendini iyileştirebilir.

RAID yapıları ve RAID-Z
RAID, Redundant Array of Inexpensive Disks. Kendi aralarında 4 'e ayrılırlar. RAID0, RAID1, RAID5 ve RAID6. Kısa kısa bunlara bakacak olursak;
(tablara tıklayınız..)
[tabs] [tab=RAID0]
Bloklar paylaştırılır, Mirror ve Parite yoktur. Hata toleransı da yoktur. En az 2 adet harddisk gereklidir. Disklere paylaştırılarak yazdırılır. Bir diskte hata oluşması durumunda veriler kurtarılamaz. 2 tane 50gb'lik disk varsa elinizde bu sisteminizde 100gb olarak görünecektir.
raid-0_zps351a1020.jpg

[/tab]
[tab=RAID1]
Mirror yapıları için kullanılmaktadır. 2 veya daha fazla diskimiz varsa, disklerden birisindeki veriler diğerine eş zamanlı olarak kaydedilir. Disklerden birisinde hata oluşması durumunda sağlam olan diskten verileri kurtarabiliriz. Veri güvenilirliğini artırır.
325px-RAID_1svg__zps5a28d95c.png

[/tab]
[tab=RAID5]
Bunun için en az 3 harddiskiniz olması gerekir. RAID0'daki gibi disklere blokların paylaştırılması ve aynı zamanda “parite” bilgileri de yazılır. Data yazdırılırken ilk 2 diske veri, 3. diske parite bilgisi kaydedilir. Harddisklerden birisinde hata olması durumunda, paritenin en son yazıldığı disk okunur ve kayıp veriler kurtarılır. %100 garanti edilemez.
300px-RAID_5svg_zps87fd9e74.png

[/tab]
[tab=RAID6]
RAID5 gibi olmasının yanı sıra “çift-parite” kullanır ve blok levelinde disklere paylaştırılır. Her data bloğu için 2 parite bloğu oluşturulur.
raid6zoom55_zps9a5441a1.png

[/tab]
[tab=RAID-Z]

RAID-Z

ile tekli(single), çift(double), üçlü(triple) parite ile hata toleransını daha da azaltma imkanımız bulunmaktadır. Tekli parite yani RAIDZ1 veya RAIDZ RAID5 e benzemesine rağmen RAID5'ten daha gelişmiş özelliklere sahiptir. RAIDZ2 ile de RAID6 ya benzer ama RAID6'dan daha gelişmiş özellikleri vardır. RAID-Z “full stripe written”dır. Yani data bloğa yazılırken, tamamen bitmesi beklenir. Sistemde bir çökme durumu olduğunda, sistem açıldığında data ile data paritesi uyumsuz olacaktır. Bu da verinin bozuk olmasına sebep olur ve data okunamaz duruma gelir. Bu duruma 'Write Hole' denilmektedir. ZFS sisteminde ise bunu engellemek adına 'full stripe written' adında bir mekanizma bulur ve data güvvenliğini daha iyi sağlar.Aynı zamanda unutmadan ekmekte fayda var RAID-Z normal RAID yapılarından daha hızlıdır. RAID-Z'nin fazla özelliği bulunmasına karşın maaliyet açısından da diğerlerine oranla daha iyi durumdadır.
[/tab]
[/tabs]




Deduplication ( Veri Tekilleştirme )
Daha öncede bahsettiğimiz gibi ZFS'de datalar bloklara yazılır ve bundan dolayı da her zaman Deduplication özelliği hayat kurtarıcıdır. Çünkü data depolamada harddiskin dolmasını önlemek için geliştirilmiş bir özelliktir. Blokların Checksumları ölçülür ve saklanır. Yeni blokların Checksumları daha önceden yazılmış bir blok ile aynıysa şayet blok yazılmaz ve sadece diğerine bağlantı verilir. Bu uygulama hem data alanından kazandırıken, hem de I/O operasyonlarının yapılmasına gerek bırakmadığı için performansdan kazandırır. ZFS veri tekilleştirme işlemi tek bir komut ile ayarlanabilmektedir.
# zfs set dedup=on sertac

Default olarak SHA-256 kullanılmaktadır. Bu özellik bir bakıma Storage Pool ile örtüşen bir yapıdır. Veri tekilleştirme ile Sanallaştırma ortamlarından, dosya sunucularından, mail sunucularından, yedekleme servislerinden data alanı kazanmamız mümkündür.

SnapShot Desteği
Aslında belkide bir çoğumuz Snapshot'un ne olduğunu Wmware workstation'dan öğrendik. Şahsen ben o zaman öğrenmiştim :)
Kısaca Snapshot dosya sisteminin read-only kopyasıdır. Snapshot'lar Storage Pool'da, ek bir alan harcamazlar. Snapshot için şu komutlar kullanılır;

Almak için;
# zfs snapshot tank/home/sertacs@monday

Listelemek için;
# zfs list

Alınan Snapshot'ların bulunduğu klasör, snapshotı alınan dosya sisteminin hemen altında .zfs isimli gizli klasörde bulunmaktadır. Alınan Snapshot'a dönemk için kullanılacak olan komut;
# zfs rollback tank/home/sertacs@monday

Gerçekten de gerek firmalar için gerekse kullanıcılar için inanılmaz bir sistem olduğunu söylemek mümkün ZFS'nin. Veri kurtarmada, performans kazanmada, verilerin güvenliği açısından oldukça net ve kesin adımlar atılmış görüldüğü gibi. Şimdilik sadece belirli işletim sistemlerinde kullanılabilen bu sistemin  ileri zamanlarda bütün sistemlerde kullanılabilir duruma getirilmelidir bence.

Saygılarımla
Sertaç AYDIN
http://www.sistemvenetwork.com

Maceraya hazır mısın?  Bir BSD almaz mısın!

Yorumlar

Yorum yapmak için Oturum Açın yada Kayıt Olun .