24 Aralık 2012 Pazartesi

ZFS Dosya Sistemi üzerine FreeBSD Kurulumu

Bu yazımda sanallaştırma üzerinde yaptığım ZFS dosya sistemli FreeBSD 9 Kurulumu deneyimimi sizlerle paylaşmak istiyorum. Bir hatam varsa şimdiden af ola.

ZFS Nedir?

ZFS, Sun Microsystems tarafından tasarımlanmış birleşik dosya sistemi ve mantıksal birim yönetimli genel amaçlı dosya sistemidir. Özelliklerini özetle belirtmek gerekirse; 

veri bozulması durumlarına karşı veri bütünlüğü doğrulaması, 
yüksek veri depolama kapasitelerini desteklemesi (Dünyanın ilk 128-bit'lik dosya sistemi),
dosya sistemi ve birim yönetimi kavramlarının entegrasyonu,
snapshots ve copy-on-write klonları,
sürekli veri bütünlüğü kontrolü ve otomatik onarım gibi kendini yönetebilmesi,
dahili RAID özelliği (RAID-Z) ve doğal NFSv4 ACLs,
yüksek performans (transactional nesne modeli tabanı ile)

özellikleridir.

ZFS, Common Development and Distribution License (CDDL) lisansı altında açık kaynak kodlu olarak OpenSolaris işletim sistemi üzerinden FreeBSD 'ye aktarılmıştır. Şu an FreeBSD üzerinde kullanılabilen en son versiyonu 28 dir. Sun Microsystems'in Oracle firmasına satılması sonrası OpenSolaris'in geliştirilmesi durdurulmuş ve ZFS dosya sisteminin yeni sürümlerinin kodları kapanmıştır. En son sürüm Solaris işletim sistemi üzerinde ZFS 34 kullanılmaktadır. ZFS versiyonları ve gelişim süreci ile ilgili ek bilgi almak isterseniz ZFS Wikipedia sayfasına bakmanızı öneririm. 

Kullandıkça ve tanıdıkça ZFS'nin ne denli gelişmiş ve başarılı bir dosya sistemi olduğu daha iyi görülebilecektir.



ZFS Sistem Gereksinimleri


ZFS dosya sistemi hakkında her ne kadar genel kullanım amaçlı olduğunu belirtsem de  özellikleri, çalışma karakteri ve performansı ile kurumsal amaçlı kullanıma uygun bir dosya sis temi hedeflenerek geliştirilmiştir. Bu nedenle ihtiyaç duyduğu donanım üzerinde etkili çalışacağı unutulmamalıdır. 

ZFS çalışma şekli itibariyle kullandığınız donanım ne olursa olsun, ne şekilde güvenli olursa olsun kendi koruma sistemlerini kullanmayı tercih eder. Bu kapsamda her bir işlemini sağlama (checksums), parite hesaplama ve günlükleme (logging) ile kontrol altında tutar. Tüm bu kontrol işlemleri sisteme ek bir yük getirir. Konunun uzmanların önerdiği en önemli şey; kurumsal olarak çok önemli verilerin tutulduğu kritik görev sunucularında veya masaüstü bilgisayarınızda kişisel kullanım amaçlı kullanılacak bilgisayarlarda dahil olmak üzere ZFS dosya sisteminin kullanılması düşünülen tüm  bilgisayarlarda donanım ihtiyaçlarının çok iyi belirlenmesi gerektiğidir. İhtiyaç duyulacağının tespit edildiği anda, özellikle kurumsal çalışmalarda, donanım yükseltmesinin en hızlı şekilde yapılması ZFS sistemini kullanan her kişi ve kurum için zorunluluktur. Bu konuyu biraz açarak ZFS'nin donanımı nasıl ve ne şekilde kullanabileceğine bir bakalım.

ZFS'nin hafıza ve işlemci kullanımı ile ilgili olarak; standart bir ZFS sisteminin ve kullanımı tercihe bağlı olan özelliklerinin hafıza ve işlemci kullanımını etkileyen unsurlarının özetini aşağıdan okuyabilirsiniz.

  1. Önbellek Okuma : Diğer adıyla ARC. Bir ZFS pool'undaki her 1 TB için 1GB hafıza hesaplanır.
  2. Geçici Yazma Önbelleği : Gelen yazma istekleri, ZFS Intent Log (ZIL) 'a eklenmeden önce bu bölümde sıraya girerler ve sonrasında asıl dosya sistemine gönderilir. Genel olarak 200-500MB'lık büyüklüktedir ancak 1GB bir büyüklük tahmin edilmelidir.
  3. Sağlama (checksums) : ZFS pool'unda tutulan veri bloklarının tamamının sağlaması yapılır, ve tüm yazma ve okuma işlemlerinde bu sağlamalara göre hesaplamalar ve doğrulamalar yapılır. Tüm bu işlemler dikkate değer ölçüde işlemci ve hafıza kullanımına neden olur. Ne kadar hafıza kullanabileceğinin hesaplanması çok zordur.
  4. Parite Verisi : Eğer sabit diskleri RAID-Z yapılandırması ile kullanıyorsanız; ZFS RAID yapılandırmasında veri bütünlüğünü korumak amaçlı veri paritesi hesaplaması yapar ve bunu yaparken de hafızayı kullanır. Parite hesaplaması dikkate değer ölçüde işlemci ve hafıza kullanımına neden olur. Ek olarak standart veri sağlama hesaplama ve doğrulamaları da beraberinde gerçekleşir. Ne kadar hafıza kullanabileceğinin hesaplanması çok zordur.
  5. Tekilleştirme (Deduplication) Tablosu : Tekilleştirme birbirinin aynı olan verilerin disk üzerinde birden çok yazılmasını engelleyen bir sistem olarak basitçe anlatılabilir. Örneğin: Yedekleme sistemlerinde aynı verinin birden çok farklı zamanda alınmış yedeği olduğunu düşünelim tüm verileri tutmak ciddi bir disk alanına dolayısıyla maliyetli bir yatırım yapmamıza neden olur. Tekilleştirme iş te burada bize önemli avantajlar sağlar. Sadece veriler arasındaki değişim farklarını tutar. Böylece disk üzerinde daha az yer işgal eder. Ancak her güzelliğin bir de kötü yanı vardır. Tekilleştirme tablosunu tutmak ve bu tablolara göre hesaplama yapmak için hafıza üzerinde büyük bir alana ihtiyaç duyulur ve ayrıca bu alan disk üzerindeki önbellekleme alanında da tutulur. Tüm bu işlemler ciddi sistem yükü oluşturur. Zorunda kalmadıkça kullanılması önerilmemektedir. Kullanılacaksa da sistem üzerinde yüksek kapasitede hafıza kullanılması zorunluluk arz etmektedir. Tekilleştirme tamamen ayrı bir yazı konusu olabilecek kadar detaylar içermektedir. Daha detaylı bilgiye kaynaklar bölümündeki bağlardan yararlanarak ulaşabilirsiniz.
  6. Sıkıştırma (Compression) : Aynı tekilleştirme gibi amacı disk alanını mümkün olduğunca verimli kullanmak için geliştirilmiş, yazılan verinin sıkıştırılması özelliğidir. Sıkıştırma işlemleri işlemci ve hafıza kullanımına ek yük bindirir. Bir dosya bir defa sıkıştırılıp diske yazıldıktan sonra hafıza kullanımı bırakılır (tekilleştirmenin aksine); ta ki dosyanın tekrar yüklenmesi ve açılması işlemlerine kadar; bu noktada tekrar hesaplama ve hafızaya yükleme işlemleri gerçekleşirken işlemci kullanımı artar ve hafıza dolmaya başlar. ZFS sıkıştırma işleminde LZJB sıkıştırma algoritması en hızlı ve sistem kaynaklarını en az tüketen ve önerilen algoritmadır. Diğer bir sıkıştırma algoritması da GZIP'tir. Ancak sistem yükü açısından GZIP daha fazla sistem kaynağı tüketmektedir. GZIP algortimasının çok az işlem yapılan disk bölümlerinde kullanılması önerilebilir.

Ne kadar ram kullanmalıyım?
Açıkcası bu soruya tam cevap vermek mümkün değildir. Kullanabileceğiniz en yüksek hafızaya sahip olmak en iyisidir. Yaptığım araştırmalarda ortalama olarak 64k blok büyüklüğü kullanan bir ZFS alanında her bir 1TB disk alanı için 5GB civarında tekilleştirme verisinin hafızada tutulabileceği belirtilmiştir. ZFS otomatik olarak 1GB hafıza alanını da işletim sistemine bırakmaktadır. Bu noktada çok önemli birşeyden bahsetmek istiyorum. Veritabanları gibi hafıza üzerinde önbellekleme yapan uygulamalar içinde hafıza da yer açmak gerekmektedir. Böyle durumlarda ZFS'nin hafıza kullanımının sınırlandırılması ve diğer ihtiyaç duyan uygulamalara yer bırakılması bir zorunluluktur. Örneğin: Şu an işyerimde çalışan Oracle veritabanı sunucusunun üzerinde 48GB hafıza bulunmaktadır. (96GB'a çıkarılması planlanmaktadır.) Sizde kullanma şeklinize göre donanım ihtiyaçlarını belirlemek ve ZFS'yi yapılandırmanız gerekmektedir.


