DEV Community

Cover image for Memahami Format XML Domain Libvirt
erfandwi
erfandwi

Posted on

Memahami Format XML Domain Libvirt

Dengan memahami format XML Domain pada Libvirt, kita dapat mengerti fungsi dan cara penggunaannya secara tepat, baik untuk implementasi VM di lingkungan devel maupun produksi.

MEMORY

Berikut adalah penjelasan mengenai atribut-atribut memori dalam libvirt:

1. <memory>

  • Arti: Jumlah memori maksimum yang dialokasikan untuk mesin virtual (VM) saat dijalankan.
  • Unit: Default dalam kibibytes (KiB), tetapi bisa diubah (misal: unit='GiB').
  • Fungsi: Menentukan batas atas memori yang bisa digunakan VM. Jika menggunakan ballooning, memori aktual (currentMemory) bisa lebih kecil dari nilai ini.

2. <currentMemory>

  • Arti: Jumlah memori aktual yang dialokasikan ke VM saat boot.
  • Fungsi: Digunakan untuk memory ballooning. Nilai ini bisa dinaikkan/turunkan secara dinamis (tanpa reboot) hingga batas <memory>.
  • Contoh:
  <currentMemory unit='GiB'>2</currentMemory> <!-- VM mulai dengan 2 GiB -->
  <memory unit='GiB'>4</memory> <!-- Maksimum 4 GiB -->
Enter fullscreen mode Exit fullscreen mode

3. <hugepages>

  • Arti: Mengonfigurasi VM untuk menggunakan huge pages (halaman memori berukuran besar, misal 2MB/1GB).
  • Tujuan: Meningkatkan performa dengan mengurangi TLB misses untuk aplikasi yang intensif memori.
  • Cara Kerja:
    • Host harus dikonfigurasi untuk mendukung huge pages.
    • Pada XML libvirt, <hugepages> didefinisikan di bawah <memoryBacking>.
  • Contoh:
  <memoryBacking>
    <hugepages>
      <page size='2' unit='MiB'/>
    </hugepages>
  </memoryBacking>
Enter fullscreen mode Exit fullscreen mode

4. <maxMemory>

  • Arti: Batas absolut memori yang bisa dialokasikan ke VM, termasuk memori yang ditambahkan secara hotplug.
  • Fungsi: Digunakan untuk memory hotplug (menambah memori saat VM berjalan).
  • Persyaratan:
    • VM harus menggunakan arsitektur yang mendukung hotplug (misal: Q35).
    • Nilai harus ΓëÑ <memory>.
  • Contoh:
  <maxMemory slots='4' unit='GiB'>16</maxMemory> <!-- Maksimum 16 GiB -->
Enter fullscreen mode Exit fullscreen mode

5. <maxMemory slots>

  • Arti: Jumlah slot yang tersedia untuk menambahkan modul memori (DIMM) secara hotplug.
  • Fungsi: Setiap penambahan memori menggunakan satu slot. Jika slot habis, tidak bisa menambah memori tanpa menghapus modul terlebih dahulu.
  • Contoh:
  <maxMemory slots='8' unit='GiB'>64</maxMemory> <!-- 8 slot, maks 64 GiB -->
Enter fullscreen mode Exit fullscreen mode

VCPUS

Berikut adalah penjelasan masing-masing atribut terkait VCPU dalam Libvirt:

1. cores

Jumlah core per socket dalam topologi CPU virtual. Mengatur bagaimana CPU virtual dibagi menjadi cores di dalam setiap socket.

Contoh:

   <cpu>
     <topology sockets='2' cores='4' threads='2'/>
   </cpu>
Enter fullscreen mode Exit fullscreen mode

2. cpuset

Daftar CPU fisik (host CPUs) yang boleh digunakan oleh vCPU. Digunakan untuk pinning (mengikat vCPU ke CPU fisik tertentu).

Contoh:

   <vcpu cpuset="0-3">4</vcpu>
Enter fullscreen mode Exit fullscreen mode

3. dies

Jumlah die per socket dalam topologi CPU (untuk CPU modern dengan arsitektur multi-die).

Contoh:

   <cpu>
     <topology sockets='1' dies='2' cores='4' threads='2'/>
   </cpu>
Enter fullscreen mode Exit fullscreen mode

4. maxvcpus

Jumlah maksimum vCPU yang dapat diaktifkan (untuk keperluan hotplug). Nilai ini harus ≥ nilai current.

Contoh:

   <vcpu current='2' maxvcpus='4'>4</vcpu>
Enter fullscreen mode Exit fullscreen mode

5. sockets

Jumlah socket CPU virtual. Menentukan bagaimana CPU virtual diorganisasi dalam topologi.

6. threads

Jumlah thread per core (misalnya untuk simulasi Hyper-Threading/SMT).

7. vcpu

Elemen utama untuk mengonfigurasi vCPU. Contoh:

   <vcpu placement='static' current='2'>4</vcpu>
Enter fullscreen mode Exit fullscreen mode

7. vcpu.cpuset

Mengikat vCPU tertentu ke CPU fisik. Biasanya diatur dalam elemen <cputune>.

Contoh:

   <cputune>
     <vcpupin vcpu='0' cpuset='0'/>
   </cputune>
Enter fullscreen mode Exit fullscreen mode

8. vcpu.current

Jumlah vCPU yang aktif saat ini (biasanya Γëñ `maxvcpus`).
Enter fullscreen mode Exit fullscreen mode

9. vcpu.placement

Strategi penempatan vCPU:
- `static`: Diketatkan ke CPU fisik (default).
- `auto`: Biarkan host menentukan penempatan.
Enter fullscreen mode Exit fullscreen mode

10. vcpus

Elemen induk untuk konfigurasi individual vCPU (misalnya untuk *hotplug*).
Enter fullscreen mode Exit fullscreen mode

11. vcpus.vcpu[0-9]*.enabled

Status aktivasi vCPU tertentu (`yes`/`no`). Contoh:
Enter fullscreen mode Exit fullscreen mode
```xml
<vcpus>
  <vcpu id='0' enabled='yes'/>
</vcpus>
```
Enter fullscreen mode Exit fullscreen mode

12. vcpus.vcpu[0-9]*.hotpluggable

Apakah vCPU dapat di-*hotplug* (ditambahkan/dihapus saat VM berjalan).
Enter fullscreen mode Exit fullscreen mode

13. vcpus.vcpu[0-9]*.id

ID unik vCPU (biasanya angka 0, 1, dst.).
Enter fullscreen mode Exit fullscreen mode

14. vcpus.vcpu[0-9]*.order

Urutan inisialisasi vCPU saat boot (jarang digunakan).
Enter fullscreen mode Exit fullscreen mode

Contoh XML Lengkap:

<domain>
  <vcpu placement='static' current='2' maxvcpus='4'>4</vcpu>
  <cpu>
    <topology sockets='2' cores='2' threads='1' dies='1'/>
  </cpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='0'/>
    <vcpupin vcpu='1' cpuset='1'/>
  </cputune>
  <vcpus>
    <vcpu id='0' enabled='yes' hotpluggable='no'/>
    <vcpu id='1' enabled='yes' hotpluggable='yes'/>
  </vcpus>
</domain>
Enter fullscreen mode Exit fullscreen mode

Catatan:

  • Atribut seperti dies dan vcpus.vcpu[0-9]* memerlukan Libvirt versi terbaru dan dukungan hypervisor (misalnya QEMU ΓëÑ 5.0).
  • Hotplug vCPU harus didukung oleh OS tamu.

CPU

Berikut penjelasan arti dari atribut CPU di libvirt:

1. cache.level

  • Arti: Menentukan level cache CPU (L1, L2, L3) yang dikonfigurasi untuk guest VM.
  • Kegunaan: Digunakan bersama cache.mode untuk mengatur bagaimana cache CPU diekspos ke VM. Misal: level='3' untuk mengatur cache L3.

2. cache.mode

  • Arti: Mengontrol strategi virtualisasi cache CPU.
  • Nilai yang Umum:
    • passthrough: Cache host langsung diakses VM (terbatas pada migrasi).
    • emulate: Cache diemulasikan untuk kompatibilitas.
    • disable: Cache tidak tersedia untuk VM.
  • Contoh: <cache mode='passthrough' level='3'/>.

3. check

  • Arti: Menentukan apakah konfigurasi CPU diverifikasi terhadap kemampuan host.
  • Nilai:
    • none: Tidak ada pengecekan.
    • partial: Pengecekan dasar (default).
    • full: Pengecekan ketat untuk migrasi.

4. disable, forbid, force

  • Konteks: Atribut kebijakan untuk fitur CPU (contoh: <feature policy='disable'/>).
  • Arti:
    • disable: Menonaktifkan fitur CPU di VM.
    • forbid: Host harus tidak memiliki fitur tersebut (jika ada, VM gagal dijalankan).
    • force: Memaksa fitur diaktifkan, meski host tidak mendukung (risiko crash!).

5. match

  • Arti: Menentukan ketelitian pencocokan model CPU host dengan VM.
  • Nilai:
    • minimum: Cocokkan setidaknya fitur dasar.
    • exact: Persis sesuai dengan host (termasuk versi mikro).
    • strict: Cocokkan semua detail CPU (termasuk vendor, topologi).

6. migratable

  • Arti: Menunjukkan apakah konfigurasi CPU aman untuk migrasi live.
  • Nilai: on (default) atau off.
  • Kegunaan: Jika off, konfigurasi mungkin bergantung pada fitur host-spesifik.

7. mode

  • Arti: Strategi virtualisasi CPU secara umum.
  • Nilai:
    • host-passthrough: Ekspos CPU host langsung ke VM (kinerja maksimal, tidak migrasi).
    • host-model: Tiru model CPU host dengan kompatibilitas migrasi.
    • custom: Gunakan model CPU spesifik (diatur via model).

8. model

  • Arti: Nama model CPU yang diemulasikan untuk VM (misal: Intel Core i7).
  • Contoh: <model fallback='allow'>Haswell</model>.

9. model.fallback

  • Arti: Kebijakan jika model CPU tidak didukung host.
  • Nilai:
    • allow: Gunakan model yang kompatibel terdekat (default).
    • forbid: Gagal jika model tidak tersedia.

10. model.vendor_id

  • Arti: Mengganti string vendor CPU yang terlihat VM.
  • Kegunaan: Misal: <vendor_id>GenuineIntel</vendor_id> untuk menyamar sebagai Intel.

Contoh XML Sederhana:

<cpu mode='host-model' match='exact' check='full'>
  <model fallback='forbid'>Haswell</model>
  <feature policy='disable' name='rdrand'/>
  <cache mode='passthrough' level='3'/>
</cpu>
Enter fullscreen mode Exit fullscreen mode

Semua atribut ini memengaruhi kinerja, kompatibilitas, dan kemampuan migrasi VM. Konfigurasi yang salah (misal: force atau host-passthrough) dapat menyebabkan kegagalan migrasi atau crash VM.


NUMA Cell Attributes

NUMA cell (atau node) adalah bagian dari arsitektur CPU dan memori yang memengaruhi kinerja VM. Atribut ini mengatur konfigurasi NUMA untuk VM.

11. numa.cell[0-9]*.cache[0-9]*.associativity

  • Arti: Menentukan asosiativitas cache (cara cache di-mapping ke memori).
  • Contoh: Fully associative, direct-mapped, atau set-associative.

12. numa.cell[0-9]*.cache[0-9]*.level

  • Arti: Level cache (L1, L2, L3) yang dikonfigurasi untuk NUMA cell.
  • Contoh: level='2' untuk cache L2.

13. numa.cell[0-9]*.cache[0-9]*.line.unit

  • Arti: Unit ukuran untuk cache line (misal: bytes).
  • Contoh: <line unit='bytes' value='64'/>.

14. numa.cell[0-9]*.cache[0-9]*.line.value

  • Arti: Ukuran cache line dalam unit yang ditentukan.
  • Contoh: value='64' untuk cache line 64 byte.

15. numa.cell[0-9]*.cache[0-9]*.policy

  • Arti: Kebijakan manajemen cache (misal: write-back, write-through).
  • Contoh: <policy>write-back</policy>.

16. numa.cell[0-9]*.cache[0-9]*.size.unit

  • Arti: Unit ukuran untuk total cache size (misal: KB, MB).
  • Contoh: <size unit='MB' value='8'/>.

17. numa.cell[0-9]*.cache[0-9]*.size.value

  • Arti: Ukuran total cache dalam unit yang ditentukan.
  • Contoh: value='8' untuk cache 8 MB.

