Menguasai fondasi ZFS di FreeBSD: konsep pool dan vdev, pembuatan pool dengan zpool create, dataset dan properties seperti compression, dedup, dan checksum. Kalian juga akan belajar snapshot, rollback, clone, zfs send/receive untuk replikasi, dan boot environments dengan bectl.

Di episode 7 sebelumnya kalian sudah memahami filesystem FreeBSD dan cara mount. Sekarang kita masuk ke salah satu alasan terbesar orang memilih FreeBSD: ZFS. Kombinasi volume manager dan filesystem dalam satu lapisan membuat ZFS mengubah cara kalian berpikir tentang data.
ZFS bukan sekadar filesystem — dia adalah sistem manajemen data dengan checksum end-to-end, snapshot instan, compression bawaan, dan pooling multi-disk. Episode ini membangun fondasinya: pool, vdev, dataset, properties, lalu snapshot, clone, replikasi, dan boot environments.
Pool adalah kumpulan ruang penyimpanan dari satu atau lebih disk yang dikelola ZFS. Kalian membuat pool dengan zpool create:
zpool create tank /dev/ada1
zpool statusPool bernama tank di atas adalah contoh klasik. Nama pool bebas, tapi pilih yang deskriptif dan singkat.
Di dalam pool, penyimpanan diorganisasi menjadi vdev (virtual device). Jenis vdev menentukan cara data didistribusikan:
zpool create tank mirror /dev/ada1 /dev/ada2Mirror adalah titik awal yang bagus untuk belajar dan produksi kecil. RAID-Z2 cocok untuk kapasitas besar dengan toleransi dua disk gagal.
Warning
Struktur vdev tidak bisa diubah setelah pool dibuat — vdev hanya bisa ditambah, tidak dikurangi atau diubah jenisnya. Putuskan dengan matang sejak awal, karena menambah satu vdev ke pool existing tidak menambah redundancy pool secara keseluruhan.
Dataset adalah unit logika di dalam pool yang bisa di-mount, diberi property, dan di-snapshot. Dataset diciptakan dengan zfs create:
zfs create tank/data
zfs create tank/data/www
zfs listDataset membentuk hierarki seperti direktori — tank/data/www adalah anak dari tank/data. Setiap dataset bisa punya property dan snapshot sendiri.
Properties adalah parameter yang mengontrol perilaku dataset atau pool.
Compression ZFS hemat ruang dengan overhead minimal:
zfs set compression=lz4 tank/data
zfs get compression tank/datalz4 adalah pilihan modern: cepat dan efisien. Untuk data yang sangat bisa dikompres, zstd (episode 9) menawarkan rasio lebih tinggi.
Checksum ZFS terpasang secara default dan tidak perlu diaktifkan — setiap blok data diverifikasi saat baca. Dedup berbeda: fitur ini menyimpan satu salinan blok yang identik, sangat hemat tapi memakan banyak memori:
zfs get checksum tank
zfs get dedup tankInfo
Dedup ZFS bekerja per blok, bukan per file, sehingga hematnya nyata. Namun dedup membutuhkan memori (DRAM atau SSD L2ARC) yang besar — untuk kebanyakan sistem, compression lz4 sudah memberikan hasil hampir serupa dengan risiko jauh lebih kecil.
Beberapa property yang sering diutak-atik:
zfs get mountpoint,atime,recordsize tank/dataatime=off mengurangi write pada akses baca, recordsize mengontrol ukuran blok (dibahas episode 18), dan mountpoint menentukan lokasi mount dataset.
Snapshot adalah gambar instan dari dataset pada satu waktu, tanpa menyalin data:
zfs snapshot tank/data@before-upgrade
zfs list -t snapshotSnapshot adalah cara paling murah untuk membuat titik pemulihan. Membuatnya instan dan hampir tidak makan ruang sampai ada perubahan data.
Untuk kembali ke kondisi snapshot:
zfs rollback tank/data@before-upgradezfs rollback menghapus semua perubahan setelah snapshot. Snapshot yang lebih baru dari target akan dihapus, jadi gunakan dengan hati-hati.
Clone adalah dataset baru yang dimulai dari snapshot, berbagi blok data dengan sumbernya:
zfs clone tank/data@before-upgrade tank/dev
zfs listClone sangat berguna untuk lingkungan pengembangan — membuat salinan instan tanpa menggandakan data.
Snapshot bisa dikirim ke mesin lain untuk backup atau replikasi:
zfs send tank/data@before-upgrade | ssh backup-host zfs receive backup/dataReplikasi incremental dilakukan dengan mengirim hanya perbedaan antara dua snapshot (detail di episode 9). Ini adalah fondasi disaster recovery yang andal.
Boot environments adalah fitur yang membuat FreeBSD + ZFS sangat kuat untuk update. Setiap boot environment adalah snapshot dari sistem root yang bisa di-boot. Jika update gagal, kalian tinggal boot ke environment lama.
bectl list
bectl create sebelum-update
bectl activate sebelum-updateSuccess
Sebelum menjalankan freebsd-update atau upgrade besar, buat boot environment dulu dengan bectl create. Jika terjadi masalah, reboot dan pilih environment lama dari menu boot — sistem kembali normal tanpa drama.
Beberapa kebiasaan yang menjaga pool tetap sehat:
zpool scrub secara berkala (episode 9).zpool status secara rutin.zpool status
zfs list
bectl listDi episode 8 ini kalian sudah menguasai fondasi ZFS: pool sebagai wadah, vdev untuk organisasi penyimpanan, dataset sebagai unit logika, properties seperti compression, checksum, dan dedup, serta snapshot, rollback, clone, replikasi send/receive, dan boot environments dengan bectl.
Inti yang harus dibawa pulang:
zpool create; struktur vdev tidak bisa diubah setelahnya.zfs send/receive memungkinkan replikasi; bectl mengelola boot environments.Di episode 9 selanjutnya kita akan membahas ZFS advanced — encryption dataset dengan AES-256-GCM, perawatan pool dengan scrub dan clear, monitoring, serta replikasi incremental dan tool seperti sanoid dan syncoid untuk backup otomatis.