Ketika menjalankan Guest/VM menggunakan Libvirt, Anda dapat menambahkan disk ke dalam VM menggunakan berbagai jenis bus seperti IDE, SCSI, SATA, atau yang paling umum digunakan yaitu Virtio.
Pemilihan tipe bus biasanya tergantung pada jenis perangkat atau OS yang akan digunakan. Misalnya, untuk menambahkan perangkat CD-ROM, bus yang umum digunakan adalah SATA.
Seiring berkembangnya teknologi penyimpanan, SSD dan NVMe semakin banyak digunakan karena meningkatkan performa dan efisiensi virtualisasi. Banyak Cloud Provider seperti AWS kini memanfaatkan NVMe sebagai media penyimpanan standar. Lalu, apakah NVMe dapat digunakan juga pada VM berbasis KVM/Libvirt?
Jawabannya: Ya, NVMe dapat digunakan, namun perlu konfigurasi manual melalui XML domain Libvirt, karena belum tersedia langsung di virt-manager.
NVMe Drives pada QEMU/KVM #
QEMU sudah mendukung emulasi NVMe melalui CLI. Untuk menambahkannya pada VM yang dikelola Libvirt, Anda dapat menyisipkan QEMU command line arguments ke dalam file XML domain.
Contoh argumen QEMU #
-drive file=nvm.img,if=none,id=nvme1
-device nvme,serial=nvme-1,drive=nvme1
id= dan drive= harus sama agar perangkat NVMe dapat dikenali.
Konfigurasi di XML Libvirt #
Tambahkan konfigurasi berikut pada file XML domain Anda:
<qemu:commandline xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0">
<qemu:arg value='-drive'/>
<qemu:arg value='file=/path/to/nvm.img,format=raw,if=none,id=nvme1'/>
<qemu:arg value='-device'/>
<qemu:arg value='nvme,serial=nvme-1,drive=nvme1'/>
</qemu:commandline>
Tempatkan blok <qemu:commandline> setelah elemen </devices> dan sebelum </domain>.
Setelah itu simpan dan start ulang VM.
Verifikasi Disk NVMe di Guest #
Menggunakan lsblk.
# lsblk -d -o name,size,type
NAME SIZE TYPE
vda 5G disk
vdb 20G disk
nvme0n1 8G disk
Menggunakan nvme-cli.
# nvme list
Node SN Model Namespace Usage Format FW Rev
----------- -------- ----------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 nvme-1 QEMU NVMe Ctrl 1 8.59 GB / 8.59 GB 512 B + 0 B 1.0
SSD drives #
Berbeda dengan NVMe yang memerlukan QEMU commandline arguments, SSD emulasi pada QEMU/Libvirt dapat ditambahkan seperti disk biasa. Namun, agar QEMU mengenali disk tersebut sebagai SSD, tipe bus yang dapat digunakan hanya:
- SCSI
- SATA
Contoh penambahan disk SSD menggunakan SCSI:
<disk type='file'>
<driver type='qcow2' cache='none'/>
<source file='/path/to/disk1.qcow2'/>
<target dev='sdb' bus='scsi'/>
</disk>
Mengecek Device ID dengan qemu-monitor-command #
Setelah mengubah bus menjadi SCSI (atau menambahkan disk baru), Anda perlu mengetahui device ID dari disk tersebut agar dapat menyetel parameter SSD (rotation rate).
Gunakan perintah:
virsh qemu-monitor-command --domain domname --hmp --cmd "info qtree"
Cari bagian bernama dev: scsi-hd:
dev: scsi-hd, id "scsi0-0-0"
drive = "libvirt-2-format"
logical_block_size = 512 (512 B)
physical_block_size = 512 (512 B)
discard_granularity = 4096 (4 KiB)
write-cache = "on"
id "scsi0-0-0" dapat berbeda sesuai urutan disk.
Menetapkan Disk sebagai SSD di QEMU #
Pada QEMU CLI, parameter SSD menggunakan opsi:
-set device.scsi0-0-0-0.rotation_rate=1
- rotation_rate = 1 → SSD (solid-state)
- rotation_rate = 0 → HDD (rotational)
Untuk memasukkannya dalam XML Libvirt, gunakan:
<qemu:commandline xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0">
<qemu:arg value='-set'/>
<qemu:arg value='device.scsi0-0-0-0.rotation_rate=1'/>
</qemu:commandline>
Tempatkan blok di atas sebelum </domain> pada XML VM.
Verifikasi Dari Dalam Guest #
Menggunakan lsblk.
lsblk -d -o name,rota
Contoh output:
NAME ROTA
sda 1 # HDD / rotational
sdb 0 # SSD / non-rotational
Menggunakan smartctl.
smartctl -i /dev/sdb
Contoh hasil:
Vendor: QEMU
Product: QEMU HARDDISK
Revision: 2.5+
User Capacity: 21.4 GB
Rotation Rate: Solid State Device
SMART support: Unavailable - device lacks SMART capability.
Meski SMART tidak tersedia, informasi Rotation Rate sudah menunjukkan jenis media.
Reference