18. numa.cell[0-9]*.cpus

  • Arti: Daftar CPU yang termasuk dalam NUMA cell.
  • Contoh: <cpus>0-3</cpus> untuk CPU 0 hingga 3.

19. numa.cell[0-9]*.discard

  • Arti: Menentukan apakah memori NUMA cell dapat di-discard (dibebaskan) saat tidak digunakan.
  • Nilai: yes atau no.

20. numa.cell[0-9]*.distances.sibling[0-9]*.id

  • Arti: ID NUMA cell yang merupakan "sibling" (tetangga) dari cell ini.
  • Contoh: <sibling id='1' value='20'/>.

21. numa.cell[0-9]*.distances.sibling[0-9]*.value

  • Arti: Jarak relatif (latensi atau bandwidth) antara NUMA cell dan sibling-nya.
  • Contoh: value='20' menunjukkan jarak relatif.

22. numa.cell[0-9]*.id

  • Arti: ID unik untuk NUMA cell.
  • Contoh: <cell id='0'>.

23. numa.cell[0-9]*.memAccess

  • Arti: Menentukan mode akses memori untuk NUMA cell.
  • Nilai: shared (default) atau private.

24. numa.cell[0-9]*.memory

  • Arti: Jumlah memori yang dialokasikan untuk NUMA cell.
  • Contoh: <memory unit='MB'>4096</memory> untuk 4 GB.

25. numa.cell[0-9]*.unit

  • Arti: Unit ukuran untuk memori NUMA cell (misal: KB, MB, GB).
  • Contoh: <memory unit='GB'>4</memory>.

NUMA Interconnect Attributes

Atribut ini mengatur interkoneksi antara NUMA cells, seperti bandwidth dan latensi.

26. numa.interconnects.bandwidth[0-9]*.cache

  • Arti: Menentukan apakah bandwidth interkoneksi di-cache.
  • Nilai: yes atau no.

27. numa.interconnects.bandwidth[0-9]*.initiator

  • Arti: ID NUMA cell yang memulai transfer data.
  • Contoh: <initiator>0</initiator>.

28. numa.interconnects.bandwidth[0-9]*.target

  • Arti: ID NUMA cell yang menjadi target transfer data.
  • Contoh: <target>1</target>.

29. numa.interconnects.bandwidth[0-9]*.type

  • Arti: Jenis interkoneksi (misal: QPI, UPI, PCIe).
  • Contoh: <type>QPI</type>.

30. numa.interconnects.bandwidth[0-9]*.unit

  • Arti: Unit ukuran bandwidth (misal: GB/s).
  • Contoh: <unit>GB/s</unit>.

31. numa.interconnects.bandwidth[0-9]*.value

  • Arti: Nilai bandwidth dalam unit yang ditentukan.
  • Contoh: <value>20</value> untuk 20 GB/s.

32. numa.interconnects.latency[0-9]*.cache

  • Arti: Menentukan apakah latensi interkoneksi di-cache.
  • Nilai: yes atau no.

33. numa.interconnects.latency[0-9]*.initiator

  • Arti: ID NUMA cell yang memulai transfer data.
  • Contoh: <initiator>0</initiator>.

34. numa.interconnects.latency[0-9]*.target

  • Arti: ID NUMA cell yang menjadi target transfer data.
  • Contoh: <target>1</target>.

35. numa.interconnects.latency[0-9]*.type

  • Arti: Jenis interkoneksi (misal: QPI, UPI, PCIe).
  • Contoh: <type>QPI</type>.

36. numa.interconnects.latency[0-9]*.unit

  • Arti: Unit ukuran latensi (misal: ns untuk nanosecond).
  • Contoh: <unit>ns</unit>.

37. numa.interconnects.latency[0-9]*.value

  • Arti: Nilai latensi dalam unit yang ditentukan.
  • Contoh: <value>50</value> untuk 50 ns.

Contoh XML NUMA Configuration

<cpu>
  <numa>
    <cell id='0' cpus='0-3' memory='4096' unit='MB' memAccess='shared'>
      <distances>
        <sibling id='1' value='20'/>
      </distances>
      <cache level='1' associativity='direct' size='64' unit='KB'/>
    </cell>
    <cell id='1' cpus='4-7' memory='4096' unit='MB' memAccess='shared'>
      <distances>
        <sibling id='0' value='20'/>
      </distances>
    </cell>
  </numa>
  <interconnects>
    <bandwidth type='QPI' initiator='0' target='1' value='20' unit='GB/s'/>
    <latency type='QPI' initiator='0' target='1' value='50' unit='ns'/>
  </interconnects>
</cpu>
Enter fullscreen mode Exit fullscreen mode

Atribut NUMA ini memungkinkan Anda mengoptimalkan kinerja VM dengan mengatur alokasi CPU, memori, cache, dan interkoneksi antar-NUMA cells.


38. optional

  • Arti: Menunjukkan bahwa fitur CPU bersifat opsional. Jika fitur tidak tersedia di host, VM tetap dapat berjalan.
  • Konteks: Digunakan dalam elemen <feature> untuk menentukan kebijakan fitur CPU.
  • Contoh:
  <feature policy='optional' name='avx'/>
Enter fullscreen mode Exit fullscreen mode

Artinya, fitur AVX opsional dan tidak wajib ada di host.


39. require

  • Arti: Menunjukkan bahwa fitur CPU wajib ada di host. Jika tidak tersedia, VM tidak akan bisa dijalankan.
  • Konteks: Digunakan dalam elemen <feature> untuk menentukan kebijakan fitur CPU.
  • Contoh:
  <feature policy='require' name='sse4.2'/>
Enter fullscreen mode Exit fullscreen mode

Artinya, fitur SSE4.2 harus ada di host, atau VM tidak akan berjalan.


40. secure

  • Arti: Menunjukkan bahwa fitur CPU terkait dengan keamanan (misal: Intel SGX atau AMD SEV).
  • Konteks: Digunakan untuk memastikan fitur keamanan CPU diaktifkan.
  • Contoh:
  <feature policy='require' name='sev' secure='yes'/>
Enter fullscreen mode Exit fullscreen mode

Artinya, fitur AMD SEV harus diaktifkan dan aman.


41. topology.cores

  • Arti: Menentukan jumlah core per socket dalam topologi CPU.
  • Konteks: Digunakan dalam elemen <topology> untuk mengonfigurasi virtual CPU topology.
  • Contoh:
  <topology sockets='2' cores='4' threads='2'/>
Enter fullscreen mode Exit fullscreen mode

Artinya, setiap socket memiliki 4 core.


42. topology.dies

  • Arti: Menentukan jumlah dies per socket dalam topologi CPU.
  • Konteks: Digunakan dalam elemen <topology> untuk arsitektur CPU modern yang memiliki multiple dies per socket.
  • Contoh:
  <topology sockets='2' dies='2' cores='4' threads='2'/>
Enter fullscreen mode Exit fullscreen mode

Artinya, setiap socket memiliki 2 dies, dan setiap die memiliki 4 core.


43. topology.sockets

  • Arti: Menentukan jumlah socket CPU dalam topologi virtual.
  • Konteks: Digunakan dalam elemen <topology> untuk mengonfigurasi virtual CPU topology.
  • Contoh:
  <topology sockets='2' cores='4' threads='2'/>
Enter fullscreen mode Exit fullscreen mode

Artinya, VM memiliki 2 socket CPU.


44. topology.threads

  • Arti: Menentukan jumlah thread per core dalam topologi CPU.
  • Konteks: Digunakan dalam elemen <topology> untuk mengonfigurasi virtual CPU topology.
  • Contoh:
  <topology sockets='2' cores='4' threads='2'/>
Enter fullscreen mode Exit fullscreen mode

Artinya, setiap core memiliki 2 thread (Hyper-Threading).


45. vendor

  • Arti: Menentukan vendor CPU (misal: Intel, AMD).
  • Konteks: Digunakan dalam elemen <cpu> untuk menentukan vendor CPU yang diemulasikan.
  • Contoh:
  <cpu mode='host-model'>
    <vendor>Intel</vendor>
    <model>Haswell</model>
  </cpu>
Enter fullscreen mode Exit fullscreen mode

Artinya, VM akan menggunakan model CPU Intel Haswell.

OS_VARIANT

Berikut adalah penjelasan lebih rinci tentang atribut OS_VARIANT di libvirt, beserta contoh penggunaannya:

1. detect

  • Arti: Libvirt akan mencoba mendeteksi varian sistem operasi secara otomatis berdasarkan media instalasi (ISO) atau konfigurasi yang diberikan. Ini berguna jika Anda tidak yakin varian OS yang tepat atau ingin libvirt memilih yang paling sesuai.
  • Contoh Penggunaan:

     <os>
       <type arch='x86_64' machine='pc-i440fx-2.9'>hvm</type>
       <boot dev='cdrom'/>
       <os_variant detect='yes'/>
     </os>
    

    Dalam contoh ini, libvirt akan mencoba mendeteksi varian OS dari media instalasi yang dimasukkan ke dalam cdrom.


2. id

  • Arti: id adalah identifier unik yang merujuk pada varian OS tertentu. Ini biasanya berupa string yang sudah didefinisikan dalam database libvirt.
  • Contoh Penggunaan:

     <os>
       <type arch='x86_64' machine='pc-i440fx-2.9'>hvm</type>
       <boot dev='hd'/>
       <os_variant id='rhel8'/>
     </os>
    

    Di sini, id='rhel8' menunjukkan bahwa varian OS yang digunakan adalah Red Hat Enterprise Linux 8.


3. name

  • Arti: name adalah nama lengkap atau deskriptif dari varian OS. Ini lebih mudah dibaca dan dipahami oleh manusia.
  • Contoh Penggunaan:

     <os>
       <type arch='x86_64' machine='pc-i440fx-2.9'>hvm</type>
       <boot dev='hd'/>
       <os_variant name='Ubuntu 20.04 LTS'/>
     </os>
    

    Dalam contoh ini, name='Ubuntu 20.04 LTS' menunjukkan bahwa varian OS yang digunakan adalah Ubuntu 20.04 LTS.


4. require

  • Arti: require digunakan untuk memastikan bahwa varian OS tertentu tersedia atau memenuhi persyaratan sebelum proses instalasi atau konfigurasi VM dilanjutkan.
  • Contoh Penggunaan:

     <os>
       <type arch='x86_64' machine='pc-i440fx-2.9'>hvm</type>
       <boot dev='hd'/>
       <os_variant require='rhel8'/>
     </os>
    

    Di sini, require='rhel8' memastikan bahwa varian OS Red Hat Enterprise Linux 8 tersedia sebelum VM dikonfigurasi.


5. short-id

  • Arti: short-id adalah versi singkat dari id yang digunakan untuk merujuk pada varian OS. Ini biasanya lebih pendek dan lebih mudah digunakan dalam skrip atau konfigurasi otomatis.

DISK

Berikut penjelasan mengenai atribut disk pada libvirt:

1. alias.name

  • Arti: Memberikan nama unik dan ramah-pengguna untuk perangkat disk di dalam domain VM.
  • Fungsi:
    • Memudahkan identifikasi disk saat menggunakan perintah CLI (seperti virsh), alat debugging, atau API.
    • Contoh: ua-myhdd untuk merujuk ke disk tertentu.
  • XML Example:
  <alias name="ua-myhdd"/>
Enter fullscreen mode Exit fullscreen mode

2. backing_format

  • Arti: Format file/image yang digunakan sebagai backing store (basis) untuk disk ini.
  • Fungsi:
    • Menentukan jenis format (seperti qcow2, raw) dari file/image yang menjadi dasar disk saat menggunakan snapshot atau thin provisioning.
    • Libvirt memerlukan informasi ini untuk memastikan rantai backing image terbaca dengan benar.
  • XML Example:
  <backingStore type="file">
    <format type="qcow2"/> <!-- backing_format -->
    <source file="/base_image.qcow2"/>
  </backingStore>
Enter fullscreen mode Exit fullscreen mode

3. backing_store

  • Arti: Lokasi path atau sumber dari backing image (image dasar) yang digunakan oleh disk ini.
  • Fungsi:
    • Menunjukkan file/image yang menjadi basis untuk disk saat ini (misalnya, dalam skenario snapshot).
    • Contoh: Jika disk saat ini adalah overlay, backing_store merujuk ke image induknya.
  • XML Example:
  <backingStore type="file">
    <source file="/base_image.qcow2"/> <!-- backing_store -->
  </backingStore>
Enter fullscreen mode Exit fullscreen mode