Lafı fazla uzatmadan kurulumumuza geçelim.

Kurulum

Kurulum Sistemi

Sanallaştırma: VirtualBox OSE
Hafıza : 2048
CPU: 2 çekirdek
Depolama: SATA Kontrolcü üzerinde 4x10GB sanal disk.
Kurulum imajı: FreeBSD-9.1-RELEASE-amd64-dvd1.iso


FreeBSD kurulum CD/DVD veya USB taşınabilir hazıfa ile sistemi açın.


Karşınıza gelen kurulum ekranından Install seçeneğini seçin ve devam edin.


Klavyenizi ön tanımlı olmayan bir klavye seçeneği ile değiştirmek isteyip istemediğiniz soruluyor. Biz Türkçe kullanacağımız için evet diyoruz.


Önümüze gelen klavye dil seçeneklerinden Turkish ISO-8859-9'u seçiyoruz. 

Bilgisayar adımızı giriyoruz. Ben fbsd olarak belirttim.


Bu ekranda da kurulacak olan sistem bileşenlerini seçiyoruz. Tavsiyem tümünü seçmeniz. 



Bölümleme ekranı. ZFS dosya sistemimizi oluşturacağımız kısım bu bölüm. Bu bölümde Shell seçeneğini seçiyoruz. 

Öncelikle sistem ve ZFS ile ilgili konularda birkaç şey söylemek istiyorum. Sisteme takılı toplam 4 disk bulunmakta. 3 tanesi SATA AHCI kontrolcü üzerinde SATA Diski, 1 tanesi de bir SSD disk olarak sistemde tanımlı. SSD diski önbellek alanı olarak kullanacağım. Diğer 3 diski gpt ile 3 parçaya bölümlendirip 1. bölümü freebsd-boot alanı olarak, 2. bölümü freebsd-swap alanı olarak, 3. bölümünde freebsd-zfs alanı olarak kullanacağım. 

