Postingan kali ini kita akan bahas best-practice setup vm di proxmox. oke, kadang di sebagian kasus kita cukup kesulitan menentukan standar setting default dari vm apalagi ketika ingin membuat template vm yang reusable. Baiklah, kita akan langsung saja ke rekomendasinya berdasarkan member forum resmi proxmox, bisa cek di sini
Kita fokus pada jawaban no. 3
You should really reconsider 3-nodes because of the single-node failure scenario. With that being said, I use the following optimization learned through trial-and-error and write IOPS are in the hundreds while read IOPS are 3x-5x (sometimes higher) than write IOPS. Again not hurting for IOPS for my production workloads.
- Set SAS HDD Write Cache Enable (WCE) (sdparm -s WCE=1 -S /dev/sd[x])
- Set VM Disk Cache to None if clustered, Writeback if standalone
- Set VM Disk controller to VirtIO-Single SCSI controller and enable IO Thread & Discard option
- Set VM CPU Type to 'Host'
- Set VM CPU NUMA on servers with 2 more physical CPU sockets
- Set VM Networking VirtIO Multiqueue to number of Cores/vCPUs
- Set VM Qemu-Guest-Agent software installed
- Set VM IO Scheduler to none/noop on Linux
- Set Ceph RBD pool to use 'krbd' option
Oke, kita jelaskan ya.
Point Pertama
SAS di sini maksudnya adalah Serial Attached SCSI. SAS adalah jenis interface/storage protocol untuk harddisk atau SSD (biasanya kelas enterprise/server). Bedanya dengan SATA:
SAS → dipakai di server, lebih cepat, lebih andal, bisa full-duplex, dan biasanya dipasangkan di storage enterprise (misalnya Proxmox + Ceph pakai server-grade disk).
SATA → lebih umum di PC/desktop/laptop, lebih murah, tapi performa dan keandalannya di bawah SAS.
Jadi ketika ada instruksi:
sdparm -s WCE=1 -S /dev/sdX
itu artinya mengaktifkan Write Cache Enable (WCE) pada disk SAS tersebut. Dengan write cache aktif, disk bisa menampung data di cache sebelum ditulis permanen ke platter/flash, sehingga I/O jadi lebih cepat.
Tapi ini harus hati-hati: kalau power loss dan tidak ada battery-backed cache (BBU) di RAID controller atau UPS, data bisa hilang sebelum sempat flush ke disk.
Point Kedua
Nah, bagian ini maksudnya setting disk controller di VM Proxmox biar performa I/O makin optimal
- VirtIO-SCSI Single Controller
VirtIO-SCSI adalah driver disk yang sudah dioptimalkan untuk virtualisasi (lebih cepat daripada IDE/SATA emulated). Single controller artinya semua disk VM dipasang ke satu controller VirtIO-SCSI (bukan banyak controller). Lebih efisien (lebih sedikit overhead QEMU), cocok kalau VM punya banyak disk (misalnya database).
- IO Thread
Kalau di-enable, setiap disk VM bisa punya thread I/O sendiri.
Keuntungannya I/O bisa diproses paralel, tidak bottleneck di 1 thread. Sangat terasa kalau VM ada banyak disk, server host punya banyak core CPU, beban I/O tinggi (contoh: database, Ceph RBD).
- Discard Option (TRIM/UNMAP)
Kalau aktif, ketika VM menghapus file, informasi blok kosong diteruskan ke storage (Ceph, ZFS, SSD, dll). Hasilnya space reclaim
kapasitas di backend storage bisa balik dipakai dan juga
SSD friendly karena performa SSD lebih terjaga (garbage collection lebih efektif).
Point Ketiga
- Set VM CPU Type to 'Host'
Di Proxmox, saat bikin VM default biasanya kvm64 (aman & universal, tapi fitur CPU host banyak yang dimatikan). Kalau pilih host VM akan pakai instruksi CPU asli dari hardware server. Performa lebih tinggi terutama aplikasi yang sensitif CPU, misalnya database, compression, scientific computing.
Tapi kekuranganya VM jadi kurang portable, kalau migrasi ke host Proxmox lain yang beda generasi CPU, bisa error. Jadi ini best practice kalau cluster kamu CPU-nya sama semua (homogen).
- Set VM CPU NUMA (Non-Uniform Memory Access)
Berlaku kalau server punya lebih dari 1 socket fisik CPU (misalnya 2x Intel Xeon atau AMD EPYC). NUMA itu cara akses memori di server multi-CPU, tiap CPU punya memory controller sendiri. Akses memori lokal lebih cepat daripada akses ke memori yang dikontrol CPU lain. Kalau NUMA diaktifkan maka VM akan aware tentang topologi NUMA, Hypervisor (Proxmox/QEMU) bisa mengalokasikan vCPU dan RAM sesuai node NUMA, performa lebih stabil dan latency rendah. Sangat berguna buat workload besar (database, aplikasi high I/O, VM dengan banyak core/RAM).
Solusi
- Kalau server kamu 1 socket CPU → NUMA tidak perlu diaktifkan.
- Kalau server kamu ≥2 socket CPU → wajib aktifkan NUMA di setting VM.
- Pastikan jumlah vCPU untuk VM jangan lebih banyak dari core fisik per NUMA node.
Okeh, sementara itu dulu, selanjutanya akan kita update berkala.
Top comments (0)