4. blockio.logical_block_size

  • Arti: Ukuran blok logis (dalam byte) yang dilihat oleh mesin virtual (VM).
  • Fungsi:
    • Menentukan ukuran blok yang digunakan oleh sistem operasi guest untuk operasi I/O (misalnya, 512 byte atau 4096 byte).
    • Berguna untuk kompatibilitas atau optimasi performa (misalnya, menyamakan dengan sistem file guest).
  • XML Example:
  <blockio logical_block_size="512"/>
Enter fullscreen mode Exit fullscreen mode

5. blockio.physical_block_size

  • Arti: Ukuran blok fisik (dalam byte) pada media penyimpanan host.
  • Fungsi:
    • Menunjukkan ukuran blok sebenarnya dari penyimpanan fisik (misalnya, 4K untuk SSD modern).
    • Jika diatur, libvirt/QEMU akan mencocokkannya dengan penyimpanan host untuk optimalisasi.
  • XML Example:
  <blockio physical_block_size="4096"/>
Enter fullscreen mode Exit fullscreen mode

6. boot.loadparm

  • Arti: Parameter opsional yang diteruskan ke bootloader atau firmware saat booting.
  • Fungsi:
    • Umumnya digunakan untuk mengatur parameter boot spesifik (misalnya, pilih entri di menu GRUB, atau konfigurasi kernel).
    • Pada sistem IBM S390, ini bisa menentukan parameter IPL (Initial Program Loader).
  • XML Example:
  <boot loadparm="kernel=linux"/>
Enter fullscreen mode Exit fullscreen mode

7. boot.order

  • Arti: Urutan prioritas boot untuk disk ini dibandingkan perangkat lain (misalnya, CD-ROM, NIC).
  • Fungsi:
    • Menentukan urutan boot: VM akan mencoba boot dari perangkat dengan nilai order terendah terlebih dahulu.
    • Contoh: Jika disk diatur order='1', VM akan mencoba boot dari disk ini sebelum perangkat dengan order='2'.
  • XML Example:
  <boot order="1"/>
Enter fullscreen mode Exit fullscreen mode

8. driver.ats

  • Arti: Mengaktifkan dukungan Address Translation Services (ATS) untuk perangkat disk.
  • Fungsi:
    • Digunakan dalam lingkungan virtualisasi dengan perangkat PCIe yang mendukung ATS untuk meningkatkan performa I/O dengan mengurangi overhead translasi alamat.
    • Biasanya digunakan dengan SR-IOV atau perangkat passthrough.
  • XML Example:
  <driver ats="on"/>
Enter fullscreen mode Exit fullscreen mode

9. driver.cache

  • Arti: Mengatur mode caching untuk operasi I/O disk.
  • Fungsi:
    • Memungkinkan pengaturan caching seperti none, writethrough, writeback, directsync, atau unsafe.
    • Contoh:
    • writethrough: Menjamin data ditulis ke penyimpanan fisik sebelum operasi dianggap selesai.
    • writeback: Menyimpan data di cache host terlebih dahulu, meningkatkan performa tetapi berisiko kehilangan data jika host crash.
  • XML Example:
  <driver cache="writeback"/>
Enter fullscreen mode Exit fullscreen mode

10. driver.copy_on_read

  • Arti: Mengaktifkan atau menonaktifkan fitur copy-on-read.
  • Fungsi:
    • Jika diaktifkan (copy_on_read="on"), data yang dibaca dari backing image akan disalin ke disk utama (overlay).
    • Berguna untuk menghindari pembacaan berulang dari backing image yang lambat.
  • XML Example:
  <driver copy_on_read="on"/>
Enter fullscreen mode Exit fullscreen mode

11. driver.detect_zeroes

  • Arti: Mengontrol deteksi dan penanganan blok data yang berisi nol (zero blocks).
  • Fungsi:
    • Jika diatur ke on, blok nol akan dideteksi dan ditulis secara efisien (misalnya, sebagai lubang di file sparse).
    • Opsi: off, on, atau unmap (untuk melepaskan blok nol).
  • XML Example:
  <driver detect_zeroes="on"/>
Enter fullscreen mode Exit fullscreen mode

12. driver.discard

  • Arti: Mengaktifkan dukungan untuk perintah TRIM/DISCARD.
  • Fungsi:
    • Memungkinkan sistem operasi guest untuk memberi tahu host tentang blok data yang tidak lagi digunakan, sehingga host dapat mengoptimalkan penyimpanan.
    • Opsi: ignore (default), unmap (melepaskan blok yang tidak digunakan).
  • XML Example:
  <driver discard="unmap"/>
Enter fullscreen mode Exit fullscreen mode

13. driver.error_policy

  • Arti: Menentukan kebijakan penanganan kesalahan I/O.
  • Fungsi:
    • Opsi:
    • stop: Menghentikan VM jika terjadi kesalahan I/O.
    • report: Melaporkan kesalahan ke guest tanpa menghentikan VM.
    • ignore: Mengabaikan kesalahan I/O.
    • Berguna untuk mengontrol perilaku VM saat terjadi masalah disk.
  • XML Example:
  <driver error_policy="stop"/>
Enter fullscreen mode Exit fullscreen mode

14. driver.io

  • Arti: Mengatur mode I/O untuk disk.
  • Fungsi:
    • Opsi:
    • native: Menggunakan mekanisme I/O default host.
    • threads: Menggunakan thread terpisah untuk operasi I/O.
    • Berguna untuk mengoptimalkan performa I/O berdasarkan beban kerja.
  • Kriteria Pemilihan:
    • Gunakan io="native" Jika:
    • Kernel host modern (ΓëÑ 2.6.32) dengan dukungan AIO yang baik (misal: Linux ΓëÑ 5.1 dengan io_uring).
    • Storage backend mendukung AIO. Contoh: raw block device (LVM, iSCSI), filesystem yang mendukung O_DIRECT (XFS, ext4), atau format disk qcow2 dengan cache mode none/directsync.
    • Workload I/O intensif. Banyak operasi I/O paralel (misal: database, VM dengan disk aktif).
    • Gunakan io="threads" Jika:
    • Kernel host lama (< 2.6.32) atau ada bug pada AIO kernel.
    • Storage backend tidak mendukung AIO. Contoh: filesystem jaringan (NFS versi lama), format disk dengan cache mode writeback/writethrough, atau filesystem yang tidak kompatibel dengan O_DIRECT.
    • Workload I/O kecil atau terfragmentasi. Threads lebih toleran terhadap operasi I/O acak berskala kecil.
  • XML Example:
  <disk type="file" device="disk">
    <driver name="qemu" type="qcow2" cache="none" io="native"/>  <!-- atau io="threads" -->
    <source file="/path/to/disk.qcow2"/>
    <target dev="vda" bus="virtio"/>
  </disk>
Enter fullscreen mode Exit fullscreen mode

15. driver.iommu

  • Arti: Mengaktifkan dukungan IOMMU (Input-Output Memory Management Unit) untuk perangkat disk.
  • Fungsi:
    • Digunakan untuk isolasi dan manajemen memori yang lebih aman, terutama dalam konfigurasi passthrough.
  • XML Example:
  <driver iommu="on"/>
Enter fullscreen mode Exit fullscreen mode

16. driver.iothread

  • Arti: Mengaitkan disk dengan iothread tertentu.
  • Fungsi:
    • Memungkinkan operasi I/O disk berjalan di thread terpisah, meningkatkan performa dengan mengurangi kontensi CPU.
    • Berguna untuk VM dengan beban I/O tinggi.
    • Hanya tersedia untuk perangkat virtio modern.
  • XML Example:
  <domain>
  ...
  <iothreads>4</iothreads>
  ...
  <disk type="file" device="disk">
    <driver name="qemu" type="qcow2" copy_on_read="on" iothread="1"/>
    <source file="/var/libvirt/images/rocky-mariadb.vmdk"/>
    <target dev="vda" bus="virtio" rotation_rate="1"/>
  </disk>
  <disk type="file" device="disk">
    <driver name="qemu" type="qcow2" copy_on_read="on" iothread="2"/>
    <source file="/var/libvirt/images/rocky-mariadb-1.vmdk"/>
    <target dev="vdb" bus="virtio" rotation_rate="1"/>
  </disk>
  ...
</domain>
Enter fullscreen mode Exit fullscreen mode

17. driver.name

  • Arti: Menentukan driver backend yang digunakan untuk disk.
  • Fungsi:
    • Opsi umum: qemu (default), vhost-user, atau driver khusus lainnya.
    • Contoh: vhost-user digunakan untuk akses disk melalui proses terpisah (misalnya, dengan SPDK).
  • XML Example:
  <driver name="qemu"/>
Enter fullscreen mode Exit fullscreen mode

18. driver.packed

  • Arti: Mengaktifkan dukungan untuk packed virtqueues (hanya untuk perangkat virtio).
  • Fungsi:
    • Meningkatkan efisiensi dengan mengurangi overhead komunikasi antara guest dan host.
    • Hanya tersedia untuk perangkat virtio modern.
  • XML Example:
  <driver packed="on"/>
Enter fullscreen mode Exit fullscreen mode

19. driver.page_per_vq

  • Arti: Mengaktifkan fitur page-per-virtqueue untuk perangkat virtio.
  • Fungsi:
    • Mengalokasikan memori terpisah untuk setiap virtqueue, meningkatkan isolasi dan performa.
  • XML Example:
  <driver page_per_vq="on"/>
Enter fullscreen mode Exit fullscreen mode

20. driver.queues

  • Arti: Menentukan jumlah antrian (queues) untuk perangkat disk.
  • Fungsi:
    • Meningkatkan paralelisme dan performa I/O dengan menggunakan beberapa antrian.
    • Berguna untuk beban kerja I/O intensif.
  • XML Example:
  <driver queues="4"/>
Enter fullscreen mode Exit fullscreen mode

21. driver.type

  • Arti: Menentukan format disk yang digunakan.
  • Fungsi:
    • Opsi umum: raw, qcow2, vmdk, vhd, dll.
    • Menentukan format file/image yang digunakan untuk disk.
  • XML Example:
  <driver type="qcow2"/>
Enter fullscreen mode Exit fullscreen mode

22. geometry.cyls

  • Arti: Menentukan jumlah siklinder (cylinders) pada disk.
  • Fungsi:
    • Digunakan untuk menentukan geometri disk virtual (C/H/S: Cylinders/Heads/Sectors).
    • Biasanya diperlukan untuk kompatibilitas dengan sistem operasi lama yang bergantung pada geometri disk.
  • XML Example:
  <geometry cyls="16383"/>
Enter fullscreen mode Exit fullscreen mode

23. geometry.heads

  • Arti: Menentukan jumlah head pada disk.
  • Fungsi:
    • Bagian dari geometri disk (C/H/S).
    • Misalnya, nilai umum adalah 16 heads.
  • XML Example:
  <geometry heads="16"/>
Enter fullscreen mode Exit fullscreen mode

24. geometry.secs

  • Arti: Menentukan jumlah sektor (sectors) per track pada disk.
  • Fungsi:
    • Bagian dari geometri disk (C/H/S).
    • Misalnya, nilai umum adalah 63 sektor per track.
  • XML Example:
  <geometry secs="63"/>
Enter fullscreen mode Exit fullscreen mode

25. geometry.trans

  • Arti: Menentukan jenis translasi geometri disk.
  • Fungsi:
    • Digunakan untuk menentukan bagaimana geometri disk diterjemahkan ke alamat fisik.
    • Opsi: none, lba, auto.
    • Contoh: lba (Logical Block Addressing) adalah metode modern untuk mengakses disk.
  • XML Example:
  <geometry trans="lba"/>
Enter fullscreen mode Exit fullscreen mode

26. iotune.read_bytes_sec

  • Arti: Membatasi kecepatan baca (read) dalam byte per detik.
  • Fungsi:
    • Mengatur batas kecepatan baca untuk disk, berguna untuk membatasi penggunaan bandwidth.
    • Contoh: 10485760 untuk membatasi kecepatan baca hingga 10 MB/s.
  • XML Example:
  <iotune>
    <read_bytes_sec>10485760</read_bytes_sec>
  </iotune>
Enter fullscreen mode Exit fullscreen mode

27. iotune.read_iops_sec

  • Arti: Membatasi jumlah operasi baca (read) dalam IOPS (Input/Output Operations Per Second).
  • Fungsi:
    • Mengatur batas jumlah operasi baca per detik.
    • Contoh: 1000 untuk membatasi hingga 1000 operasi baca per detik.
  • XML Example:
  <iotune>
    <read_iops_sec>1000</read_iops_sec>
  </iotune>
Enter fullscreen mode Exit fullscreen mode