Diskler
Disk Kullanım Açıklama
ada0 RAIDZ Raid 5 diski
ada1 RAIDZ Raid 5 diski
ada2 RAIDZ Raid 5 diski
ada3 ZFS Cache ZFS Önbellek diski

Disk Bölümleri
Disk Bölümü Bölüm Boyutu Açıklama
freebsd-boot 512KB Boot Bölümü
freebsd-swap 1G Takas Alanı
freebsd-zfs Kalan alan ZFS Alanı

freebsd-boot

FreeBSD birbirinden farklı disk bölümleme şemalarını desteklemektedir. Her disk bölümleme şeması farklı bir önyükleme (bootstrap) kodu kullanır.  Önyükleme kodu, her bir disk bölümleme şeması için kendine has bir disk alanında tutulur ve farklı boyutlarda olabilir. Bu bölüm 545KB'dan küçük olmalıdır. Bu çalışmada GPT bölümleme tablosu kullanıyoruz. Bu bölüme iki çeşit önyükleme kodu yazıla bilmektedir: /boot/gptboot ve /boot/gptzfsboot. İlki UFS dosya sisteminden açılış için kullanılır. Bu kod GPT bölümünü freebsd-ufs ile  tarar ve eğer bulursa üçüncü önyükleme aşamasını (/boot/loader) çalıştırır. /boot/gptzfsboot ise ZFS üzerinden sistemi açmayı sağlar. Bu kodda freebsd-zfs ile tarama yapar ve sistemi /boot/zfsloader ile başlatır.

