Belajar FreeBSD - ZFS Advanced: Encryption, Scrub & Replication
Episode 9 of 23

Belajar FreeBSD - ZFS Advanced: Encryption, Scrub & Replication

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.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

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.

Enkripsi Dataset ZFS

Konsep dan Algoritma

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.

Membuat Dataset Terenkripsi

Kunci ditentukan saat dataset dibuat, melalui passphrase:

Membuat dataset terenkripsi
zfs create -o encryption=aes-256-gcm -o keyformat=passphrase tank/secret

Setelah reboot, dataset tidak otomatis ter-mount karena kuncinya belum dimuat. Kalian perlu memuat kunci dulu:

Memuat kunci dan mount
zfs load-key tank/secret
zfs mount tank/secret

Info

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.

Mount Otomatis dengan Loader

Untuk memuat kunci saat boot, gunakan zfs load-key -L dengan lokasi kunci yang di-mount:

Memuat kunci dari file saat boot
zfs load-key -L file:///root/keys/secret.key tank/secret

Alternatif yang aman adalah memuat kunci dari console secara interaktif saat boot. Jangan pernah menyimpan passphrase di dataset yang sama dengan data yang dienkripsi.

Enkripsi dan Snapshot

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.

Perawatan Pool ZFS

Memeriksa Status

zpool status adalah perintah pertama saat mencurigai masalah:

Memeriksa status pool
zpool status

Perhatikan kolom STATE dan READ/WRITE/CKSUM. Nilai bukan nol menandakan potensi masalah disk atau kabel.

Scrub: Memvalidasi Semua Data

Scrub membaca semua data di pool dan membandingkannya dengan checksum:

Menjalankan scrub
zpool scrub tank
zpool status

Scrub 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.

Clear dan Perbaikan

Jika zpool status menampilkan kesalahan transient, bersihkan dengan zpool clear:

Membersihkan status error
zpool clear tank

Jika sebuah disk benar-benar rusak, ganti dengan zpool replace:

Mengganti disk yang rusak
zpool replace tank /dev/ada1 /dev/ada4

Setelah penggantian, ZFS otomatis me-resilver (membangun ulang) data ke disk baru. Jangan tergesa-gesa memutus aliran listrik saat resilver berjalan.

Monitoring Events

zpool events menampilkan riwayat event ZFS untuk diagnosis:

Melihat event ZFS
zpool events
zpool events -v | tail -20

Dan untuk statistik performa I/O:

Melihat statistik I/O
zpool iostat -v tank 1
zfs list

Replikasi Incremental

Konsep Send/Receive

zfs send mengirim snapshot, zfs receive menerimanya. Untuk transfer yang efisien, kirim hanya perbedaan antar snapshot:

Replikasi incremental
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.

Replikasi Remote

Sering kali replikasi ditujukan ke mesin backup di lokasi lain:

Replikasi penuh ke mesin remote
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.

Otomatisasi dengan Sanoid dan Syncoid

Membuat snapshot dan replikasi manual itu melelahkan. Sanoid mengotomatiskan snapshot terjadwal, dan syncoid memudahkan replikasi:

Menginstal sanoid
pkg install sanoid

Sanoid dikonfigurasi lewat /usr/local/etc/sanoid/sanoid.conf. Contoh untuk dataset tank/data:

Contoh konfigurasi sanoid
[tank/data]
    frequent = 12
    hourly = 24
    daily = 7
    monthly = 3

Dan replikasi dengan syncoid:

Mereplikasi dengan syncoid
syncoid tank/data backup:/backup/data

Info

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.

Penutup

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:

  • Enkripsi ZFS per dataset dengan AES-256-GCM; kunci wajib dimuat sebelum mount.
  • Simpan passphrase di tempat aman terpisah — data terenkripsi tanpa kunci tidak bisa dipulihkan.
  • Scrub berkala menjaga integritas data; ganti disk rusak dengan zpool replace.
  • Replikasi incremental zfs send -i menghemat bandwidth untuk backup harian.
  • Sanoid + syncoid mengotomatiskan snapshot dan replikasi offsite.

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.