Mendalami ZFS tingkat lanjut: enkripsi dataset dengan AES-256-GCM, perawatan pool dengan scrub dan clear, serta monitoring zpool events dan iostat. Kalian juga akan belajar replikasi incremental dengan zfs send/receive serta tool sanoid dan syncoid untuk backup offsite yang otomatis.

Di episode 8 sebelumnya kalian sudah menguasai fondasi ZFS: pool, dataset, snapshot, dan boot environments. Sekarang kita naik level ke ZFS advanced: enkripsi, perawatan pool, dan replikasi — tiga pilar yang membedakan penyimpanan "sekedar jalan" dari penyimpanan yang siap produksi.
Enkripsi melindungi data saat media hilang atau dicuri. Scrub memastikan data yang kalian baca benar-benar utuh. Replikasi menjamin data tetap ada bahkan saat mesin utama hancur. Mari kita bedah ketiganya.
ZFS mendukung enkripsi native per dataset dengan algoritma modern. Pilihan default yang kuat adalah AES-256-GCM. Data dienkripsi sebelum ditulis ke disk, dan kunci disimpan terpisah — tanpa kunci, data tetap terenkripsi penuh.
Kunci ditentukan saat dataset dibuat, melalui passphrase:
zfs create -o encryption=aes-256-gcm -o keyformat=passphrase tank/secretSetelah reboot, dataset tidak otomatis ter-mount karena kuncinya belum dimuat. Kalian perlu memuat kunci dulu:
zfs load-key tank/secret
zfs mount tank/secretInfo
Enkripsi ZFS bersifat per dataset, bukan per pool. Kalian bisa mencampur dataset terenkripsi dan tidak dalam satu pool. Ingat: dataset anak mewarisi property enkripsi dari orang tuanya kecuali ditimpa secara eksplisit.
Untuk memuat kunci saat boot, gunakan zfs load-key -L dengan lokasi kunci yang di-mount:
zfs load-key -L file:///root/keys/secret.key tank/secretAlternatif yang aman adalah memuat kunci dari console secara interaktif saat boot. Jangan pernah menyimpan passphrase di dataset yang sama dengan data yang dienkripsi.
Enkripsi bekerja bersama snapshot dan replikasi dengan mulus — snapshot dari dataset terenkripsi tetap terenkripsi, dan zfs send mengirim data terenkripsi. Data di sisi penerima tetap terproteksi sampai kunci dimuat.
Danger
Jika kunci passphrase hilang, data terenkripsi ZFS tidak bisa dipulihkan dengan cara apapun. Simpan kunci atau passphrase di tempat aman yang terpisah dari sistem, dan uji pemulihan kunci secara berkala.
zpool status adalah perintah pertama saat mencurigai masalah:
zpool statusPerhatikan kolom STATE dan READ/WRITE/CKSUM. Nilai bukan nol menandakan potensi masalah disk atau kabel.
Scrub membaca semua data di pool dan membandingkannya dengan checksum:
zpool scrub tank
zpool statusScrub menemukan bit-rot sebelum data yang rusak dipakai. Jadwalkan scrub berkala — misalnya bulanan — dan pantau hasilnya.
Success
Scrub adalah asuransi kesehatan data. ZFS bisa memperbaiki kerusakan otomatis jika ada redundancy (mirror atau RAID-Z); tanpa redundancy, scrub setidaknya memberi tahu kalian bahwa ada masalah lebih awal.
Jika zpool status menampilkan kesalahan transient, bersihkan dengan zpool clear:
zpool clear tankJika sebuah disk benar-benar rusak, ganti dengan zpool replace:
zpool replace tank /dev/ada1 /dev/ada4Setelah penggantian, ZFS otomatis me-resilver (membangun ulang) data ke disk baru. Jangan tergesa-gesa memutus aliran listrik saat resilver berjalan.
zpool events menampilkan riwayat event ZFS untuk diagnosis:
zpool events
zpool events -v | tail -20Dan untuk statistik performa I/O:
zpool iostat -v tank 1
zfs listzfs send mengirim snapshot, zfs receive menerimanya. Untuk transfer yang efisien, kirim hanya perbedaan antar snapshot:
zfs snapshot tank/data@daily
zfs send -i tank/data@yesterday tank/data@daily | ssh backup zfs receive backup/data-i (incremental) mengirim perubahan antara snapshot yesterday dan daily saja. Ini menghemat bandwidth dan waktu secara dramatis untuk data besar.
Sering kali replikasi ditujukan ke mesin backup di lokasi lain:
zfs send tank/data@baseline | ssh backup "zfs receive -F backup/data"Atur SSH key untuk backup agar proses berjalan non-interaktif. Untuk keamanan lebih, aktifkan property readonly=on di dataset target.
Membuat snapshot dan replikasi manual itu melelahkan. Sanoid mengotomatiskan snapshot terjadwal, dan syncoid memudahkan replikasi:
pkg install sanoidSanoid dikonfigurasi lewat /usr/local/etc/sanoid/sanoid.conf. Contoh untuk dataset tank/data:
[tank/data]
frequent = 12
hourly = 24
daily = 7
monthly = 3Dan replikasi dengan syncoid:
syncoid tank/data backup:/backup/dataInfo
Kombinasi sanoid untuk snapshot lokal, syncoid untuk replikasi remote, dan scrub bulanan membentuk strategi backup yang solid: data selalu punya versi, selalu punya salinan offsite, dan integritasnya selalu diverifikasi.
Di episode 9 ini kalian sudah mendalami ZFS advanced: enkripsi dataset AES-256-GCM dengan load-key dan mount, perawatan pool dengan scrub, clear, dan replace, monitoring dengan events dan iostat, replikasi incremental dengan zfs send -i, serta otomatisasi sanoid dan syncoid.
Inti yang harus dibawa pulang:
zpool replace.zfs send -i menghemat bandwidth untuk backup harian.Di episode 10 selanjutnya kita akan membahas networking & network configuration — konfigurasi interface di rc.conf, perintah ifconfig dan route, resolv.conf, serta fitur lanjutan seperti VLAN, lagg, bridge, jumbo frames, dan pengenalan firewall pf dan ipfw.