28. iotune.total_bytes_sec

  • Arti: Membatasi kecepatan total (baca + tulis) dalam byte per detik.
  • Fungsi:
    • Mengatur batas kecepatan total untuk semua operasi I/O (baca dan tulis).
    • Contoh: 20971520 untuk membatasi kecepatan total hingga 20 MB/s.
  • XML Example:
  <iotune>
    <total_bytes_sec>20971520</total_bytes_sec>
  </iotune>
Enter fullscreen mode Exit fullscreen mode

29. iotune.total_iops_sec

  • Arti: Membatasi jumlah total operasi I/O (baca + tulis) dalam IOPS.
  • Fungsi:
    • Mengatur batas jumlah total operasi I/O per detik.
    • Contoh: 2000 untuk membatasi hingga 2000 operasi I/O per detik.
  • XML Example:
  <iotune>
    <total_iops_sec>2000</total_iops_sec>
  </iotune>
Enter fullscreen mode Exit fullscreen mode

30. iotune.write_bytes_sec

  • Arti: Membatasi kecepatan tulis (write) dalam byte per detik.
  • Fungsi:
    • Mengatur batas kecepatan tulis untuk disk.
    • Contoh: 10485760 untuk membatasi kecepatan tulis hingga 10 MB/s.
  • XML Example:
  <iotune>
    <write_bytes_sec>10485760</write_bytes_sec>
  </iotune>
Enter fullscreen mode Exit fullscreen mode

31. iotune.write_iops_sec

  • Arti: Membatasi jumlah operasi tulis (write) dalam IOPS.
  • Fungsi:
    • Mengatur batas jumlah operasi tulis per detik.
    • Contoh: 1000 untuk membatasi hingga 1000 operasi tulis per detik.
  • XML Example:
  <iotune>
    <write_iops_sec>1000</write_iops_sec>
  </iotune>
Enter fullscreen mode Exit fullscreen mode

Berikut penjelasan mengenai atribut disk pada libvirt yang berkaitan dengan konfigurasi umum dan manajemen disk:


32. path

  • Arti: Menentukan jalur (path) ke file atau perangkat fisik yang digunakan sebagai disk.
  • Fungsi:
    • Menunjukkan lokasi file image (misalnya, /var/lib/libvirt/images/disk.qcow2) atau perangkat blok (misalnya, /dev/sdb).
    • Wajib diisi untuk disk tipe file atau block.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/disk.qcow2"/> <!-- path -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

33. pool

  • Arti: Menentukan pool penyimpanan (storage pool) yang digunakan untuk disk.
  • Fungsi:
    • Mengaitkan disk dengan pool penyimpanan yang telah didefinisikan di libvirt.
    • Libvirt akan mengelola lokasi file disk secara otomatis berdasarkan pool yang ditentukan.
  • XML Example:
  <disk type="volume" device="disk">
    <source pool="default" volume="disk.qcow2"/> <!-- pool -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

34. rawio

  • Arti: Mengaktifkan akses I/O mentah (raw) ke perangkat disk.
  • Fungsi:
    • Digunakan untuk perangkat blok yang memerlukan akses langsung (misalnya, perangkat SCSI atau disk passthrough).
    • Membutuhkan izin khusus (biasanya akses root).
  • XML Example:
  <disk type="block" device="disk">
    <source dev="/dev/sdb"/>
    <rawio/> <!-- rawio -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

35. readonly

  • Arti: Menandai disk sebagai hanya baca (read-only).
  • Fungsi:
    • Mencegah VM menulis ke disk.
    • Berguna untuk disk yang berisi data statis atau template.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/disk.qcow2"/>
    <readonly/> <!-- readonly -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

36. serial

  • Arti: Menentukan nomor seri (serial number) untuk disk.
  • Fungsi:
    • Memberikan identifikasi unik untuk disk, yang dapat dilihat oleh sistem operasi guest.
    • Berguna untuk skenario seperti multipath atau identifikasi disk di dalam guest.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/disk.qcow2"/>
    <serial>1234-ABCD</serial> <!-- serial -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

37. sgio

  • Arti: Mengontrol mode SCSI Generic I/O (SG_IO) untuk perangkat disk.
  • Fungsi:
    • Opsi: filtered (default) atau unfiltered.
    • unfiltered memungkinkan akses langsung ke perintah SCSI tingkat rendah, tetapi membutuhkan izin khusus.
  • XML Example:
  <disk type="block" device="disk">
    <source dev="/dev/sdb"/>
    <sgio>unfiltered</sgio> <!-- sgio -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

38. shareable

  • Arti: Menandai disk sebagai dapat dibagikan (shareable).
  • Fungsi:
    • Memungkinkan disk diakses oleh lebih dari satu VM secara bersamaan.
    • Berguna untuk skenario seperti disk bersama (shared storage) atau clustering.
    • Peringatan: Harus digunakan dengan hati-hati untuk menghindari korupsi data.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/shared_disk.qcow2"/>
    <shareable/> <!-- shareable -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

39. size

  • Arti: Menentukan ukuran disk dalam byte.
  • Fungsi:
    • Digunakan saat membuat disk baru untuk menentukan ukurannya.
    • Contoh: 10737418240 untuk disk berukuran 10 GB.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/disk.qcow2"/>
    <capacity unit="bytes">10737418240</capacity> <!-- size -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

40. snapshot

  • Arti: Menentukan perilaku disk saat snapshot diambil.
  • Fungsi:
    • Opsi:
    • internal: Snapshot disimpan di dalam file image disk.
    • external: Snapshot disimpan di file terpisah.
    • no: Disk tidak mendukung snapshot.
    • Berguna untuk mengontrol apakah disk dapat di-snapshot atau tidak.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/disk.qcow2"/>
    <snapshot type="internal"/> <!-- snapshot -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

41. source.dev

  • Arti: Menentukan perangkat blok fisik (block device) sebagai sumber disk.
  • Fungsi:
    • Digunakan untuk mengaitkan disk dengan perangkat blok di host (misalnya, /dev/sdb).
    • Umumnya digunakan untuk tipe disk block.
  • XML Example:
  <disk type="block" device="disk">
    <source dev="/dev/sdb"/> <!-- source.dev -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

42. source.dir

  • Arti: Menentukan direktori sebagai sumber disk.
  • Fungsi:
    • Digunakan untuk tipe disk dir, di mana direktori di-host dianggap sebagai disk.
    • Contoh: Direktori berisi file-file kecil yang dianggap sebagai blok disk.
  • XML Example:
  <disk type="dir" device="disk">
    <source dir="/path/to/directory"/> <!-- source.dir -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

43. source.file

  • Arti: Menentukan file sebagai sumber disk.
  • Fungsi:
    • Digunakan untuk tipe disk file, di mana file image (misalnya, qcow2, raw) digunakan sebagai disk.
    • Contoh: /var/lib/libvirt/images/disk.qcow2.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/disk.qcow2"/> <!-- source.file -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

44. source.host[0-9]*.name

  • Arti: Menentukan nama host untuk sumber disk berbasis jaringan.
  • Fungsi:
    • Digunakan untuk disk yang diakses melalui jaringan (misalnya, NBD, iSCSI, atau Gluster).
    • Contoh: server.example.com.
  • XML Example:
  <disk type="network" device="disk">
    <source protocol="nbd">
      <host name="server.example.com"/> <!-- source.host.name -->
    </source>
  </disk>
Enter fullscreen mode Exit fullscreen mode

45. source.host[0-9]*.port

  • Arti: Menentukan port untuk sumber disk berbasis jaringan.
  • Fungsi:
    • Menentukan port yang digunakan untuk mengakses sumber disk (misalnya, port 10809 untuk NBD).
  • XML Example:
  <disk type="network" device="disk">
    <source protocol="nbd">
      <host name="server.example.com" port="10809"/> <!-- source.host.port -->
    </source>
  </disk>
Enter fullscreen mode Exit fullscreen mode

46. source.host[0-9]*.socket

  • Arti: Menentukan socket untuk sumber disk berbasis jaringan.
  • Fungsi:
    • Digunakan untuk koneksi berbasis socket (misalnya, Unix domain socket).
  • XML Example:
  <disk type="network" device="disk">
    <source protocol="nbd">
      <host socket="/path/to/socket"/> <!-- source.host.socket -->
    </source>
  </disk>
Enter fullscreen mode Exit fullscreen mode

47. source.host[0-9]*.transport

  • Arti: Menentukan jenis transport untuk sumber disk berbasis jaringan.
  • Fungsi:
    • Opsi: tcp, rdma, atau unix (untuk socket).
    • Contoh: tcp untuk koneksi jaringan biasa.
  • XML Example:
  <disk type="network" device="disk">
    <source protocol="nbd">
      <host name="server.example.com" transport="tcp"/> <!-- source.host.transport -->
    </source>
  </disk>
Enter fullscreen mode Exit fullscreen mode

48. source.managed

  • Arti: Menentukan apakah sumber disk dikelola oleh libvirt.
  • Fungsi:
    • Jika yes, libvirt akan mengelola sumber disk (misalnya, membuat atau menghapus file image).
    • Jika no, pengguna bertanggung jawab untuk mengelola sumber disk.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/disk.qcow2" managed="yes"/> <!-- source.managed -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

49. source.name

  • Arti: Menentukan nama sumber disk.
  • Fungsi:
    • Digunakan untuk sumber disk tertentu (misalnya, volume di pool penyimpanan atau LUN di iSCSI).
  • XML Example:
  <disk type="volume" device="disk">
    <source pool="default" volume="disk.qcow2"/> <!-- source.name -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

50. source.namespace

  • Arti: Menentukan namespace untuk sumber disk berbasis NVMe.
  • Fungsi:
    • Digunakan untuk mengakses namespace tertentu di perangkat NVMe.
  • XML Example:
  <disk type="block" device="disk">
    <source dev="/dev/nvme0n1" namespace="1"/> <!-- source.namespace -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

51. source.pool

  • Arti: Menentukan pool penyimpanan (storage pool) untuk sumber disk.
  • Fungsi:
    • Digunakan untuk mengaitkan disk dengan pool penyimpanan yang telah didefinisikan di libvirt.
  • XML Example:
  <disk type="volume" device="disk">
    <source pool="default" volume="disk.qcow2"/> <!-- source.pool -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

52. source.protocol

  • Arti: Menentukan protokol untuk sumber disk berbasis jaringan.
  • Fungsi:
    • Opsi: nbd, rbd, gluster, iscsi, http, dll.
    • Contoh: rbd untuk disk yang diakses melalui Ceph RBD.
  • XML Example:
  <disk type="network" device="disk">
    <source protocol="rbd"/> <!-- source.protocol -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

53. source.reservations.managed

  • Arti: Menentukan apakah reservasi sumber disk dikelola oleh libvirt.
  • Fungsi:
    • Jika yes, libvirt akan mengelola reservasi sumber disk.
  • XML Example:
  <disk type="block" device="disk">
    <source dev="/dev/sdb">
      <reservations managed="yes"/> <!-- source.reservations.managed -->
    </source>
  </disk>
Enter fullscreen mode Exit fullscreen mode

54. source.reservations.source.mode

  • Arti: Menentukan mode reservasi untuk sumber disk.
  • Fungsi:
    • Opsi: shared atau exclusive.
    • Contoh: exclusive untuk memastikan hanya satu VM yang dapat mengakses disk.
  • XML Example:
  <disk type="block" device="disk">
    <source dev="/dev/sdb">
      <reservations>
        <source mode="exclusive"/> <!-- source.reservations.source.mode -->
      </reservations>
    </source>
  </disk>
Enter fullscreen mode Exit fullscreen mode

55. source.reservations.source.path

  • Arti: Menentukan path untuk reservasi sumber disk.
  • Fungsi:
    • Digunakan untuk menentukan lokasi reservasi (misalnya, file lock).
  • XML Example:
  <disk type="block" device="disk">
    <source dev="/dev/sdb">
      <reservations>
        <source path="/path/to/lock"/> <!-- source.reservations.source.path -->
      </reservations>
    </source>
  </disk>
Enter fullscreen mode Exit fullscreen mode

56. source.reservations.source.type

  • Arti: Menentukan jenis reservasi untuk sumber disk.
  • Fungsi:
    • Opsi: unix, tcp, dll.
    • Contoh: unix untuk reservasi berbasis Unix domain socket.
  • XML Example:
  <disk type="block" device="disk">
    <source dev="/dev/sdb">
      <reservations>
        <source type="unix"/> <!-- source.reservations.source.type -->
      </reservations>
    </source>
  </disk>
