Bali, Indonesia
Insights

Perubahan Performa Disk Saat Beralih dari VirtIO Block ke VirtIO SCSI

October 18, 2026
0:00
Banyak pengelola server menjumpai kondisi aneh saat beban transaksi database atau web app melonjak: pemakaian CPU masih rendah, RAM masih bersisa banyak, tetapi server terasa lambat dan nilai iowait melesat tinggi. Masalah seperti ini sering kali berakar pada bagaimana hypervisor meneruskan instruksi baca dan tulis dari sistem operasi tamu (guest OS) ke media simpan fisik di host. Pada lingkungan virtualisasi berbasis KVM atau QEMU, pilihan pengendali disk virtual biasanya jatuh pada dua opsi utama: VirtIO Block (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.
Untuk membangun gambaran yang mudah, bayangkan sebuah gudang besar tempat puluhan truk (vCPU) ingin memasukkan dan mengeluarkan barang (operasi baca-tulis disk). Pada arsitektur VirtIO Block model awal, gudang tersebut hanya menyediakan satu gerbang loket untuk setiap blok storage. Sebanyak apa pun truk pengantar barang yang datang, semuanya harus mengantre di satu loket petugas yang sama. Ketika transaksi masih puluhan per detik, antrean tidak terasa. Namun, ketika ada ribuan transaksi bersamaan dari banyak core CPU yang berbeda, truk-truk di belakang harus berhenti dan membuang waktu menunggu giliran di depan gerbang yang sempit itu. Sementara itu, VirtIO SCSI bekerja seperti terminal logistik modern. Setiap truk memiliki jalur loket mandiri yang terhubung langsung ke bagian dalam terminal. Truk-truk dari tiap core CPU bisa menyerahkan dokumen pengiriman secara simultan tanpa harus memblokir truk lain yang sedang melintas di jalur sebelahnya. Jalur paralel inilah yang di dunia komputasi disebut dengan mekanisme multi-queue.
VirtIO Block diciptakan sebagai pengendali disk virtual minimalis. Tujuannya adalah memangkas lapisan emulasi perangkat keras standar lama (seperti IDE atau SATA) agar transfer data antara sistem operasi tamu dan hypervisor host berlangsung cepat lewat komunikasi memori bersama (shared memory). Di dalam Linux, perangkat ini biasanya langsung dikenali sebagai /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.
Untuk melihat apakah disk pada VPS kamu sudah memanfaatkan banyak antrean I/O atau masih tertahan di antrean tunggal, kita bisa memeriksa parameter antrean block device langsung dari filesystem /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
Jika direktori /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.
Ada beberapa anggapan yang kurang tepat ketika membandingkan kedua jenis controller ini:
  1. 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.
  2. 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.
  3. 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/vdX menjadi /dev/sdX. Jika file konfigurasi /etc/fstab atau bootloader kamu masih memanggil partisi menggunakan jalur perangkat mentah bukan UUID, sistem operasi tidak akan bisa melakukan proses booting setelah controller diganti.
Bagi beban kerja modern yang menuntut IOPS tinggi seperti kluster database, antrean pesan, atau server penyimpanan file, VirtIO SCSI dengan fitur multi-queue aktif merupakan fondasi virtualisasi yang jauh lebih fleksibel dan minim hambatan dibandingkan VirtIO Block klasik.