ZFS (OpenZFS) merupakan sistem berkas ( filesystem ) dan manajemen volume tingkat enterprise yang menjadi pilihan favorit pada Proxmox V...
ZFS (OpenZFS) merupakan sistem berkas (filesystem) dan manajemen volume tingkat enterprise yang menjadi pilihan favorit pada Proxmox Virtual Environment (PVE). Keunggulannya meliputi fitur perlindungan integritas data (checksumming), replikasi inkremental cepat, snapshot instan, serta arsitektur Copy-on-Write (CoW).
Namun, konfigurasi bawaan (default) ZFS dirancang untuk keandalan umum, bukan untuk beban kerja intensif dengan operasi I/O acak (random I/O) seperti database relational (PostgreSQL, MySQL, MariaDB). Tanpa tuning yang tepat, ZFS dapat memakan konsumsi RAM secara masif dan memicu fenomena Write Amplification yang memperlambat performa VM secara drastis.
1. Karakteristik ZFS: Mengapa VM Database Memerlukan Penyesuaian?
Dalam virtualisasi Proxmox, disk virtual (Virtual Disk) biasanya dialokasikan dalam bentuk ZFS volume (ZVOL). Beban database memiliki karakteristik penulisan berukuran kecil yang terus-menerus (biasanya 8KB atau 16KB). Jika ukuran blok pada ZFS tidak selaras dengan page size database, setiap operasi write kecil akan memaksa disk membaca dan menulis ulang seluruh blok ZFS yang jauh lebih besar.
2. Langkah 1: Membatasi Konsumsi ZFS ARC Cache RAM
Secara default, Adaptive Replacement Cache (ARC) pada OpenZFS dapat mengonsumsi hingga 50% dari total RAM fisik server host. Pada node Proxmox yang menjalankan banyak VM, alokasi ARC yang tidak dibatasi dapat memicu Out-Of-Memory (OOM) saat host mengalami lonjakan alokasi memori mendadak.
# Buat file konfigurasi modul ZFS
sudo nano /etc/modprobe.d/zfs.conf
# Tambahkan baris batasan maksimum ARC (Contoh: membatasi maksimum 16GB)
# Rumus: 16 * 1024 * 1024 * 1024 = 17179869184 bytes
options zfs zfs_arc_max=17179869184
# Perbarui initramfs agar konfigurasi dimuat saat booting
sudo update-initramfs -u -k all
Anda dapat menerapkan perubahan batas ARC secara langsung tanpa me-reboot server dengan mengeksekusi:
# Terapkan batas ARC secara live pada runtime kernel
echo 17179869184 | sudo tee /sys/module/zfs/parameters/zfs_arc_max
# Pantau efisiensi hit-ratio dan ukuran ARC saat ini
arcstat -f time,hit%,read,hits,miss,arcsz,c 2
3. Langkah 2: Tuning Volblocksize pada Storage Pool ZFS
Parameter paling krusial untuk IOPS disk VM adalah volblocksize pada ZVOL. Nilai default Proxmox biasanya adalah 8KB atau 16KB. Untuk database PostgreSQL (default page 8KB) atau InnoDB MySQL (default page 16KB):
- Jika Anda menjalankan database PostgreSQL: gunakan
volblocksize=16katau8k. - Jika Anda menjalankan database InnoDB: gunakan
volblocksize=16k.
Konfigurasi ini disetel pada definisi storage di Proxmox pada menu Datacenter > Storage > Pilih ZFS Pool > Block Size. Perlu dicatat bahwa perubahan volblocksize hanya berdampak pada disk virtual yang baru dibuat setelah konfigurasi diubah.
4. Langkah 3: Memilih Algoritma Kompresi Efisien (LZ4 vs ZSTD)
Mengaktifkan kompresi pada ZFS hampir selalu meningkatkan performa penulisan karena mengurangi jumlah byte fisik yang harus ditulis ke chip flash SSD/NVMe:
# Aktifkan kompresi LZ4 (Sangat ringan CPU, ideal untuk beban IOPS tinggi)
zfs set compression=lz4 rpool/data
# Atau gunakan ZSTD-1 untuk rasio kompresi data yang lebih rapat tanpa beban CPU berlebih
zfs set compression=zstd-1 rpool/data
Algoritma lz4 memiliki latensi sangat rendah dengan throughput gigabyte per detik per core, menjadikannya standar emas untuk VM dan container di Proxmox.
5. Langkah 4: Optimasi Sync Write & Peran Dedicated SLOG
Database selalu meminta jaminan persistensi data via panggilan sistem fsync(). Pada ZFS, setiap synchronous write dicatat ke ZFS Intent Log (ZIL). Jika pool Anda menggunakan hard drive mekanik atau SSD SATA biasa, latensi sync write akan sangat tinggi.
zfs set sync=disabled pada lingkungan produksi! Meskipun performa write akan melonjak drastis, pemadaman listrik tiba-tiba atau kernel panic akan merusak database secara permanen. Solusi enterprise yang tepat adalah menambahkan drive NVMe enterprise berfitur PLP (Power Loss Protection) sebagai dedicated SLOG (zpool add <pool> log <device>).
Kesimpulan
Melalui pembatasan ARC cache yang terukur, penyelarasan volblocksize dengan page engine database, serta penerapan kompresi LZ4, storage ZFS pada Proxmox VE Anda akan beroperasi jauh lebih responsif, hemat resource RAM, dan bebas dari bottleneck I/O yang menghambat kinerja aplikasi bisnis Anda.
COMMENTS