Enter fullscreen mode Exit fullscreen mode

57. source.seclabel[0-9]*.label

  • Arti: Menentukan label keamanan (SELinux atau AppArmor) untuk sumber disk.
  • Fungsi:
    • Digunakan untuk menerapkan kebijakan keamanan pada sumber disk.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/disk.qcow2">
      <seclabel model="selinux" label="system_u:object_r:svirt_image_t:s0"/> <!-- source.seclabel.label -->
    </source>
  </disk>
Enter fullscreen mode Exit fullscreen mode

58. source.seclabel[0-9]*.model

  • Arti: Menentukan model keamanan (SELinux, AppArmor, dll.) untuk sumber disk.
  • Fungsi:
    • Contoh: selinux untuk menggunakan model SELinux.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/disk.qcow2">
      <seclabel model="selinux"/> <!-- source.seclabel.model -->
    </source>
  </disk>
Enter fullscreen mode Exit fullscreen mode

59. source.seclabel[0-9]*.relabel

  • Arti: Menentukan apakah label keamanan harus diterapkan ulang (relabel) pada sumber disk.
  • Fungsi:
    • Jika yes, label keamanan akan diterapkan ulang saat VM dijalankan.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/disk.qcow2">
      <seclabel model="selinux" relabel="yes"/> <!-- source.seclabel.relabel -->
    </source>
  </disk>
Enter fullscreen mode Exit fullscreen mode

60. source.startupPolicy

  • Arti: Menentukan kebijakan saat startup jika sumber disk tidak tersedia.
  • Fungsi:
    • Opsi: mandatory (gagal jika sumber tidak ada), requisite (gagal jika sumber tidak ada, tetapi tidak memblokir), optional (lanjut tanpa sumber).
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/disk.qcow2" startupPolicy="optional"/> <!-- source.startupPolicy -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

61. source.type

  • Arti: Menentukan jenis sumber disk.
  • Fungsi:
    • Opsi: file, block, network, volume, dir, dll.
    • Contoh: file untuk disk berbasis file image.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/disk.qcow2"/> <!-- source.type -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

Berikut penjelasan mengenai atribut disk pada libvirt yang berkaitan dengan konfigurasi target, tipe, dan properti tambahan:


62. sparse

  • Arti: Menentukan apakah file image disk harus dibuat sebagai sparse file.
  • Fungsi:
    • Jika yes, file image akan menggunakan alokasi sparse (hanya mengalokasikan ruang untuk data yang benar-benar ditulis).
    • Berguna untuk menghemat ruang penyimpanan.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/disk.qcow2"/>
    <sparse>yes</sparse> <!-- sparse -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

63. target.bus

  • Arti: Menentukan jenis bus yang digunakan untuk menghubungkan disk ke VM.
  • Fungsi:
    • Opsi: ide, scsi, virtio, usb, sata, xen, dll.
    • Contoh: virtio untuk performa optimal pada kebanyakan kasus.
  • XML Example:
  <disk type="file" device="disk">
    <target dev="vda" bus="virtio"/> <!-- target.bus -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

64. target.dev

  • Arti: Menentukan nama perangkat disk di dalam VM.
  • Fungsi:
    • Contoh: vda untuk disk pertama di bus virtio, atau hdb untuk disk kedua di bus ide.
    • Nama ini akan terlihat oleh sistem operasi guest.
  • XML Example:
  <disk type="file" device="disk">
    <target dev="vda"/> <!-- target.dev -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

65. target.removable

  • Arti: Menentukan apakah disk dianggap sebagai perangkat removable (dapat dilepas) oleh VM.
  • Fungsi:
    • Jika yes, sistem operasi guest akan memperlakukan disk sebagai perangkat yang dapat dilepas (misalnya, USB drive).
  • XML Example:
  <disk type="file" device="disk">
    <target dev="sda" removable="yes"/> <!-- target.removable -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

66. target.rotation_rate

  • Arti: Menentukan kecepatan rotasi (rotation rate) untuk disk, dalam RPM (Rotations Per Minute).
  • Fungsi:
    • Berguna untuk mensimulasikan disk HDD atau SSD di dalam VM.
    • Contoh: 5400 untuk HDD lambat, atau 1 untuk SSD (tidak berputar).
  • XML Example:
  <disk type="file" device="disk">
    <target dev="vda" rotation_rate="5400"/> <!-- target.rotation_rate -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

67. transient

  • Arti: Menentukan apakah disk bersifat transient (sementara).
  • Fungsi:
    • Jika yes, disk akan dihapus secara otomatis saat VM dimatikan.
    • Berguna untuk disk sementara yang hanya diperlukan selama VM berjalan.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/temp_disk.qcow2"/>
    <transient/> <!-- transient -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

68. transient.shareBacking

  • Arti: Menentukan apakah disk transient dapat berbagi backing store dengan disk lain.
  • Fungsi:
    • Jika yes, disk transient dapat menggunakan backing store yang sama dengan disk lain.
    • Berguna untuk menghemat ruang penyimpanan.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/temp_disk.qcow2"/>
    <transient shareBacking="yes"/> <!-- transient.shareBacking -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

69. type

  • Arti: Menentukan jenis disk.
  • Fungsi:
    • Opsi: file (file image), block (perangkat blok), network (disk berbasis jaringan), volume (volume di pool penyimpanan), dir (direktori), dll.
    • Contoh: file untuk disk berbasis file image.
  • XML Example:
  <disk type="file" device="disk"> <!-- type -->
    <source file="/var/lib/libvirt/images/disk.qcow2"/>
  </disk>
Enter fullscreen mode Exit fullscreen mode

70. vol

  • Arti: Menentukan volume di pool penyimpanan sebagai sumber disk.
  • Fungsi:
    • Digunakan untuk mengaitkan disk dengan volume yang telah didefinisikan di pool penyimpanan libvirt.
  • XML Example:
  <disk type="volume" device="disk">
    <source pool="default" volume="disk.qcow2"/> <!-- vol -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

71. wwn

  • Arti: Menentukan World Wide Name (WWN) untuk disk.
  • Fungsi:
    • Memberikan identifikasi unik global untuk disk, yang dapat dilihat oleh sistem operasi guest.
    • Berguna untuk skenario seperti multipath atau identifikasi disk di dalam guest.
  • XML Example:
  <disk type="file" device="disk">
    <source file="/var/lib/libvirt/images/disk.qcow2"/>
    <wwn>5001a4a000000001</wwn> <!-- wwn -->
  </disk>
Enter fullscreen mode Exit fullscreen mode

NETWORK

Berikut adalah penjelasan mengenai atribut-atribut Libvirt yang terkait dengan konfigurasi jaringan:

1. alias.name

  • Fungsi: Memberikan nama alias untuk perangkat jaringan, memudahkan referensi dalam operasi manajemen (e.g., di virsh).
  • Contoh:
  <alias name="net0"/>
Enter fullscreen mode Exit fullscreen mode

Perangkat dapat diacu dengan net0 alih-alih alamat PCI.


2. boot.loadparm

  • Fungsi: Menentukan parameter boot untuk firmware tertentu (misalnya, pada sistem s390x atau virtio).
  • Contoh:
  <boot loadparm='LINUX'/>
Enter fullscreen mode Exit fullscreen mode

3. boot.order

  • Fungsi: Mengatur urutan prioritas boot perangkat. Nilai lebih rendah berarti prioritas lebih tinggi.
  • Contoh:
  <boot order='1'/>
Enter fullscreen mode Exit fullscreen mode

Perangkat ini akan diprioritaskan pertama saat boot.


4. bridge

  • Fungsi: Menentukan nama bridge host yang digunakan untuk menghubungkan antarmuka jaringan virtual.
  • Contoh:
  <source bridge='br0'/>
Enter fullscreen mode Exit fullscreen mode

VM terhubung ke bridge fisik br0.


5. Driver-related Attributes

  • driver.ats: Mengaktifkan Address Translation Services untuk optimasi DMA (untuk perangkat PCIe).
  • driver.iommu: Mengaktifkan dukungan IOMMU (isolasi memori untuk perangkat).
  • driver.name: Menentukan driver backend (e.g., virtio, vhost, e1000).
  • driver.packed: Mengaktifkan mode packed virtqueues (optimasi performa Virtio).
  • driver.page_per_vq: Mengalokasikan satu halaman memori per virtqueue.
  • driver.queues: Menentukan jumlah antrian (queues) untuk multiqueue (meningkatkan throughput).

Contoh:

<driver name='vhost' queues='4' packed='on' iommu='on'/>
Enter fullscreen mode Exit fullscreen mode

6. filterref.filter

  • Fungsi: Menerapkan filter jaringan (firewall berbasis MAC/ARP/IP) ke antarmuka.
  • Contoh:
  <filterref filter='clean-traffic'/>
Enter fullscreen mode Exit fullscreen mode

Filter clean-traffic akan memblokir traffic tidak valid.


7. link.state

  • Fungsi: Mengontrol status fisik antarmuka jaringan (up/down).
  • Contoh:
  <link state='down'/>
Enter fullscreen mode Exit fullscreen mode

Menonaktifkan koneksi jaringan untuk simulasi gangguan.


8. mac dan mac.address

  • Fungsi: Menentukan alamat MAC untuk antarmuka jaringan virtual.
    • mac: Elemen XML yang mengandung atribut address.
    • mac.address: Nilai alamat MAC yang digunakan.
  • Contoh:
  <mac address='52:54:00:12:34:56'/>
Enter fullscreen mode Exit fullscreen mode

Ini akan mengatur alamat MAC antarmuka jaringan ke 52:54:00:12:34:56.


9. model dan model.type

  • Fungsi: Menentukan model perangkat jaringan emulasi.
    • model: Elemen XML yang mengandung atribut type.
    • model.type: Jenis model perangkat jaringan (e.g., virtio, e1000, rtl8139).
  • Contoh:
  <model type='virtio'/>
Enter fullscreen mode Exit fullscreen mode

Menggunakan driver virtio untuk performa optimal.


10. mtu.size

  • Fungsi: Menentukan Maximum Transmission Unit (MTU) untuk antarmuka jaringan.
  • Contoh:
  <mtu size='9000'/>
Enter fullscreen mode Exit fullscreen mode

Mengatur MTU ke 9000 byte (untuk jaringan jumbo frames).


11. network

  • Fungsi: Menghubungkan antarmuka jaringan virtual ke jaringan virtual yang sudah didefinisikan di Libvirt.
  • Contoh:
  <source network='default'/>
Enter fullscreen mode Exit fullscreen mode

Menghubungkan VM ke jaringan virtual bernama default.


12. rom.bar

  • Fungsi: Mengontrol apakah ROM perangkat jaringan (e.g., PXE boot) terlihat di ruang memori BAR (Base Address Register).
  • Contoh:
  <rom bar='off'/>
Enter fullscreen mode Exit fullscreen mode

Menonaktifkan ROM dari ruang memori BAR.


13. rom.file

  • Fungsi: Menentukan file ROM kustom untuk perangkat jaringan.
  • Contoh:
  <rom file='/path/to/custom.rom'/>
Enter fullscreen mode Exit fullscreen mode

Menggunakan ROM kustom untuk boot PXE atau lainnya.


14. source

  • Fungsi: Menentukan sumber koneksi jaringan (e.g., bridge, jaringan virtual, atau passthrough).
  • Contoh:
  <source bridge='br0'/>
Enter fullscreen mode Exit fullscreen mode

Menghubungkan VM ke bridge fisik br0.


15. source.mode

  • Fungsi: Menentukan mode sumber jaringan (e.g., bridge, vepa, passthrough).
  • Contoh:
  <source mode='vepa'/>
Enter fullscreen mode Exit fullscreen mode

Menggunakan mode VEPA (Virtual Ethernet Port Aggregator).


16. source.path

  • Fungsi: Menentukan path ke sumber jaringan (e.g., path ke tap device atau VFIO passthrough).
  • Contoh:
  <source path='/dev/vhost-net'/>
Enter fullscreen mode Exit fullscreen mode

Menggunakan device vhost-net untuk akselerasi jaringan.


17. source.portgroup

  • Fungsi: Menentukan grup port dalam jaringan virtual (untuk QoS atau filter khusus).
  • Contoh:
  <source portgroup='high-priority'/>
Enter fullscreen mode Exit fullscreen mode

Menggunakan grup port high-priority yang sudah dikonfigurasi.


18. source.type

  • Fungsi: Menentukan jenis sumber jaringan (e.g., bridge, network, direct, user).
  • Contoh:
  <source type='network'/>
Enter fullscreen mode Exit fullscreen mode