Bu örnekte, ihtiyaç duyulması halinde sıkıntıya düşülmemesi için, 512KB'lık bir alan ayrılmıştır. Önyükleme kodu /boot/gptzfsboot olarak kullanılacaktır.

freebsd-swap

Sistem takas alanı olarak kullanılacak bölüm. Takas alanını ZFS üzerinde de tutabiliriz ancak yoğun hafıza kullanımını sonrası takas alanının dolması ile zaten hafızayı yoğun kullanan ZFS sisteminin ölümcül kilitlenme (deadlocks) durumuna düşmesi mümkündür. Bu kimsenin isteyeceği bir durum değildir. FreeBSD Wiki sayfasında da bu durum göz önüne alınarak takas alanı ZFS dışında tutulmuştur.

Bu kurulumda takas alanları bağımsız olarak ZFS dışında tutulacaktır.

freebsd-zfs

ZFS dosya sistemini tutan disk bölümüdür. Bu kurulumda diskin geri kalan bölümleri ZFS alanı olarak kullanılacaktır.

ZFS Dosya Sistemini Oluşturma

Öncelikle her disk için gpt şeması oluşturuyoruz.

NOT: Diskler sistemde SATA olarak görünmekte ve aygıt adı /dev dizini altında ada0, ada1, ada2, ve ada3 olarak bulunmakta. Kullandığınız sistemde disk adları farklı olabilir. Örn: SAS diskler da0 olarak sistemde görünmektedir. Aşağıdaki komutları kendi sisteminize göre uyarlayınız.

gpart create -s gpt ada0
gpart create -s gpt ada1
gpart create -s gpt ada2

Komut çıktısı aşağıdaki gibidir.
ada0 created
ada1 created
ada2 created

Her bir disk için ilk bölümler olan önyükleme alanı, takas alanını oluşturuyoruz sonrasında protective MBR ve gptzfsboot önyükleyicimizi sırayla tüm disklerimize kuruyoruz.

Önyükleme alanını oluşturuyoruz.
gpart add -s 512k -t freebsd-boot -l boot0 ada0
gpart add -s 512k -t freebsd-boot -l boot1 ada1
gpart add -s 512k -t freebsd-boot -l boot2 ada2


Komut çıktısı aşağıdaki gibidir.
ada0p1 added
ada1p1 added
ada2p1 added

Takas alanlarını oluşturuyoruz.

gpart add -s 1G -t freebsd-swap -l swap0 ada0
gpart add -s 1G -t freebsd-swap -l swap1 ada1
gpart add -s 1G -t freebsd-swap -l swap2 ada2


Komut çıktısı aşağıdaki gibidir.
ada0p2 added
ada1p2 added
ada2p2 added

ZFS disk bölümlerini oluşturuyoruz.

