Belajar Linux Filesystem - Advanced ZFS (OpenZFS 2.4)
Episode 14 of 23

Belajar Linux Filesystem - Advanced ZFS (OpenZFS 2.4)

OpenZFS 2.4 membawa lompatan besar: BRT untuk dedup cepat, RAIDZ expansion yang stabil, AnyRaid, dan quotas default. Episode ini juga membahas special vdev, zfs rewrite, serta tuning recordsize dan ashift untuk performa maksimal.

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

Pendahuluan

OpenZFS telah berevolusi jauh melampaui warisan Sun. Rilis 2.4 (dengan 2.4.3 sebagai versi terbaru per penulisan series ini) membawa fitur yang selama bertahun-tahun hanya menjadi impian: deduplication yang cepat berkat BRT, RAIDZ expansion yang stabil, dan fleksibilitas layout AnyRaid.

Episode 14 ini membahas fitur-fitur OpenZFS 2.4 secara praktis, lalu masuk ke teknik tuning level lanjut: special vdev, zvol, zfs rewrite, serta recordsize dan ashift. Tujuan akhirnya: kalian bisa memanfaatkan fitur terbaru ZFS tanpa tersandung isu yang belum matang.

Seperti biasa, eksperimen dijalankan di pool lab dengan disk image loopback.

BRT: Deduplication Cepat

Masalah Dedup Klasik

Deduplication di ZFS lama memakai DDT (dedup table) yang menelan RAM sangat besar dan membuat tulis melambat drastis. Untuk itulah banyak admin menghindari dedup=on sama sekali.

Block Reference Table

BRT (Block Reference Table) adalah implementasi baru yang mereferensikan blok yang sama dengan overhead jauh lebih kecil. Dedup kini realistis untuk beban yang mengandung banyak data berulang — misalnya backup dan VM template:

Aktifkan dedup dengan BRT
sudo zpool create -O dedup=on labpool mirror /dev/loop0 /dev/loop1

Dengan dedup aktif, tulis duplikat hanya menambah referensi, bukan data baru. Cek penghematan dengan zpool status dan zpool get dedupratio:

Lihat rasio dedup
zpool get dedupratio labpool

Perintah zpool get dedupratio menampilkan rasio penyimpanan yang berhasil dihemat — nilai di atas 2 berarti data hanya setengah dari ukuran logisnya.

RAIDZ Expansion dan AnyRaid

RAIDZ Expansion Stabil

Sebelum 2.4, menambah disk ke vdev RAIDZ berarti membangun ulang seluruh pool. RAIDZ expansion memungkinkan menambah disk ke RAIDZ yang ada tanpa menghancurkan pool, dan kini stabil di OpenZFS 2.4:

Tambah disk ke RAIDZ
sudo zpool attach labpool /dev/loop0 /dev/loop2

Setelah attach, ZFS mendistribusikan ulang data secara otomatis. Prosesnya memakan waktu tergantung ukuran data, dan pool tetap bisa dipakai selama berlangsung.

AnyRaid

AnyRaid memperkenalkan layout yang fleksibel untuk RAIDZ — jumlah dan posisi parity tidak harus mengikuti pola kaku:

Pool dengan layout fleksibel
sudo zpool create labpool anyraid=d2,p2 /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3

Dengan AnyRaid, konfigurasi seperti dua parity tersebar di perangkat yang berbeda bisa diekspresikan secara eksplisit. Fitur ini baru — gunakan setelah memahami semantik layout yang dipilih.

Quotas Default dan Throttling

Quotas Default di OpenZFS 2.4

OpenZFS 2.4 menambahkan properti untuk quota default pada dataset baru:

Set quota default
sudo zpool create -O quota=1T labpool /dev/loop0
sudo zfs set quota=500G labpool/data

Properti ini membuat dataset yang dibuat nanti otomatis memiliki batas — berguna untuk platform multi-tenant di mana setiap user mendapat alokasi tetap.

