Skip to main content
  1. Posts/

KVM guest with SSD and NVMe in Libvirt

·3 mins·
libvirt kvm libvirt
Table of Contents

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
Nilai 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"
Nilai 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

Related

QEMU-IMG Cheatsheet
·4 mins
libvirt kvm libvirt
KVM Hypervisor Features
·1 min
libvirt kvm libvirt
Disable Virtualization Engine in Libvirt
·2 mins
libvirt kvm libvirt
Error: Failed to Attach Device, No More Available PCI Slots
·2 mins
libvirt kvm libvirt
Block I/O Tuning in Libvirt
·1 min
libvirt kvm libvirt
Direct Kernel Boot in Libvirt
·2 mins
libvirt libvirt kvm