Menghubungkan VM ke jaringan virtual.


19. target.dev

  • Fungsi: Menentukan nama perangkat jaringan di dalam VM.
  • Contoh:
  <target dev='vnet0'/>
Enter fullscreen mode Exit fullscreen mode

Perangkat akan muncul di VM sebagai vnet0.


20. trustGuestRxFilters

  • Fungsi: Mengizinkan VM untuk mengontrol filter penerimaan (RX) paket (e.g., MAC atau VLAN).
  • Contoh:
  <interface type='network' trustGuestRxFilters='yes'>
    <alias name='ua-myNIC'/>
  </interface>
Enter fullscreen mode Exit fullscreen mode

Mempercayai filter yang diterapkan oleh guest OS.


21. type

  • Fungsi: Menentukan jenis antarmuka jaringan virtual.
    • Nilai yang umum digunakan:
    • network: Menghubungkan VM ke jaringan virtual yang didefinisikan di Libvirt.
    • bridge: Menghubungkan VM ke bridge fisik atau logikal di host.
    • direct: Menggunakan passthrough langsung ke antarmuka fisik host.
    • user: Menggunakan jaringan NAT berbasis user (tanpa konfigurasi bridge).
    • ethernet: Untuk jaringan berbasis Ethernet.
    • vhostuser: Menggunakan vhost-user untuk akselerasi jaringan (umumnya dengan DPDK).
  • Contoh:
  <interface type='network'>
    <source network='default'/>
  </interface>
Enter fullscreen mode Exit fullscreen mode

Menghubungkan VM ke jaringan virtual default.


22. virtualport.parameters.instanceid

  • Fungsi: Menentukan ID unik untuk instance virtual port (digunakan dalam jaringan Open vSwitch atau VEPA).
  • Contoh:
  <virtualport type='openvswitch'>
    <parameters instanceid='00000000-0000-0000-0000-000000000001'/>
  </virtualport>
Enter fullscreen mode Exit fullscreen mode

23. virtualport.parameters.interfaceid

  • Fungsi: Menentukan ID unik untuk antarmuka virtual port (digunakan dalam jaringan Open vSwitch atau VEPA).
  • Contoh:
  <virtualport type='openvswitch'>
    <parameters interfaceid='00000000-0000-0000-0000-000000000002'/>
  </virtualport>
Enter fullscreen mode Exit fullscreen mode

24. virtualport.parameters.managerid

  • Fungsi: Menentukan ID manajer yang bertanggung jawab atas virtual port (digunakan dalam jaringan Open vSwitch atau VEPA).
  • Contoh:
  <virtualport type='openvswitch'>
    <parameters managerid='00000000-0000-0000-0000-000000000003'/>
  </virtualport>
Enter fullscreen mode Exit fullscreen mode

25. virtualport.parameters.profileid

  • Fungsi: Menentukan ID profil yang digunakan untuk konfigurasi virtual port (misalnya, QoS atau filter).
  • Contoh:
  <virtualport type='openvswitch'>
    <parameters profileid='high-priority'/>
  </virtualport>
Enter fullscreen mode Exit fullscreen mode

26. virtualport.parameters.typeid

  • Fungsi: Menentukan ID tipe untuk virtual port (digunakan dalam jaringan Open vSwitch atau VEPA).
  • Contoh:
  <virtualport type='openvswitch'>
    <parameters typeid='00000000-0000-0000-0000-000000000004'/>
  </virtualport>
Enter fullscreen mode Exit fullscreen mode

27. virtualport.parameters.typeidversion

  • Fungsi: Menentukan versi ID tipe untuk virtual port (digunakan dalam jaringan Open vSwitch atau VEPA).
  • Contoh:
  <virtualport type='openvswitch'>
    <parameters typeidversion='1'/>
  </virtualport>
Enter fullscreen mode Exit fullscreen mode

28. virtualport.type

  • Fungsi: Menentukan jenis virtual port yang digunakan.
    • Nilai yang umum digunakan:
    • openvswitch: Menggunakan Open vSwitch untuk virtual port.
    • 802.1Qbh: Menggunakan standar IEEE 802.1Qbh (Virtual Ethernet Port Aggregator - VEPA).
    • 802.1Qbg: Menggunakan standar IEEE 802.1Qbg (Virtual Ethernet Bridging - VEB).
    • midonet: Menggunakan MidoNet untuk virtual port.
  • Contoh:
  <virtualport type='openvswitch'/>
Enter fullscreen mode Exit fullscreen mode

GRAPHICS

Berikut adalah penjelasan mengenai atribut-atribut dalam elemen <graphics> di libvirt, yang digunakan untuk mengkonfigurasi tampilan grafis mesin virtual (VM):

1. alias.name

Nama alias yang ditentukan pengguna untuk perangkat grafis, memudahkan referensi dalam konfigurasi lain.

2. clipboard.copypaste (boolean)

Mengaktifkan/menonaktifkan fitur salin-tempel (clipboard) antara host dan guest. Umumnya digunakan dengan protokol SPICE.

3. connected (status)

Menunjukkan status koneksi grafis saat ini (misal: keep atau disconnect).

4. defaultMode

Mode akses default:

  • secure: Hanya koneksi terenkripsi yang diizinkan.
  • insecure: Koneksi tanpa enkripsi diizinkan (untuk VNC/SPICE).
  • any: Keduanya diizinkan.

5. filetransfer.enable (boolean)

Mengaktifkan transfer file melalui protokol SPICE.

6. gl.enable (boolean)

Mengaktifkan akselerasi OpenGL/GPU virtual (misal: untuk SPICE dengan virtual GPU).

7. gl.rendernode

Menentukan node render GPU fisik (DRM render node) untuk akselerasi grafis (contoh: /dev/dri/renderD128).

8. image.compression

Kompresi gambar untuk menghemat bandwidth. Opsi:

  • auto_glz, auto_lz, quic, glz, lz, off (tergantung protokol).

9. keymap

Tata letak keyboard (misal: en-us, de, fr).

10. listen

Alamat IP tempat server grafis mendengarkan (misal: `0.0.0.0` untuk semua antarmuka).
Enter fullscreen mode Exit fullscreen mode

11. listens[0-9]*.address

Alamat IP spesifik untuk instance listen tertentu (misal: `listens0.address=192.168.1.10`).
Enter fullscreen mode Exit fullscreen mode

12. listens[0-9]*.network

Nama jaringan virtual tempat server grafis mendengarkan (misal: `default`).
Enter fullscreen mode Exit fullscreen mode

13. listens[0-9]*.socket

Path ke socket UNIX untuk koneksi lokal (misal: `/var/lib/libvirt/qemu/domain-1-socket`).
Enter fullscreen mode Exit fullscreen mode

14. listens[0-9]*.type

Tipe listen:
- `address`: Mendengarkan alamat IP.
- `network`: Terikat ke jaringan virtual.
- `socket`: Menggunakan socket UNIX.
- `none`: Tidak mendengarkan koneksi eksternal.
Enter fullscreen mode Exit fullscreen mode

15. mouse.mode

Mode kursor:
- `client`: Kursor dikontrol oleh aplikasi klien.
- `server`: Kursor dikontrol oleh guest OS.
Enter fullscreen mode Exit fullscreen mode

16. password

Kata sandi untuk mengakses tampilan grafis (jika autentikasi diaktifkan).
Enter fullscreen mode Exit fullscreen mode

17. passwordValidTo

Masa berlaku kata sandi (format waktu ISO 8601, contoh: `2024-12-31T23:59:59`).
Enter fullscreen mode Exit fullscreen mode

18. port

Port TCP untuk koneksi grafis (misal: `5900` untuk VNC, `5901` untuk SPICE).
Enter fullscreen mode Exit fullscreen mode

19. streaming.mode

Mode streaming video (untuk SPICE):
- `filter`: Hanya mengirim area yang berubah.
- `all`: Mengirim semua frame.
Enter fullscreen mode Exit fullscreen mode

20. tlsPort

Port untuk koneksi terenkripsi TLS (misal: `5902`).
Enter fullscreen mode Exit fullscreen mode

21. type

Protokol grafis yang digunakan:
- `vnc`: Remote desktop via VNC.
- `spice`: Protokol modern dengan dukungan GPU, audio, dll.
- `sdl`: Tampilan lokal menggunakan Simple DirectMedia Layer.
- `egl-headless`: Tanpa tampilan, untuk akselerasi GPU headless.
Enter fullscreen mode Exit fullscreen mode

Catatan:

  • SPICE vs VNC: Atribut seperti gl.enable, filetransfer.enable, dan streaming.mode hanya berlaku untuk SPICE.
  • Multiple Listeners: Gunakan pola listens0, listens1, dst., untuk mengikat ke beberapa alamat/jaringan.
  • Keamanan: Gunakan defaultMode=secure dan tlsPort untuk koneksi terenkripsi.

Contoh konfigurasi SPICE dengan akselerasi OpenGL:

<graphics type="spice" port="5901" listen="0.0.0.0" defaultMode="secure">
  <gl enable="yes" rendernode="/dev/dri/renderD128"/>
  <clipboard copypaste="yes"/>
</graphics>
Enter fullscreen mode Exit fullscreen mode

22. websocket:

  • websocket adalah protokol komunikasi yang memungkinkan komunikasi dua arah antara klien dan server melalui koneksi TCP yang persisten.
  • Dalam konteks libvirt, ketika websocket diaktifkan, ini memungkinkan akses ke tampilan grafis VM melalui protokol WebSocket. Ini berguna jika Anda ingin mengakses konsol grafis VM melalui browser web atau aplikasi lain yang mendukung WebSocket.
  • Contoh penggunaan: Jika Anda menggunakan VNC (Virtual Network Computing) untuk mengakses tampilan grafis VM, Anda bisa mengonfigurasi VNC untuk menggunakan WebSocket sebagai transport layer, sehingga memungkinkan akses melalui browser web.

23. zlib.compression:

  • zlib.compression mengacu pada penggunaan kompresi data menggunakan library zlib untuk mengurangi ukuran data yang dikirimkan melalui jaringan.
  • Dalam konteks libvirt, ketika zlib.compression diaktifkan, data grafis yang dikirimkan dari VM ke klien (misalnya, melalui VNC atau SPICE) akan dikompresi terlebih dahulu menggunakan algoritma kompresi zlib. Ini dapat mengurangi bandwidth yang digunakan dan meningkatkan kinerja, terutama pada koneksi jaringan yang lambat.
  • Contoh penggunaan: Jika Anda menggunakan SPICE (Simple Protocol for Independent Computing Environments) untuk mengakses tampilan grafis VM, Anda bisa mengaktifkan kompresi zlib untuk mengurangi latensi dan meningkatkan responsivitas.

Contoh Konfigurasi dalam XML Libvirt:

Berikut adalah contoh bagaimana atribut GRAPHICS dengan websocket dan zlib.compression mungkin dikonfigurasi dalam file XML domain libvirt:

<graphics type='vnc' port='-1' autoport='yes' websocket='5700'>
  <compression type='zlib'/>
</graphics>
Enter fullscreen mode Exit fullscreen mode
  • type='vnc': Menentukan bahwa protokol grafis yang digunakan adalah VNC.
  • websocket='5700': Mengaktifkan WebSocket pada port 5700 untuk akses melalui browser web.
  • <compression type='zlib'/>: Mengaktifkan kompresi zlib untuk data grafis yang dikirimkan.

Dengan konfigurasi ini, Anda dapat mengakses tampilan grafis VM melalui VNC dengan dukungan WebSocket dan kompresi zlib untuk meningkatkan efisiensi jaringan.

CONTROLLER

Berikut adalah penjelasan tentang atribut-atribut CONTROLLER dalam libvirt:

Driver Attributes (Umumnya untuk Virtio/PCIe)

1. driver.ats

  • Mengaktifkan Address Translation Services (ATS) pada PCIe controller.
  • Berguna untuk meningkatkan kinerja PCI passthrough dengan mengizinkan perangkat melakukan translasi alamat DMA sendiri.
  • Nilai: "on" atau "off".

2. driver.iommu

  • Mengaktifkan dukungan IOMMU (Input-Output Memory Management Unit) untuk isolasi DMA dan keamanan.
  • Diperlukan untuk VFIO passthrough atau SR-IOV.
  • Nilai: "on" atau "off".

3. driver.iothread

  • Menetapkan controller ke IOThread khusus untuk meningkatkan kinerja I/O dengan mengurangi kontenksi CPU.
  • Umumnya digunakan untuk disk/net virtio.
  • XML Example:
    <domain>
      ...
      <iothreads>4</iothreads>
      ...
      <controller type="scsi" model="virtio-scsi">
        <driver queues="16" iothread="4"/>
      </controller>
      ...
    </domain>