gpart add -t freebsd-zfs -l disk0 ada0
gpart add -t freebsd-zfs -l disk1 ada1
gpart add -t freebsd-zfs -l disk2 ada2

Komut çıktısı aşağıdaki gibidir.
ada0p3 added
ada1p3 added
ada2p3 added

Önyükleme kodunu ve korumalı MBR 'yi oluşturuyoruz.

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada2

Komut çıktısı aşağıdaki gibidir.
bootcode written to ada0
bootcode written to ada1
bootcode written to ada2

NOT: gpart show komutu ile disk bölümleme durumunu görebilirsiniz.

ZFS yapılandırmamız ve kullanabilmemiz için gerekli kernel modüllerini yüklüyoruz.

kldload opensolaris
kldload zfs

NOT: 4GB'dan düşük bellek kullanıyorsanız Prefetch öntanımlı etkisiz duruma geçmektedir. Tekrar aktif etmek için vfs.zfs.prefetch_disable=0 ayarını /boot/loader.conf dosyasına eklemeniz gerekmektedir. 

ZFS ve Dahili RAID

ZFS dosya sisteminin bize sunduğu en önemli özelliklerden birisi de dahili RAID desteğidir. Pahalı bir raid kartına ihtiyaç duymadan ZFS ile RAID yapılandırması yapabilir ve veri güvenliğini sağlayabiliriz. Aşağıda ZFS RAID disk gereksinimleri ve karşılaştırma tablosuna bakarak mevcut disk sayınıza göre hangi RAIDZ seçeneğini kullanabileceğinizi öğrenebilirsiniz.

ZFS RAID Seçenekleri
Disk Sayısı RAID Tipi Örnek Komut Açıklama
1 + 1 RAID 0 zpool create tank disk0 disk1 disk2 disk3
Parite yok.
1 disk bozulursa dosya yapısı bozulur.
Data güvenliği tehlikededir.
Kullanılması önerilmemektedir.
1 + 1 RAID 1 zpool create tank mirror disk0 disk1 Bir disk diğer diskin birebir klonu
olarak çalışır.
1 disk bozulsa da dosya sistemi
çalışmaya devam eder.
2 + 2 RAID 10 zpool create tank mirror disk0 disk1
zpool add tank mirror disk2 disk3
Veri güvenliği, yazma ve okuma
başarımı yüksektir.
Toplam disk alanının %50 si kaybedilir.
2 + 1 RAID 5 zpool create tank raidz disk0 disk1 disk2 disk3 Standart RAID 5'e göre
başarımı yüksektir.
1 disk bozulsa da dosya sistemi
çalışmaya devam eder.
(Tek pariteli)
3 + 2 RAID 6 zpool create tank raidz2 disk0 disk1 disk2 disk3 RAIDZ'ye göre
başarımı benzerdir.
2 disk bozulsa da dosya sistemi
çalışmaya devam eder.
(Çift pariteli)
3 + 3 RAIDZ3 zpool create tank raidz3 disk0 disk1 disk2 disk3 disk4 disk5 RAIDZ ve RAIDZ2 ile
başarımı benzerdir.
3 disk bozulsa da dosya sistemi
çalışmaya devam eder.
(Üç pariteli)
3 + 3 RAID 50 zpool create tank raidz disk0 disk1 disk2
zpool add tank raidz disk3 disk4 disk5
İç içe geçmiş RAID yapıları
ZFS içinde de kullanılabilir.
Yandaki örnek komut ile
iki raidz yapısı birbiriyle
striped olarak yapılandırılmıştır.
(Üç pariteli)


NOT: Disk sayıları önerilen minimum disk sayısı göz önüne alınarak verilmiştir. RAID hakkında detaylı bilgilere Wiki sayfalarından ulaşabilirsiniz.


Bu kurulum çalışmasında 3 disk bölümünü RAIDZ yapılandırması ile kullanacağız. Siz kendi donanım durumunuza göre yukarıdaki tablodaki örnekleri kullanarak zpool ile ZFS yapınızı oluşturabilirsiniz.


