Episode ini memaksimalkan ZFS: special vdev untuk metadata, L2ARC dan SLOG, tuning recordsize, dataset tiering hybrid flash dan HDD, serta pengaturan ARC size, kompresi zstd, dan dedup. Kalian juga belajar performance monitoring dengan zpool iostat dan zpool status.

ZFS punya banyak fitur yang belum tersentuh pada penggunaan dasar. Episode 17 ini membahas advanced ZFS: bagaimana memanfaatkan SSD untuk metadata dan cache, menyesuaikan ukuran blok, menyusun tiering antara flash dan HDD, serta mengatur ARC, kompresi, dan dedup dengan bijak.
Tujuan akhirnya bukan sekadar membuat sistem terlihat cepat, melainkan memahami kompromi setiap opsi. Cache SSD tidak membantu jika workload tidak cocok. Dedup bisa menghabiskan RAM jika diterapkan sembarangan. Pengetahuan ini yang membedakan pengguna ZFS dan administrator ZFS.
Di akhir episode ini kalian akan bisa memasang special vdev, mengonfigurasi L2ARC dan SLOG, men-tune recordsize, memahami dataset tiering, mengatur ARC, memakai zstd, dan memutuskan kapan dedup layak digunakan.
Special vdev (sVDEV) menyimpan metadata dan small blocks secara terpisah, biasanya di SSD. Karena operasi seperti pembuatan file dan listing direktori bergantung pada metadata, memindahkannya ke media cepat meningkatkan respons drastis.
zpool add tank special /dev/nvme0n1Perintah zpool add tank special menambahkan SSD sebagai special vdev. Setelah dipasang, metadata pool berpindah ke sana; disk HDD utama fokus pada data besar.
Special vdev bukan cache — jika gagal, metadata ikut hilang dan pool bisa tidak dapat diakses. Karena itu, gunakan mirror untuk special vdev dan pastikan SSD berkualitas enterprise. Ini bukan tempat untuk SSD murahan.
L2ARC adalah cache baca kedua di atas SSD atau NVMe yang mempercepat akses data yang sering dibaca tapi tidak muat di RAM. Berbeda dengan ARC di RAM, L2ARC bisa jauh lebih besar.
zpool add tank cache /dev/nvme1n1Perintah zpool add tank cache menambahkan device sebagai L2ARC. Ingat: L2ARC tetap memakan RAM untuk indeks metadata-nya, jadi keuntungannya harus lebih besar dari biaya RAM.
SLOG menangkap intent log untuk mempercepat synchronous write, seperti yang dibahas di episode 3. SLOG bukan cache data; jika hilang, data tetap aman karena intent bisa dibangun ulang. Gunakan SSD dengan power-loss protection.
zpool add tank log /dev/nvme2n1Perintah zpool add tank log menambahkan device sebagai SLOG. Fokusnya adalah latensi fsync, bukan kapasitas besar.
recordsize menentukan ukuran blok logis dataset. Nilai default 128k baik untuk file umum, tetapi workload spesifik mendapat manfaat dari penyesuaian.
zfs create -o recordsize=16k tank/data/db
zfs create -o recordsize=1m tank/data/mediaPerintah di atas membuat dataset db dengan recordsize 16k untuk database, dan media dengan 1m untuk file besar. Aturan praktis: database kecil, media besar, file biasa tetap 128k.
Recordsize hanya memengaruhi file baru; file yang sudah ada tetap pada ukuran blok lama. Tetapkan recordsize saat dataset dibuat, atau lakukan copy ulang data jika ingin menerapkan nilai baru.
Dataset tiering adalah konsep menempatkan data pada media dengan karakteristik berbeda: hot data di SSD berkecepatan tinggi, cold data di HDD kapasitas besar. TrueNAS Enterprise menghadirkan fitur tiering, dan di homelab kalian bisa mensimulasikannya dengan dataset terpisah per media.
zfs create ssd-pool/hot
zfs create hdd-pool/archivePerintah di atas membuat dataset di dua pool berbeda. Kebijakan manual seperti ini memberi kontrol penuh atas penempatan data tanpa bergantung pada fitur otomatis.
Fitur tiering otomatis di TrueNAS SCALE Enterprise mengotomatiskan perpindahan ini. Untuk homelab, skrip rsync terjadwal bisa melakukan hal serupa.
ARC (Adaptive Replacement Cache) memakai RAM untuk cache baca. ZFS secara default memakai sebagian besar RAM, yang bisa mengganggu aplikasi lain. Batasi ARC bila perlu, tetapi berikan ruang cukup untuk workload storage.
arc_summaryPerintah arc_summary menampilkan statistik ARC: hit rate, ukuran, dan jumlah memory yang dipakai. Data ini menjadi dasar keputusan menaikkan atau menurunkan RAM.
zstd adalah kompresi modern yang cepat dan efektif. Aktifkan untuk hampir semua data; kecuali data sudah terkompresi seperti video dan arsip, yang justru boros CPU tanpa penghematan berarti.
zfs set compression=zstd tank/dataPerintah zfs set compression=zstd mengaktifkan kompresi pada dataset. Verifikasi efektivitasnya lewat rasio kompresi yang ditampilkan per dataset.
Dedup menghapus blok data yang identik, sangat berguna untuk data yang banyak duplikatnya seperti snapshot VM dan backup. Namun dedup membutuhkan DDT (dedup table) di RAM; aturan praktisnya sekitar 5 GB RAM per terabyte data deduplicated.
zfs set dedup=on tank/data/vmPerintah zfs set dedup=on mengaktifkan dedup. Gunakan dengan sangat hati-hati: salah perhitungan RAM bisa menurunkan performa drastis.
Dedup layak jika data benar-benar sangat duplikat dan RAM cukup. Sebelum mengaktifkan, hitung ruang yang bisa dihemat dari rasio duplikasi aktual. Untuk sebagian besar homelab, dedup lebih sering merugikan daripada menguntungkan.
Pantau I/O pool untuk memvalidasi tuning:
zpool iostat -v 5Perintah zpool iostat -v 5 menampilkan throughput dan I/O per detik per vdev, diperbarui setiap 5 detik. Ini alat utama melihat apakah sVDEV, L2ARC, atau SLOG benar-benar membantu.
Warning
Special vdev bukan cache dan bukan pengganti backup. Karena berisi metadata, kegagalannya bisa membuat pool tidak terbaca. Selalu pasang special vdev sebagai mirror dan hindari perangkat tanpa reputasi enterprise.
Di episode 17 ini kalian sudah mendalami ZFS: special vdev untuk metadata, L2ARC dan SLOG, tuning recordsize, dataset tiering, pengaturan ARC, kompresi zstd, dedup, dan performance monitoring dengan zpool iostat.
Inti yang harus dibawa pulang:
Di episode 18 selanjutnya kita akan membahas applications dan containerization — dari TrueNAS Apps, Docker dan Portainer, Helm, hingga container Plex, Nextcloud, Vaultwarden, dan Gitea dengan resource limits, plus plugin Docker dan KVM di OpenMediaVault. ZFS sudah optimal, sekarang saatnya mengisi NAS dengan aplikasi.