Enter fullscreen mode Exit fullscreen mode
  • validasi dengan perintah berikut.
   $ pidstat -t -p QEMU-PID
   Linux 6.8.0-55-generic (nova.topan.host)        03/29/2025      _x86_64_        (2 CPU)

   11:05:16 PM   UID      TGID       TID    %usr %system  %guest   %wait    %CPU   CPU  Command
   11:05:16 PM  1000      1795         -    0.33    0.75    2.46    0.01    3.54     0  qemu-system-x86
   11:05:16 PM  1000         -      1795    0.04    0.05    0.00    0.01    0.09     0  |__qemu-system-x86
   11:05:16 PM  1000         -      1811    0.00    0.00    0.00    0.00    0.00     1  |__qemu-system-x86
   11:05:16 PM  1000         -      1814    0.00    0.00    0.00    0.00    0.00     1  |__IO iothread1
   11:05:16 PM  1000         -      1815    0.00    0.00    0.00    0.00    0.00     0  |__IO iothread2
   11:05:16 PM  1000         -      1817    0.00    0.00    0.00    0.00    0.00     1  |__IO iothread3
   11:05:16 PM  1000         -      1819    0.04    0.04    0.00    0.04    0.08     0  |__IO iothread4
   11:05:16 PM  1000         -      1825    0.00    0.01    0.00    0.01    0.01     1  |__vhost-1795
   11:05:16 PM  1000         -      1826    0.00    0.01    0.00    0.01    0.01     0  |__vhost-1795
   11:05:16 PM  1000         -      1827    0.01    0.00    0.00    0.00    0.01     1  |__IO mon_iothread
   11:05:16 PM  1000         -      1829    0.15    0.34    1.34    0.12    1.83     0  |__CPU 0/KVM
   11:05:16 PM  1000         -      1830    0.08    0.19    1.12    0.11    1.40     1  |__CPU 1/KVM
   11:05:16 PM  1000         -      1840    0.00    0.00    0.00    0.00    0.00     1  |__vnc_worker
   11:05:16 PM  1000         -      2230    0.00    0.00    0.00    0.00    0.00     1  |__worker
Enter fullscreen mode Exit fullscreen mode

4. driver.packed

  • Mengaktifkan virtio packed rings (fitur QEMU modern) untuk mengurangi overhead komunikasi antara guest dan host.
  • Hanya berlaku untuk controller virtio (misal: virtio-net, virtio-blk).

5. driver.page_per_vq

  • Mengalokasikan satu halaman memori terpisah per virtqueue untuk isolasi atau kinerja.
  • Nilai: "on" atau "off".

6. driver.queues

  • Menentukan jumlah queue untuk controller yang mendukung multi-queue (misal: virtio-net).
  • Meningkatkan throughput dengan paralelisasi.

Konfigurasi Umum Controller

7. index

  • Nomor unik untuk membedakan controller sejenis (misal: multiple PCI controllers).
  • Contoh: <controller type='pci' index='0'>.

8. model

  • Menentukan model emulasi hardware (misal: "virtio", "ich9", "pcie-root", "nec-xhci").
  • Contoh: <controller type='usb' model='qemu-xhci'>.

9. type

  • Jenis controller: "pci", "usb", "scsi", "virtio-serial", "ccid", dll.
  • Wajib diisi.

10. vectors

- Jumlah **interrupt vectors** (MSI-X) yang dialokasikan untuk controller.
- Contoh: `<controller ... vectors='32'>`.
Enter fullscreen mode Exit fullscreen mode

PCI/PCIe-Specific Attributes

11. num_pcie_root_ports

- Jumlah **PCIe root ports** yang tersedia pada PCIe root controller.
- Memengaruhi jumlah perangkat yang bisa di-hotplug.
Enter fullscreen mode Exit fullscreen mode

12. target.busNr

- Nomor bus PCI yang ditetapkan ke controller (misal: `busNr='0x00'`).
Enter fullscreen mode Exit fullscreen mode

13. maxGrantFrames

- (Xen-specific) Batas maksimum **grant frames** untuk berbagi memori antar domain.
- Contoh: `maxGrantFrames='32'`.
Enter fullscreen mode Exit fullscreen mode

USB-Specific Attributes

14. master.startport

- Port awal untuk controller USB master (misal: `startport='0'`).
Enter fullscreen mode Exit fullscreen mode

15. target.chassis

- Nomor chassis untuk mengelompokkan USB controller (misal: `chassis='1'`).
Enter fullscreen mode Exit fullscreen mode

16. target.chassisNr

- Alias untuk `target.chassis`.
Enter fullscreen mode Exit fullscreen mode

17. target.port

- Port USB yang dituju dalam guest (misal: `port='0x01'`).
Enter fullscreen mode Exit fullscreen mode

Hotplug & Topologi

18. target.hotplug

- Mengizinkan **hotplug** perangkat pada controller.
- Nilai: `"on"` atau `"off"`.
Enter fullscreen mode Exit fullscreen mode

19. target.index

- Posisi controller dalam hierarki guest (misal: untuk USB).
Enter fullscreen mode Exit fullscreen mode

20. target.node

- Mengaitkan controller dengan **NUMA node** tertentu untuk optimasi lokalisasi memori.
Enter fullscreen mode Exit fullscreen mode

Contoh XML

<controller type='pci' index='0' model='pcie-root'>
  <driver queues='4' packed='on'/>
  <target busNr='0' hotplug='on'/>
</controller>

<controller type='usb' index='0' model='qemu-xhci'>
  <master startport='0'/>
  <target chassis='1' port='0x01'/>
</controller>
Enter fullscreen mode Exit fullscreen mode

Catatan

  • Beberapa atribut hanya tersedia pada hypervisor/QEMU versi tertentu.
  • Atribut seperti driver.packed dan driver.ats memerlukan dukungan hardware guest.

WATCHDOG

Berikut penjelasan mengenai atribut WATCHDOG dalam libvirt:

1. model

Menentukan jenis perangkat watchdog virtual yang diemulasikan untuk guest VM.

  • Contoh Nilai:
    • i6300esb (default): Watchdog PCI berbasis Intel 6300ESB.
    • ib700: Watchdog ISA lama (kurang umum).
  • Fungsi: Model ini menentukan cara perangkat berinteraksi dengan guest OS. Misalnya, driver di guest OS (seperti i6300esb di Linux) harus sesuai dengan model yang dipilih.

2. action

Menentukan tindakan yang diambil hypervisor ketika watchdog timer kedaluwarsa (tidak di-reset oleh guest OS).

  • Contoh Nilai:
    • reset: Mereset VM secara paksa.
    • poweroff: Mematikan VM.
    • pause: Menjeda VM.
    • none: Tidak melakukan apa-apa (hanya log).
    • shutdown: Mematikan VM secara graceful (harus didukung guest OS).
    • dump: Membuat core dump sebelum mematikan VM.
  • Fungsi: Berguna untuk pemulihan otomatis jika guest OS mengalami hang/crash.

3. alias.name

Nama alias unik yang diberikan ke perangkat watchdog untuk memudahkan referensi.

  • Contoh:
  <watchdog model='i6300esb' action='reset'>
    <alias name='my-watchdog'/>
  </watchdog>
Enter fullscreen mode Exit fullscreen mode
  • Fungsi:

    • Memudahkan pengelolaan perangkat melalui CLI (misal: virsh) atau API.
    • Contoh penggunaan:
    virsh dumpxml vm-name | grep "alias name"  # Melihat alias perangkat
    

Contoh XML Lengkap:

<devices>
  <watchdog model='i6300esb' action='reset'>
    <alias name='my-watchdog'/>
  </watchdog>
</devices>
Enter fullscreen mode Exit fullscreen mode

Catatan:

  • Watchdog memerlukan konfigurasi di guest OS (misal: instal driver i6300esb dan layanan watchdog seperti watchdogd).
  • Jika guest OS gagal mereset timer (misal karena crash), hypervisor akan menjalankan action yang ditentukan.
  • Alias berguna untuk operasi seperti hot-unplug atau debugging.

IOTHREADS

Penjelasan dan Contoh Penggunaan Attribute IOTHREADS pada Libvirt

Berikut adalah penjelasan mengenai atribut terkait I/O threads (iothreads) dalam Libvirt beserta contoh penggunaannya:


1. defaultiothread.thread_pool_max

  • Arti: Menentukan jumlah maksimum thread pekerja (worker thread) yang dapat diaktifkan dalam thread pool untuk I/O threads yang tidak dikonfigurasi secara eksplisit.
  • Contoh Penggunaan:
  <domain>
    ...
    <defaultiothread thread_pool_max="4"/>
    <iothreads>2</iothreads>
    ...
  </domain>
Enter fullscreen mode Exit fullscreen mode
  • Dua I/O threads akan dibuat dengan thread pool maksimum 4 thread (karena tidak ada konfigurasi khusus).

2. defaultiothread.thread_pool_min

  • Arti: Menentukan jumlah minimum thread pekerja yang tetap aktif dalam thread pool untuk I/O threads default.
  • Contoh Penggunaan:
  <defaultiothread thread_pool_min="1" thread_pool_max="4"/>
Enter fullscreen mode Exit fullscreen mode
  • Setiap I/O thread default akan memiliki minimal 1 thread dan maksimal 4 thread di pool-nya.

3. iothreadids.iothread[0-9]*.id

  • Arti: ID numerik untuk mengidentifikasi I/O thread tertentu. Biasanya dimulai dari 1.
  • Contoh Penggunaan:
  <iothreadids>
    <iothread id="1"/>
    <iothread id="2"/>
  </iothreadids>
Enter fullscreen mode Exit fullscreen mode
  • Membuat dua I/O threads dengan ID 1 dan 2.

4. iothreadids.iothread[0-9]*.thread_pool_max

  • Arti: Menentukan jumlah maksimum thread pekerja untuk I/O thread spesifik yang dikonfigurasi.
  • Contoh Penggunaan:
  <iothreadids>
    <iothread id="1" thread_pool_max="8"/>
    <iothread id="2" thread_pool_max="2"/>
  </iothreadids>
Enter fullscreen mode Exit fullscreen mode
  • I/O thread 1 memiliki maksimal 8 thread, sedangkan thread 2 maksimal 2 thread.

5. iothreadids.iothread[0-9]*.thread_pool_min

  • Arti: Menentukan jumlah minimum thread pekerja untuk I/O thread spesifik.
  • Contoh Penggunaan:
  <iothreadids>
    <iothread id="1" thread_pool_min="2" thread_pool_max="8"/>
  </iothreadids>
Enter fullscreen mode Exit fullscreen mode
  • I/O thread 1 memiliki minimal 2 thread yang selalu aktif.

6. iothreads

  • Arti: Menentukan total jumlah I/O threads yang akan dibuat untuk domain VM.
  • Contoh Penggunaan:
  <domain>
    ...
    <iothreads>3</iothreads>
    ...
  </domain>
Enter fullscreen mode Exit fullscreen mode
  • Akan membuat 3 I/O threads. Jika tidak ada konfigurasi khusus, semua menggunakan pengaturan defaultiothread.

Contoh Konfigurasi Lengkap

<domain>
  ...
  <!-- Jumlah total I/O threads -->
  <iothreads>3</iothreads>

  <!-- Konfigurasi default untuk I/O threads -->
  <defaultiothread thread_pool_min="1" thread_pool_max="4"/>

  <!-- Konfigurasi spesifik untuk I/O thread 1 dan 2 -->
  <iothreadids>
    <iothread id="1" thread_pool_min="2" thread_pool_max="8"/>
    <iothread id="2" thread_pool_max="2"/>
  </iothreadids>
  ...
</domain>
Enter fullscreen mode Exit fullscreen mode

Penjelasan:

  • 3 I/O threads dibuat.
  • I/O thread 1: thread_pool_min=2, thread_pool_max=8.
  • I/O thread 2: thread_pool_min=1 (default), thread_pool_max=2.
  • I/O thread 3: Menggunakan pengaturan default (min=1, max=4).

Use Case

  • Optimasi I/O: Pada VM dengan disk berkinerja tinggi (e.g., NVMe), atur thread_pool_max lebih besar untuk meningkatkan paralelisasi.
  • Penghematan Sumber Daya: Untuk disk yang jarang diakses, gunakan thread_pool_min=1 agar tidak membebani sistem.

FEATURES

Berikut penjelasan arti dari setiap atribut FEATURES di libvirt:

