virtio-blk) atau VirtIO SCSI (virtio-scsi).
Memahami perbedaan kedua arsitektur ini membantu kita mengenali mengapa disk virtual bisa menjadi titik macet (bottleneck), terutama ketika jumlah core vCPU bertambah tetapi antrean I/O tetap tersendat pada satu pintu.
Analogi Gerbang Masuk Logistik
Perbedaan Nyata Antara VirtIO Block dan VirtIO SCSI
/dev/vda, /dev/vdb, dan seterusnya. Karena dirancang sangat ramping, virtio-blk awal menghubungkan seluruh permintaan I/O ke dalam satu antrean tunggal (single request queue). Pada server dengan beban acak (random I/O) tinggi dan vCPU banyak, antrean tunggal ini menimbulkan perebutan kunci (lock contention) di tingkat kernel.
VirtIO SCSI mengambil pendekatan berbeda. Pengendali ini mengemulasikan lapisan protokol SCSI secara efisien. Di dalam sistem tamu, disk yang terhubung biasanya terdeteksi sebagai perangkat SCSI standar seperti /dev/sda atau /dev/sdb. Keuntungan teknis utama dari VirtIO SCSI adalah pemisahan antara controller dan drive fisik virtual:
Pertama, arsitektur ini mendukung multi-queue secara lebih fleksibel. Pengendali dapat membuat antrean I/O terpisah untuk masing-masing vCPU. Ketika vCPU 0 menulis data transaksi log dan vCPU 3 membaca data cache, kedua instruksi langsung masuk ke antreannya masing-masing tanpa harus saling tunggu di antrean global.
Kedua, VirtIO SCSI mendukung perintah SCSI standar secara penuh. Perintah seperti UNMAP atau penanganan discard (dikenal juga sebagai TRIM) diteruskan langsung ke sistem host. Fitur ini memungkinkan hypervisor membebaskan kembali kapasitas disk fisik ketika kita menghapus file besar di dalam VPS. Pada virtio-blk versi lama, fitur trim semacam ini sering kali tidak didukung atau membutuhkan penyesuaian parameter khusus yang rumit.
Ketiga, skalabilitas jumlah drive. VirtIO Block umumnya memiliki batasan jumlah disk virtual yang jauh lebih ketat per virtual machine karena setiap disk mengonsumsi satu slot PCI virtual. VirtIO SCSI bertindak sebagai satu adapter yang mampu menampung puluhan hingga ratusan disk virtual (LUN) di bawah satu controller PCI.
Memeriksa Status Multi-Queue pada Sistem Linux
/sys di Linux:
BASH
# Ganti 'sda' atau 'vda' sesuai nama disk utama di sistem kamu
cat /sys/block/sda/mq/0/cpu_list 2>/dev/null || ls -d /sys/block/sda/mq/* 2>/dev/null/sys/block/<nama-disk>/mq/ hanya berisi satu folder antrean (misalnya hanya folder 0) padahal server kamu memiliki 4 atau 8 vCPU, berarti I/O disk masih berjalan dalam mode antrean tunggal. Namun jika terdapat folder 0, 1, 2, dan seterusnya sesuai alokasi vCPU, berarti fitur multi-queue sudah aktif dan melayani operasi baca-tulis secara paralel.
Kesalahan Pemahaman yang Sering Muncul
- Mengira VirtIO SCSI Selalu Membuat Throughput Lebih Cepat Seketika Jika VPS kamu hanya memiliki 1 vCPU dan menjalankan aplikasi ringan dengan beban tulis berurutan (sequential write) kecil, beralih dari VirtIO Block ke VirtIO SCSI hampir tidak memberikan perbedaan performa yang terasa. Keunggulan VirtIO SCSI baru benar-benar terlihat saat beban I/O acak tinggi dengan konkurensi data yang padat pada multi-core.
- Lupa Mengaktifkan Opsi Multi-Queue di Sisi Hypervisor Memilih tipe controller VirtIO SCSI saja belum tentu otomatis mengaktifkan jalur multi-queue. Pada beberapa platform virtualisasi (seperti KVM via libvirt atau panel manajemen Proxmox), opsi queues harus diisi secara eksplisit agar nilainya seimbang dengan jumlah vCPU yang dialokasikan ke VM tersebut. Jika dibiarkan bernilai 1, disk controller tetap beroperasi dengan antrean tunggal.
-
Mengabaikan Perubahan Penamaan Device Saat Migrasi
Jika kamu mengubah disk controller dari VirtIO Block ke VirtIO SCSI pada VPS yang sudah berjalan, penamaan device di dalam OS tamu kemungkinan besar berubah dari
/dev/vdXmenjadi/dev/sdX. Jika file konfigurasi/etc/fstabatau bootloader kamu masih memanggil partisi menggunakan jalur perangkat mentah bukan UUID, sistem operasi tidak akan bisa melakukan proses booting setelah controller diganti.
