ZFS Dosya Sisteminde Snapshot ve Clone Alma
Unix dünyasına gireli, 15 yıla yakın olmuştur. Farklı dağıtımlar, farklı Unix tabanlı işletim sistemleri derken, zaman nasıl da geçmiş... Bu süreçte kim bilir neler değişmiştir?
Şu günlerde, Linux dünyasının defacto standart dosya sistemi, Ext4. Daha önce Ext3 ve jurnal desteği olmayan Ext2 vardı. Ext4'ün ilk çıkış zamanlarını ve Ext3'e göre yarattığı farkları gayet net hatırlıyorum. Hatta 2007'de yayımlanan ext4 ile ilgili bir makaleyi (Yeni ext4 Disk Sistemi) bundan 8 yıl evvel büyük bir heyecanla çevirmiştik.
Linux dünyasında dosya sisteminin oturması uzun zaman aldı. Bir ara ReiserFS vardı ve gelecekte büyük bir paya sahip olacağına inanıyorduk. Daha sonra bu dosya sisteminin yaratıcısı Hans Reiser, karısını öldürüp, cinayetten hüküm giydi ve ReiserFS popülerliğini kaybetti. Ext4 ise zamanla standart hâline geldi. Burada duracak mıyız? Zannetmiyorum. Söyleyeceğim spekülasyona kayabilir ama ileride ext4 yerine, BTRFS dosya sisteminin yaygınlaşacağını düşünüyorum.
Dosya sistemi neden önemlidir? Cevabı basit. Performansı yüksek, güvenilir ve ölçeklenebilir bir dosya sisteminiz yoksa, sıkıntı yaşamanız kaçınılmazdır. Peki yeterli midir? Elbette hayır; talep hiç bitmez. O hâlde ikinci sorumuza gelelim; dosya sistemi, önceki saydıklarıma ilave olarak neler yapılabilir?
Bu yazımda, bir dosya sistemin ek faydalarına değinmek için ZFS dosya sistemine atıfta bulunacağım. ZFS, Solaris işletim sisteminde standart gelen hâyli yetenekli bir dosya sistemidir. Fakat Linux, Mac vb. platformlara da 'port' edilmiştir. Zettabyte seviyesinde volume oluşturabilecek kadar yüksek hacimi destekler ve veri tutarlılığını kendiliğinden sağlar.
Dosya sisteminde, önemli bir değişiklik yapacağımızı ve öncesinde yedek almamız gerektiğini varsayalım. Yedek almak, hâyli haklı ve yerinde bir istek. Fakat ufak bir değişiklik için, bütün dosya sistemini yedeklemek yorucu olabilir. Bunun yerine, ZFS ile ilgili dosya sisteminin clone'unu alıp, yedek amacıyla kullanabiliriz. Bunu nasıl yapacağımıza bakalım.
# ORNEK OLMASI ICIN BIR DOSYA OLUSTURUYORUZ
ccebi@solarisvm:~/DENEME$ ls -ltrh /export/home/ccebi/DENEME/deneme.text
-rw-r--r-- 1 ccebi staff 41 Jul 14 20:34 /export/home/ccebi/DENEME/deneme.text
ccebi@solarisvm:~/DENEME$ cat /export/home/ccebi/DENEME/deneme.text
Thursday, July 14, 2016 08:34:23 PM EEST
# ZFS DISK HAVUZUNU LISTELIYORUZ
ccebi@solarisvm:~/DENEME$ zfs list
NAME USED AVAIL REFER MOUNTPOINT
rpool 7.46G 11.9G 4.86M /rpool
rpool/ROOT 5.38G 11.9G 31K legacy
rpool/ROOT/solaris 5.38G 11.9G 4.72G /
...
rpool/export 6.06M 11.9G 32K /export
rpool/export/home 6.03M 11.9G 32K /export/home
rpool/export/home/ccebi 6.00M 11.9G 6.00M /export/home/ccebi
rpool/swap 1.03G 11.9G 1.00G -
# DEGISIKLIK ONCESI 'MySnapshot' ADINDA BIR SNAPSHOT OLUSTURUYORUZ
ccebi@solarisvm:~$ sudo zfs snapshot rpool/export/home/ccebi@MySnapshot
# EN ALT SATIRDA GORECEGINIZ GIBI MySnapshot OLUSUYOR
ccebi@solarisvm:~$ zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
rpool/ROOT/solaris@install 108M - 4.50G -
rpool/ROOT/solaris@2016-07-14-17:17:50 0 - 4.72G -
rpool/ROOT/solaris@2016-07-14-17:19:13 0 - 4.72G -
rpool/ROOT/solaris/var@install 114M - 308M -
rpool/ROOT/solaris/var@2016-07-14-17:17:50 30.0M - 264M -
rpool/ROOT/solaris/var@2016-07-14-17:19:13 77.2M - 268M -
rpool/export/home/ccebi@MySnapshot 0 - 6.00M -
# SNAPSHOT'IN BULUNDUGU LOKASYON, DOSYA SISTEMININ BAGLI OLDUGU LOKASYON ALTIDIR
ccebi@solarisvm:~$ /export/home/ccebi/.zfs/snapshot/MySnapshot
# DOSYANIN ORIJINALINI SILIYORUZ
ccebi@solarisvm:~$ rm /export/home/ccebi/DENEME/deneme.text
ccebi@solarisvm:~$ ls /export/home/ccebi/DENEME/deneme.text
/export/home/ccebi/DENEME/deneme.text: No such file or directory
# ORIJINAL DOSYA SILINMIS OLMASINA RAGMEN SNAPSHOT DURUYOR
ccebi@solarisvm:~/DENEME$ cat /export/home/ccebi/.zfs/snapshot/MySnapshot/DENEME/deneme.text
Thursday, July 14, 2016 08:34:23 PM EEST
Bu noktada istersek, sadece ilgili dosyayı kopyalayabiliriz. Ya da dosya sistemini tamamen dönebiliriz.
# SNAPSHOT ZAMANINA DOSYA SISTEMINI DONDURME
# FILESYSTEM UNMOUNT EDILIYOR
ccebi@solarisvm:/$ sudo umount /export/home/ccebi
# SNAPSHOT ZAMANINA DONULUYOR
ccebi@solarisvm:~$ sudo zfs rollback rpool/export/home/ccebi@MySnapshot
# TEKRAR MOUNT EDILIYOR
ccebi@solarisvm:/$ sudo zfs mount rpool/export/home/ccebi
# DOSYA KONTROL EDILIYOR
ccebi@solarisvm:/$ cat /export/home/ccebi/DENEME/deneme.text
Thursday, July 14, 2016 08:34:23 PM EEST
# DILERSEK ZFS SNAPSHOT'I SILEBILIRIZ
ccebi@solarisvm:/$ sudo zfs destroy rpool/export/home/ccebi@MySnapshot
Gördüğünüz gibi birkaç komutla, çok hızlı bir biçimde o anın görüntüsünü aldık ve dosyamızı kurtardık. Hatta dosya dosya uğraşmamak için komple kurtarmayı da gördük. Bunu bir adım öteye taşıyalım. Snapshot'lar, okunabilir ama yazılamaz kopyalardır. Peki bir test için yazılabilir anlık kopyaya ihtiyacımız varsa, neyi farklı yapmamız gerekir? Aslında süreç hemen hemen aynı işliyor. Yalnız bu sefer, Snapshot aldıktan sonra, bunun üzerine bir de Clone komutu giriyoruz. Yani Snapshot'lar sadece okunur olmakla birlikte, yazılabilir Snapshot'ı Clone olarak tanımayabiliriz. Şimdi de bunu gerçekleştirelim:
# ONCE SNAPSHOT ALIP, BU SNAPSOT UZERINDEN CLONE OLUSTURUYORUZ
ccebi@solarisvm:~$ sudo zfs snapshot rpool/export/home/ccebi@MySnapshot
ccebi@solarisvm:~$ sudo zfs clone rpool/export/home/ccebi@MySnapshot rpool/export/home/MyClone
# CLONE'U KONTROL EDIYORUZ
ccebi@solarisvm:~$ zfs list | grep MyClone
rpool/export/home/MyClone 41K 11.8G 5.97M /export/home/MyClone
# DOSYA SISTEMI OLARAK GELDIGI GORULUYOR
ccebi@solarisvm:~$ df -h /export/home/MyClone/
Filesystem Size Used Available Capacity Mounted on
rpool/export/home/MyClone
19G 6.0M 12G 1% /export/home/MyClone
Tebrikler! Bu noktada, yazılabilir bir kopyaya sahip oldunuz. Clone'dan vazgeçerseniz de, anında uçurabilirsiniz.
# OLUSTURDUGUMUZ CLONE VE SNAPSHOT'I SILME
ccebi@solarisvm:~$ sudo zfs destroy rpool/export/home/MyClone
ccebi@solarisvm:~$ sudo zfs destroy rpool/export/home/ccebi@MySnapshot
Bu anlatım, ZFS ile yapabileceklerinize dair küçük bir örnekti. Solaris işletim sistemini indirip, VirtualBox üzerinden çok daha farklı deneyimler gerçekleştirebilirsiniz. (Oracle Solaris 11.3 Downloads bağlantısından kurulum imajlarını edinebilirsiniz.) Peki kurulumu nasıl yapacağız? O da basit. Solaris ile ilgili eski bir kurulum yazısına, web sayfamdan erişebilirsiniz. Eski olmakla birlikte, ilk defa kurulum yapacaklar için fikir verecektir.
POS Devices | Software Development | System Integration | Cards & Payments | VUK507
8yGüzel olmuş
CTO at Gantek Technology. Writer, Poet, Singer, and Composer.
8yEline sağlık.
Founder at VeridataIT
8ynice work