Fitur Umum

  1. acpi

    • Kepanjangan: Advanced Configuration and Power Interface.
    • Fungsi: Memungkinkan guest OS mengelola daya (shutdown, reboot, sleep).
    • Default: Aktif untuk kebanyakan OS.
  2. apic

    • Kepanjangan: Advanced Programmable Interrupt Controller.
    • Fungsi: Memungkinkan interrupt handling yang efisien untuk sistem multi-core.
    • Kebutuhan: Diperlukan untuk SMP (multi-vCPU) pada x86.
  3. apic.eoi

    • Kepanjangan: End of Interrupt (EOI).
    • Fungsi: Mengoptimalkan penanganan interrupt dengan mengirim sinyal EOI ke host.
    • Dampak: Meningkatkan performa I/O pada guest.
  4. pae

    • Kepanjangan: Physical Address Extension.
    • Fungsi: Memungkinkan OS 32-bit mengakses RAM >4 GB.
    • Contoh: Windows XP/7 32-bit dengan RAM besar.

Contoh:

<features>
  <acpi/>             <!-- Aktifkan ACPI -->
  <apic>              <!-- Aktifkan APIC -->
    <eoi state='on'/> <!-- Aktifkan optimasi EOI -->
  </apic>
  <pae/>              <!-- Aktifkan PAE -->
</features>
Enter fullscreen mode Exit fullscreen mode

ARM-specific

  1. gic.version
    • Kepanjangan: Generic Interrupt Controller.
    • Fungsi: Menentukan versi GIC (v2, v3, atau v4) untuk ARM guests.
    • Penting: Kompatibilitas OS (misal: GICv3 untuk Linux modern).

Contoh:

<features>
  <gic version='v3'/>  <!-- GIC v3 untuk ARM -->
</features>
Enter fullscreen mode Exit fullscreen mode

Virtualisasi Berbasis Hardware

  1. hap
    • Kepanjangan: Hardware Assisted Paging.
    • Fungsi: Mengaktifkan nested paging (AMD-V NPT/Intel EPT) untuk manajemen memori yang lebih cepat.
    • Default: Aktif jika hardware mendukung.

Optimasi Hyper-V (Windows Guests)

  1. hyperv.relaxed.state

    • Fungsi: Mengurangi pengecekan timing untuk meningkatkan performa.
    • Target: OS yang di-"enlightened" (Windows/Linux dengan Hyper-V drivers).
  2. hyperv.reset.state

    • Fungsi: Memungkinkan guest mereset state VM secara software.
  3. hyperv.spinlocks.retries

    • Fungsi: Menentukan jumlah retry spinlock sebelum memberi notifikasi ke Hyper-V.
    • Contoh Nilai: 8191 (default).
  4. hyperv.spinlocks.state

    • Fungsi: Mengaktifkan paravirtual spinlocks untuk SMP guests.
  5. hyperv.synic.state

    • Fungsi: Mengaktifkan Synthetic Interrupt Controller (SynIC) untuk notifikasi inter-processor.
  6. hyperv.vapic.state

    • Fungsi: Virtual APIC untuk akses APIC tanpa exit ke hypervisor.
    • Dampak: Mengurangi overhead interrupt.

Contoh:

<features>
  <hyperv>
    <relaxed state='on'/>                   <!-- hyperv.relaxed.state -->
    <vapic state='on'/>                     <!-- hyperv.vapic.state -->
    <spinlocks state='on' retries='8191'/>  <!-- hyperv.spinlocks -->
    <synic state='on'/>                     <!-- hyperv.synic.state -->
    <reset state='on'/>                     <!-- hyperv.reset.state -->
  </hyperv>
</features>
Enter fullscreen mode Exit fullscreen mode

KVM-specific

  1. kvm.hidden.state

    • Fungsi: Menyembunyikan signature KVM dari guest (untuk menghindari deteksi virtualisasi).
    • Contoh: Diperlukan untuk macOS guests.
  2. kvm.hint-dedicated.state

    • Fungsi: Memberi sinyal ke guest bahwa vCPU didedikasikan untuk core fisik tertentu.
    • Dampak: Optimasi penjadwalan CPU.
  3. kvm.poll-control.state

    • Fungsi: Mengontrol polling interrupt guest untuk mengurangi CPU usage.

Contoh:

<features>
  <kvm>
    <hidden state='on'/>            <!-- kvm.hidden.state (untuk macOS) -->
    <poll-control state='on'/>      <!-- kvm.poll-control.state -->
    <hint-dedicated state='on'/>      <!-- kvm.hint-dedicated.state -->
  </kvm>
</features>
Enter fullscreen mode Exit fullscreen mode

Fitur Lainnya

  1. ioapic.driver

    • Opsi: kvm (default) atau qemu.
    • Fungsi: Memilih driver emulasi I/O APIC.
  2. pmu.state

    • Kepanjangan: Performance Monitoring Unit.
    • Fungsi: Mengaktifkan profiling performa di guest (misal: perf di Linux).
    • Risiko: Potensi kebocoran informasi ke guest.
  3. privnet

    • Fungsi: Membuat jaringan privat untuk VM (isolasi dari host).
    • Implementasi: Menghapus default route di guest.
  4. pvspinlock.state

    • Fungsi: Paravirtual spinlocks untuk mengurangi kontensi lock pada SMP guests.
  5. smm.state

    • Kepanjangan: System Management Mode.
    • Fungsi: Diperlukan untuk UEFI Secure Boot atau firmware tertentu.
  6. viridian

    • Fungsi: Mengaktifkan semua fitur Viridian (Hyper-V) untuk Windows guests.
  7. vmcoreinfo.state

    • Fungsi: Menyisipkan data struktur kernel Linux di memori untuk debugging (misal: crash utility).
  8. vmport.state

    • Fungsi: Emulasi VMware I/O port untuk kompatibilitas dengan VMware Tools.

Catatan:

  • Default: Sebagian besar fitur dinonaktifkan kecuali disebutkan.
  • Hypervisor: Beberapa fitur hanya berlaku untuk KVM/QEMU.
  • Arsitektur: gic.version khusus ARM, apic/pae untuk x86.

Full XML

Berikut beberapa contoh XML sesuai OS yang digunakan.

Rocky 8

<domain type="kvm">
  <name>rocky-basic</name>
  <uuid>746e914a-e22d-4e58-8a76-ae17a766da29</uuid>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://rockylinux.org/rocky/8"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit="GiB">6</memory>
  <currentMemory unit="GiB">2</currentMemory>
  <vcpu current="2">16</vcpu>
  <iothreads>4</iothreads>
  <os>
    <type arch="x86_64" machine="q35">hvm</type>
    <boot dev="hd"/>
  </os>
  <features>
    <acpi/>
    <apic eoi="on"/>
    <ioapic driver="qemu"/>
  </features>
  <cpu mode="host-model">
    <topology sockets="1" dies="1" cores="16" threads="1"/>
  </cpu>
  <clock offset="utc">
    <timer name="rtc" tickpolicy="catchup"/>
    <timer name="pit" tickpolicy="delay"/>
    <timer name="hpet" present="no"/>
  </clock>
  <pm>
    <suspend-to-mem enabled="no"/>
    <suspend-to-disk enabled="no"/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type="file" device="disk">
      <driver name="qemu" type="vmdk" cache="none" copy_on_read="on" io="native"/>
      <source file="/media/erfan/vms/rocky/rocky-basic.vmdk"/>
      <target dev="sda" bus="scsi" rotation_rate="1"/>
    </disk>
    <controller type="scsi" model="virtio-scsi">
      <driver queues="16" iothread="4" packed="on" page_per_vq="on"/>
    </controller>
    <controller type="usb" model="qemu-xhci" ports="15"/>
    <controller type="pci" model="pcie-root"/>
    <controller type="pci" model="pcie-root-port"/>
    <controller type="pci" model="pcie-root-port"/>
    <controller type="pci" model="pcie-root-port"/>
    <controller type="pci" model="pcie-root-port"/>
    <controller type="pci" model="pcie-root-port"/>
    <interface type="network" trustGuestRxFilters="yes">
      <source network="net0"/>
      <mac address="00:b1:cc:cb:aa:6d"/>
      <model type="virtio"/>
      <filterref filter="clean-traffic"/>
      <mtu size="9000"/>
      <driver name='vhost' txmode='iothread' ioeventfd='on' event_idx='off' queues='2' rx_queue_size='256' tx_queue_size='256' packed='on' page_per_vq='on'>
        <host csum='off' gso='off' tso4='off' tso6='off' ecn='off' ufo='off' mrg_rxbuf='off'/>
        <guest csum='off' tso4='off' tso6='off' ecn='off' ufo='off'/>
      </driver>
      <coalesce>
        <rx>
          <frames max='7'/>
        </rx>
      </coalesce>
    </interface>
    <console type="pty"/>
    <channel type="unix">
      <source mode="bind"/>
      <target type="virtio" name="org.qemu.guest_agent.0"/>
    </channel>
    <input type="tablet" bus="usb"/>
    <graphics type="vnc" port="-1"/>
    <video>
      <model type="cirrus"/>
    </video>
    <watchdog model="itco" action="reset"/>
    <memballoon model="virtio"/>
    <rng model="virtio">
      <backend model="random">/dev/urandom</backend>
    </rng>
  </devices>
</domain>
Enter fullscreen mode Exit fullscreen mode

Ubuntu 24.04

<domain type="kvm">
  <name>ubuntu-basic</name>
  <uuid>09c89f8b-214b-4cef-bda1-3ca9d7689851</uuid>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://ubuntu.com/ubuntu/24.04"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit="GiB">6</memory>
  <currentMemory unit="GiB">4</currentMemory>
  <vcpu current="2">16</vcpu>
  <iothreads>4</iothreads>
  <os>
    <type arch="x86_64" machine="q35">hvm</type>
    <boot dev="hd"/>
  </os>
  <features>
    <acpi/>
    <apic eoi="on"/>
    <ioapic driver="qemu"/>
  </features>
  <cpu mode="host-model">
    <topology sockets="1" dies="1" cores="16" threads="1"/>
  </cpu>
  <clock offset="utc">
    <timer name="rtc" tickpolicy="catchup"/>
    <timer name="pit" tickpolicy="delay"/>
    <timer name="hpet" present="no"/>
  </clock>
  <pm>
    <suspend-to-mem enabled="no"/>
    <suspend-to-disk enabled="no"/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type="file" device="disk">
      <driver name="qemu" type="vmdk" cache="none" copy_on_read="on" io="native"/>
      <source file="/media/erfan/vms/ubuntu/ubuntu-basic.vmdk"/>
      <target dev="sda" bus="scsi" rotation_rate="1"/>
    </disk>
    <controller type="scsi" model="virtio-scsi">
      <driver queues="16" iothread="4" packed="on" page_per_vq="on"/>
    </controller>
    <controller type="usb" model="qemu-xhci" ports="15"/>
    <controller type="pci" model="pcie-root"/>
    <controller type="pci" model="pcie-root-port"/>
    <controller type="pci" model="pcie-root-port"/>
    <controller type="pci" model="pcie-root-port"/>
    <controller type="pci" model="pcie-root-port"/>
    <controller type="pci" model="pcie-root-port"/>
    <interface type="network" trustGuestRxFilters="yes">
      <source network="net0"/>
      <mac address="00:50:56:3e:83:c7"/>
      <model type="virtio"/>
      <filterref filter="clean-traffic"/>
      <mtu size="9000"/>
      <driver name='vhost' txmode='iothread' ioeventfd='on' event_idx='off' queues='2' rx_queue_size='256' tx_queue_size='256' packed='on' page_per_vq='on'>
        <host csum='off' gso='off' tso4='off' tso6='off' ecn='off' ufo='off' mrg_rxbuf='off'/>
        <guest csum='off' tso4='off' tso6='off' ecn='off' ufo='off'/>
      </driver>
      <coalesce>
        <rx>
          <frames max='7'/>
        </rx>
      </coalesce>
    </interface>
    <console type="pty"/>
    <channel type="unix">
      <source mode="bind"/>
      <target type="virtio" name="org.qemu.guest_agent.0"/>
    </channel>
    <input type="tablet" bus="usb"/>
    <graphics type="vnc" port="-1"/>
    <video>
      <model type="cirrus"/>
    </video>
    <watchdog model="itco" action="reset"/>
    <memballoon model="virtio"/>
    <rng model="virtio">
      <backend model="random">/dev/urandom</backend>
    </rng>
  </devices>
</domain>
Enter fullscreen mode Exit fullscreen mode

Top comments (0)