ZFS Nedir?
ZFS klasik anlamda bir dosya sistemi değildir. Disk yönetimi, RAID mantığı, veri bütünlüğü ve hata kontrolünü tek bir yapı altında toplar. Bu yüzden ZFS kullanan bir sistemde disk, raid ve filesystem kavramları ayrı ayrı düşünülmez.
ZFS’in temel yaklaşımı şudur
Veri yazıldığı anda kontrol edilir, okunduğunda doğrulanır ve disk kaynaklı hatalar mümkün olan en erken aşamada tespit edilir.
Bu yazı, Proxmox VE üzerinde ZFS altyapısını veri kaybı ve performans hatası yapmadan, şifreli ve VM uyumlu şekilde kuracağız.

Fiziksel Disklerin Hazırlanması
ZFS, disklerin ham (raw) olmasını ister. Daha önceden üzerinde partition kalmış veya başka bir RAID yapısında kullanılmış diskler, havuz kurulumunda metadata çakışması yaratabilir.
Önce Proxmox arayüzüne girelim ve ilgili node’u seçelim. Ardından disk listesine geçelim.
Node → Disks
Kullanacağınız her bir diski seçip Wipe Disk diyerek üzerindeki tüm eski bölümleme tablolarını temizleyelim.
ZFS Havuzu Oluşturma Ekranını Açalım
Diskler hazırsa ZFS sihirbazını başlatalım. Node → Disks → ZFS → Create ZFS Bu ekranda havuz yapılandırmasını birlikte yapacağız.

ZFS Pool Oluşturma
Diskler hazırsa artık ZFS Pool katmanına geçelim. Pool, ZFS’in fiziksel diskleri birleştirdiği temel yapıdır.
Node → Disks → ZFS → Create: ZFSPool Name ZFS havuzumuzun adı olacak. Sonradan datastore olarak da kullanacağımız için anlamlı bir isim seçelim.
RAID Level en az 4 disk gerektirir. 2 disk aynı anda bozulsa dahi veri kaybı yaşanmaz
Compression işlemciye yük bindirmeden ciddi yer kazancı sağlar. Mutlaka açık bırakılmalıdır.
ashift güncel SSD ve HDD’lerin çoğu 4K sektör kullanır. ashift=12 ayarı, disk sektörleri ile dosya sistemini hizalayarak performans kaybını önler.

Kurulum Sonrası Kontrolleri Yapalım
Havuz oluşturulduktan sonra shell açalım ve kontrollerimizi yapalım.
Node → ShellZpool durumunu görelim
zpool statusSıkıştırma oranını kontrol edelim
zfs get compressratio tankDosya sisteminin mount edildiğini doğrulayalım
df -hBu kontroller sonunda havuzumuzun sağlıklı şekilde çalıştığından emin olalım.
ZFS Dataset Yapısını Oluşturalım
ZFS’te veriler doğrudan pool’a yazılmaz. Dataset katmanını kullanalım. Şimdi şifreli bir dataset oluşturalım. Önce anahtar dosyası için dizin oluşturalım
mkdir -p /root/zfskeys<br>chmod 700 /root/zfskeysAnahtar dosyasını üretelim
head -c 32 /dev/urandom > /root/zfskeys/secure.key<br>chmod 600 /root/zfskeys/secure.keyŞifreli dataset’i oluşturalım
zfs create \<br>-o encryption=on \<br>-o keyformat=raw \<br>-o keylocation=file:///root/zfskeys/secure.key \<br>tank/secureDurumunu kontrol edelim
zfs get encryption,keystatus tank/secureBu noktadan sonra oluşturulan ZFS dataset yapısı, tek node kurulumlarının yanı sıra Proxmox VE Cluster ortamlarında da sorunsuz şekilde kullanılabilir. Eğer birden fazla node ile çalışan bir altyapı planlanıyorsa, öncesinde Proxmox VE Cluster kurulumunun doğru şekilde yapılmış olması gerekir.
VM’ler İçin Alt Dataset Oluşturalım
VM disklerini doğrudan parent dataset’e yazmayalım. Alt dataset kullanalım.
zfs create tank/secure/vmdatatank/secure şifreliyse, vmdata otomatik olarak şifreli olur. Ek ayar yapmamıza gerek kalmaz.
Şifreli Dataset’i Proxmox Storage Olarak Ekleyelim
Şimdi tekrar arayüze dönelim.
Datacenter → Storage → Add → ZFSBu ekranda
- Storage ID: secure-zfs
- Pool: tank
- Content: Disk image, Container
- Nodes: ilgili node
Kaydedelim. Artık Proxmox bu alanı VM diskleri için kullanabilir.
VM Disklerini Şifreli Alana Taşıyalım
Mevcut VM’ler varsa disklerini taşıyalım.
VM → Hardware → Disk → Move StorageTarget Storage olarak secure-zfs seçelim ve işlemi başlatalım. Bu işlem sırasında VM çalışmaya devam eder. Disk yeni şifreli dataset üzerine taşınır.

Disk Arızası ve Reboot Davranışı
RAIDZ2 kullandığımız için bir disk arızasında havuz DEGRADED duruma geçer ancak çalışmayı sürdürür. Veri kaybı yaşanmaz.

Disk geri takıldığında ZFS, manuel işlem gerektirmeden resilver sürecini otomatik olarak başlatır. Bu süreçte sağlam disklerden eksik bloklar yeniden oluşturulur.
zpool statusResilver işlemi tamamlandığında havuz durumu tekrar ONLINE olur.

Sistem reboot edildiğinde, dataset şifrelemesi keyfile ile yapılandırıldığı için ZFS dataset otomatik olarak açılır. Ek bir zfs load-key komutuna gerek kalmaz
