ZFS Nedir?
ZFS klasik anlamda bir dosya sistemi değildir. Disk yönetimi, RAID mantığı ve veri bütünlüğü süreçleri tek bir yapı altında birlikte çalışır. Bu yüzden ZFS kullanan sistemlerde bu kavramlar ayrı ayrı ele alınmaz.
ZFS’in temel yaklaşımı şudur.
Veri diske yazıldığı anda doğrulanır, okuma sırasında tekrar kontrol edilir ve disk kaynaklı hatalar erken aşamada tespit edilir.
Bu yazı kapsamında Proxmox VE üzerinde ZFS altyapısını, veri kaybı ve performans sorunu yaşamadan, şifreli ve VM uyumlu şekilde kuracağız.

Havuz Öncesi Disk Temizleme İşlemi
ZFS havuzu oluşturulmadan önce disklerin tamamen temiz olması gerekir. Daha önce bölümlendirilmiş veya farklı RAID yapılarına dahil edilmiş diskler metadata sorunlarına yol açabilir.
Önce Proxmox arayüzüne giriş yapalım ve node’u seçelim. Ardından disk listesine geçelim.
Node → Disks
Her diski ayrı ayrı seçerek Wipe Disk işlemiyle eski bölümleme ve metadata bilgilerini temizleyelim.
ZFS Havuzu Oluşturma Ekranını Açalım
Disk hazırlığı tamamlandığında ZFS sihirbazını başlatalım.
Node → Disks → ZFS → Create ZFS
Bu ekranda havuz ayarlarını yapılandıracağı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.
Dataset Katmanına Geçiş
ZFS’te veriler doğrudan pool’a yazılmaz. Veri yönetimi dataset katmanı üzerinden yapılır. Bu katman, şifreleme, kota ve performans ayarlarının ayrı ayrı uygulanmasını sağlar.
Bu adımda şifreli bir dataset oluşturacağız. İşleme başlamadan önce şifreleme anahtarının tutulacağı dizini hazırlayalı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/secureOluşturulan ZFS dataset yapısı, standalone node kurulumlarının yanı sıra Proxmox VE Cluster kullanılan ortamlarda da problemsiz çalışır. Eğer altyapı birden fazla node üzerinden çalışacaksa, Proxmox VE Cluster kurulumunun önceden 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.
ZFS Dataset’in Proxmox’a Entegrasyonu
Ş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.

RAIDZ2 ve Havuzun Çalışma Sürekliliği
RAIDZ2 yapılandırması, bir disk arızasında havuzun DEGRADED duruma düşmesini sağlar ancak çalışmayı durdurmaz. Bu senaryoda veri kaybı oluşmaz.

Disk tekrar sisteme takıldığında ZFS, herhangi bir manuel müdahaleye gerek kalmadan resilver sürecini otomatik olarak başlatır. Bu süreçte eksik bloklar sağlam diskler üzerinden 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