Uncached IO dan Allocation Throttling

Rilis ini juga memperbaiki perilaku pada beban yang membaca data di luar ARC (uncached IO) dan menambahkan throttling alokasi untuk mencegah satu proses menelan seluruh bandwidth pool. Efeknya: latensi lebih stabil pada workload campuran.

Special Vdev dan Zvol

Special Vdev untuk Metadata

Special vdev adalah perangkat cepat (biasanya NVMe) yang menampung metadata dan blok kecil, sementara blok data besar tetap di disk HDD:

Pool dengan special vdev
sudo zpool create labpool mirror /dev/loop0 /dev/loop1 \
  special mirror /dev/loop2 /dev/loop3

Metadata kecil yang biasanya menjadi bottleneck HDD berpindah ke perangkat cepat. Pantau isi special vdev dengan:

Statistik special vdev
zpool status -v labpool
zpool iostat -v labpool

Jika special vdev penuh, pool bisa berhenti menerima tulis — beri ruang cukup dan pertimbangkan special vdev mirror agar tidak jadi titik kegagalan tunggal.

zvol dan zfs rewrite

zvol sudah dibahas di episode 6. zfs rewrite adalah utilitas baru untuk menulis ulang blok secara fisik — misalnya untuk memastikan data yang sebelumnya ditulis tanpa kompresi ikut terkompresi setelah properti diubah:

Rewrite dataset dengan properti baru
sudo zfs set compression=zstd labpool/data
sudo zfs rewrite labpool/data

zfs rewrite membaca dan menulis ulang blok sesuai properti saat ini — berguna untuk mengaplikasikan kompresi atau recordsize baru pada data lama tanpa migrasi.

Tuning Recordsize dan Ashift

recordsize

recordsize menentukan ukuran unit alokasi logis. Aturannya: cocokkan dengan pola I/O workload.

  • 8K: database transaksional (blok PostgreSQL/MySQL).
  • 128K: default umum, seimbang untuk mixed workload.
  • 1M: file besar berurutan, media, dan arsip.
Set recordsize per dataset
sudo zfs set recordsize=1M labpool/media

ashift

ashift adalah log2 dari ukuran sector fisik perangkat. Menyamakan dengan ukuran sector nyata mencegah misalignment:

  • ashift=12: 4KB sector (hampir semua HDD/SSD modern).
  • ashift=13: 8KB, untuk beberapa SSD NVMe.
Buat pool dengan ashift 12
sudo zpool create -o ashift=12 labpool /dev/loop0

Ashift hanya bisa diatur saat pool dibuat — tidak bisa diubah belakangan. Salah set ashift adalah kesalahan yang permanen dan mahal, jadi verifikasi ukuran sector sebelum zpool create.

Penutup

OpenZFS 2.4 menutup banyak celah yang selama ini membuat admin menahan diri dari ZFS: dedup kini cepat, RAIDZ bisa diperluas, dan layout bisa fleksibel. Ditambah tuning recordsize, ashift, special vdev, dan rewrite, ZFS menjadi pilihan yang semakin sulit ditolak untuk storage kritis.

Inti yang harus dibawa pulang:

  • BRT membuat deduplication cepat dengan overhead RAM kecil.
  • RAIDZ expansion stabil di 2.4 — tambah disk tanpa membangun ulang pool.
  • AnyRaid memberi layout parity yang fleksibel.
  • Special vdev menempatkan metadata di perangkat cepat; zvol tetap jadi andalan.
  • zfs rewrite menerapkan properti baru ke blok lama.
  • recordsize cocokkan dengan workload; ashift hanya bisa diatur saat create.

Di episode 15 selanjutnya kita membahas filesystem untuk container dan Kubernetes — OverlayFS dan rootless containers, lalu CSI seperti Rook-Ceph dan TopoLVM, local persistent volumes, serta semantik filesystem untuk workload stateful. Kalian akan menghubungkan semua yang dipelajari dengan dunia container.