GPT disk bölümlerini oluştururken belirlediğimiz disk etiketlerinin tamamını /dev/gpt dizini altında görebilirsiniz.


ZFS depomuzu oluşturuyoruz. Depo adını tank olarak veriyorum. Siz istediğiniz ismi verebilirsiniz. Örn: tank, depo, zroot, zkarabas vs.


zpool create -f -m none -o altroot=/mnt -o cachefile=/tmp/zpool.cache tank raidz /dev/gpt/disk0 /dev/gpt/disk1 /dev/gpt/disk2



zpool status komutu ile ZFS çalışma durumunu gözlemleyebilirsiniz.


Artık ZFS depomuz hazır.

FreeBSD Kurulumu

İlk olarak ZFS dosya sistemi hiyerarşisini yapılandıracağız. Dosya hiyerarşisini oluştururken kendi isteğinize göre değişiklikler yapabilirsiniz. İnternet üzerinde oldukça fazla kaynak mevcuttur.


zfs set checksum=fletcher4 tank


NOT: fletcher4 sağlama algoritması fletcher2 algoritmasına göre daha sağlam bir yapı sunduğu belirtilmektedir. Bu örnekte de fletcher4 kullanılacaktır.

Temel bölümleri oluşturuyoruz.

zfs create -o mountpoint=/ tank/root
zfs create -o mountpoint=/usr tank/usr
zfs create -o mountpoint=/var tank/var
zfs create -o compression=on -o exec=on -o setuid=off -o mountpoint=/tmp tank/tmp
chmod 1777 /mnt/tmp


NOT: Sıkıştırma ayarları açık, kapalı, lzjb, gzip, gzip-N(N kısmı, 1 (en hızlı az sıkıştırma) 'den 9 (en iyi sıkıştırma) 'a kadar verilebilen gzip sıkıştırma değeridir. gzip yazdığınızda gzip-6'ya denk gelir.) ZFS alanı üzerinde sıkıştırma yapmak bazı gecikmelere neden olabilir. Bu nedenle sıkıştırmanın nispeten az erişilen alanlarda kullanılması önerilmektedir.



zfs create -o setuid=off -o mountpoint=/usr/home tank/usr/home 
zfs create tank/usr/local
zfs create -o compression=lzjb -o setuid=off tank/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off tank/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off tank/usr/ports/packages
zfs create -o compression=lzjb -o exec=on -o setuid=off tank/usr/src


zfs create -o compression=lzjb -o exec=off -o setuid=off tank/var/crash
zfs create -o exec=off -o setuid=off tank/var/db
zfs create -o compression=lzjb -o exec=on -o setuid=off tank/var/db/pkg
zfs create -o exec=off -o setuid=off tank/var/empty
zfs create -o compression=lzjb -o exec=off -o setuid=off tank/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off tank/var/mail
zfs create -o exec=off -o setuid=off tank/var/run
zfs create -o compression=lzjb -o exec=on -o setuid=off tank/var/tmp

chmod 1777 /mnt/var/tmp

zpool set bootfs=tank/root tank

Tüm ZFS dosya sistemi oluşturulduktan sonra exit ile tekrar kurulum bölümüne geçiyoruz.

Kurulum kaldığı yerden devam ediyor.

root şifresini belirliyoruz.

Yapılandıracağımız ağ aygıtımızı seçiyoruz. 

IPv4 yapılandırması kullanacağız evet diyoruz.

DHCP kullanıyorsanız evet, Statik IP kullanacaksanız hayır deyiniz. Ben DHCP ile IP atamasının yapılmasını tercih ettim.

IPv6 kullanmayacağım için hayır diyorum.

DNS ayarları. İstediğiniz DNS sunucularını kullanabilirsiniz.

Zaman ayarlarına geçiyoruz. Bu ekranda sistem saatinin UTC yani Greenwich saatine göre ayarlı olup olmadığı soruluyor. Ayarlıysa evet diyerek devam edebilirsiniz. Hayır diyerek devam ettim.



Zaman dilimini seçiyoruz : Europe / Turkey

Sistem açılışında çalışacak servisleri seçiyoruz. Tümünü seçtim.

Çökme dökümlerini etkinleştirmek isteyip istemediğimiz soruluyor. Ben iptal ettim. İstenirse daha sonra rc.conf dosyası içerisinden etkinleştirebilirsiniz.

Kullanıcı eklemek için evet diyoruz.

Kullanıcı ekliyorum.

Son yapılandırma. Herhangi bir değişiklik yapmayacağım için Exit ile çıkıyorum.

Elle yapılandırma isteyip istemediğimizi soruyor Hayır ( No ) diyerek devam ediyoruz.

Kurulumun tamamlandığı ve sistemi başlatabileceğimiz belirtiliyor. Ancak biz ZFS yapılandırmamızın son aşamalarını daha tamamlamadığımız için Live CD seçeneği ile devam ediyoruz. 

Sisteme root kullanıcı ile giriş yapın. Parola sormayacaktır.

Sırasıyla aşağıdaki işlemleri yapıyoruz. 

Disklerimiz üzerinde kurulum sırasında belirlediğimiz 3 swap alanını /mnt/etc/fstab dosyasına ekleyerek sisteme dahil edelim.

/mnt/etc/fstab dosyamızın içeriği aşağıdaki gibi görünecek şekilde düzenleyelim.

İPUCU: ee komutu ile kolayca dosyaları düzenleyebilirsiniz. Örneğin:

ee /mnt/etc/fstab

# Device Mountpoint FStype Options Dump Pass#
/dev/gpt/swap0 none swap sw 0 0
/dev/gpt/swap1 none swap sw 0 0
/dev/gpt/swap2 none swap sw 0 0

Aynı komutu kullanarak diğer dosyaları düzenliyoruz.
zfs'nin aktif olması için /mnt/etc/rc.conf dosyamıza aşağıdaki satırı ekliyoruz.

zfs_enable="YES"

Aşağıdaki satırları /mn/boot/loader.conf dosyasına ekliyoruz.

zfs_load="YES"
vfs.root.mountfrom="zfs:tank/root" 


zpool export tank
zpool import -o cachefile=/tmp/zpool.cache -o altroot=/mnt tank


cp /tmp/zpool.cache /mnt/boot/zfs/


Kurulum tamamlandı. Sistemi reboot komutu ile yeniden başlatıyoruz. Kurulum CD'sini çıkartmayı unutmayınız.



Sistemi yeniden başlatın. Artık ZFS dosya sistemli FreeBSD işletim sisteminiz kullanıma hazırdır.

Önbellek Diski 

Kurulumun bu aşamasında boşta duran ada3 SSD diskimizi ZFS okuma başarımını arttırmak için bir cache disk olarak depomuza ekliyoruz. Birden fazla cache diski sisteme ekleyebilirsiniz. cache disk olarak hızlı SSD disklerin tercih edilmesi önerilmektedir.


zpool add tank cache ada3

komutu ile ada3 SSD diskimizi önbellek kullanımı için ZFS sistemine ekledik. zpool status komutu ile durumu görebilirsiniz.

zpool status 


Faydalı bir kaç komut

İşinize yarayabileceğini düşündüğüm bir kaç komutu aşağıda belirttim.

zfs list

komutu ile sistemdeki zfs yapılandırmasını görebilirsiniz.

zpool list

Mevcut ZFS depolarını gösterir.

zpool status

ZFS alanlarını ve üzerindeki bölümlerin durum özetini verir. Bir sorun varsa buradan görebilirsiniz.

zpool history

ZFS deposu üzerindeki tüm değişiklik geçmişini görebilirsiniz.

zpool iostat 5

Her 5 saniyede bir I/O istatistiklerini verir. -v parametresi ile kullanırsanız detaylı çıktı verir. 

Son Notlar

Bu kurulum çok farklı ZFS dosya düzenleriyle de yapılabilirdi. Örneğin 2 - 3 veya daha fazla ZFS pool'u oluşturup farklı ayarlarla bölümler sisteme bağlanabilirdi. İlerleyen dönemde buna benzer bir örneği de burada sunabilirim. Kaynaklar bölümüne göz atmanızı tavsiye ederim. Güzel bilgilere ulaşabilirsiniz.

Belge Sürüm
1.1 FreeBSD 9.1 üzerine uyarlama. Eklenen notlar. Bazı komutların tekrar düzenlemeleri ve hata düzeltmesi.
1.0 İlk Sürüm

4 yorum:

  1. Elinize sağlık, ilgilenenler için çok hoş bir rehber olmuş gerçekten, bütün detaylara yer vermişsiniz.
    İzninizle de kaynak belirterek bsd-tr.org alanında da bu rehberinizi paylaştım.:)

    Kolaylıklar dilerim bu tür paylaşımlarınızı da dört gözle beklerim.
    İyi günler.

    YanıtlaSil
  2. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  3. İnternet sitelerinde türkçe zfs üzerine işletim sistemi kurulumunu arattırdığımda tatmin edici olarak 3 yada 4 site bulabildim. Makaleniz bir çok büyük şirketlere ve sorumlu kişilere ışık tutacak türden bende çok teşekkür ederim bu yazınızdan dolayı. UFS ile de kursak ne gibi mahsurları (avantajlar ve dezavantajlar) var acaba cevaplarsanız çok sevinirim.

    Efsal KEBABCIOGLU

    YanıtlaSil
    Yanıtlar
    1. Yorumunuz için teşekkür ederim. FreeBSD el kitabında Z dosya sistemi ile ilgili 3 önemli noktadan bahsediliyor.

      1.Veri Bütünlüğü: Tüm verilerin sağlama (Checksum) kaydı tutuluyor. ZFS dosyası okunduğunda tekrar bu kayıt kontrol ediliyor. Hata var ise düzeltiliyor. RAIDZ denilen dahili RAID özelliği ile veri güvenliği en yüksek seviyede sağlanabiliyor.
      2.Havuz tipi depolama: Fiziksel depolama alanları veri havuzuna dahil edilerek depolama alanı oluşturuluyor ve kullanıma sunuluyor. İhtiyaç halinde yeni bir fiziksel depolama alanı veri havuzuna eklenerek kapasite arttırılabiliyor ve bu işlem açıkcası çok kolay bir şekilde yapılabiliyor.
      3.Başarım (Performance): Çoklu ön bellekleme yeteneği sayesinde veri aktarım hızı oldukça iyi gerçekleşiyor. ARC, L2ARC ve ZIL gibi hafıza, sabit disk ve disk tabanlı eş zamanlı çalışan ön bellekleme teknolojileri ile bunlar gerçekleşiyor.

      ZFS'yi günlük kullanım içinde tercih edebilirsiniz. Ancak sistem kaynakları konusunda UFS'ye göre başarımı yüksek bir sistemde kullanılması daha faydalı olacaktır. Açıkcası UFS veya ZFS sizin kullanımda ihtiyaç duyacağınız özelliklere göre belirleniyor. Çok fazla disk I/O kullanımı olmayan sunucularda tamamen UFS kullanıyorum. Örneğin VMWare sanal makinesinde çalışan DNS sunucusunda UFS dosya sistemi var.

      Not: FreeBSD 10 ile artık kurulum esnasında ZFS on Root olarak sistemi kurabiliyorsunuz.

      ZFS ile ilgili bilgiye aşağıdaki bağlantıdan ulaşabilirsiniz.

      https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/zfs.html#zfs-differences

      Hasan Alp İNAN

      Sil