docs: update virt/vm
This commit is contained in:
67
virt/vm.md
67
virt/vm.md
@ -2,7 +2,7 @@
|
|||||||
title: Machine definition
|
title: Machine definition
|
||||||
description: Virtual machine hardware
|
description: Virtual machine hardware
|
||||||
published: true
|
published: true
|
||||||
date: 2025-06-01T17:41:22.711Z
|
date: 2025-06-02T17:41:18.805Z
|
||||||
tags:
|
tags:
|
||||||
editor: markdown
|
editor: markdown
|
||||||
dateCreated: 2025-06-01T17:37:29.262Z
|
dateCreated: 2025-06-01T17:37:29.262Z
|
||||||
@ -12,7 +12,29 @@ dateCreated: 2025-06-01T17:37:29.262Z
|
|||||||
|
|
||||||
Libvirt uses XML files to define virtual machine hardware.
|
Libvirt uses XML files to define virtual machine hardware.
|
||||||
|
|
||||||
In the context of libvirt, a virtual machine or guest system is called a domain. In turn, a domain type refers to the hypervisor used for running the virtual machine.
|
In the context of libvirt, a virtual machine or guest system is called a domain.
|
||||||
|
|
||||||
|
A domain *type* refers to the hypervisor used for running the virtual machine.
|
||||||
|
|
||||||
|
- Truncated snippet of an imaginary virtual machine called *phyllome*:
|
||||||
|
|
||||||
|
```
|
||||||
|
<domain type='kvm'>
|
||||||
|
<name>phyllome</name>
|
||||||
|
<memory unit="GiB">1</memory>
|
||||||
|
<vcpu placement='static'>1</vcpu>
|
||||||
|
<os firmware="efi">
|
||||||
|
<devices>
|
||||||
|
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||||
|
<input type='keyboard' bus='virtio'>
|
||||||
|
</input>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
||||||
|
```
|
||||||
|
|
||||||
|
One can identify the domain type, KVM, the machine name, *phyllome*, the allocated memory, 1 GiB, the vCPU allocation, 1vCPU, the firmware type, UEFI.
|
||||||
|
|
||||||
|
These elements are primarily managed by Linux and KVM, whereas the elements within the devices section are managed by QEMU. One can find the keyboard, for instance.
|
||||||
|
|
||||||
## Domain type
|
## Domain type
|
||||||
|
|
||||||
@ -24,8 +46,7 @@ At the moment, Phyllome OS focuses solely on hardware-assisted virtualization wi
|
|||||||
</domain>
|
</domain>
|
||||||
```
|
```
|
||||||
|
|
||||||
Not all QEMU commands are supported by Libvirt. To [pass QEMU commands](https://www.libvirt.org/drvqemu.html#pass-through-of-arbitrary-qemu-commands
|
Not all QEMU commands are supported by Libvirt. To [pass QEMU commands](https://www.libvirt.org/drvqemu.html#pass-through-of-arbitrary-qemu-commands), one need to use the following instead and add the QEMU command line at the end :
|
||||||
), one need to use the following instead and add the QEMU command line at the end :
|
|
||||||
|
|
||||||
```
|
```
|
||||||
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
|
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
|
||||||
@ -40,12 +61,46 @@ Not all QEMU commands are supported by Libvirt. To [pass QEMU commands](https://
|
|||||||
</domain>
|
</domain>
|
||||||
```
|
```
|
||||||
|
|
||||||
> If QEMU command lines are not immediately provided, it will automatically revert to simply `<domain type='kvm'>` upon writing changes to the domain
|
> If QEMU command lines are not immediately provided, it will automatically revert to simply `<domain type='kvm'>` when writing changes to the domain definition
|
||||||
{.is-info}
|
{.is-info}
|
||||||
|
|
||||||
Under QEMU, the said domain definition translates to:
|
Under QEMU, the said domain definition translates simply to:
|
||||||
|
|
||||||
```
|
```
|
||||||
qemu-system-x86_64 -enable-kvm [...]
|
qemu-system-x86_64 -enable-kvm [...]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Memory
|
||||||
|
|
||||||
|
There are many ways to allocate memory. For maximum performance, one could reserve memory to virtual machine in such a way that it may not be used by the host or any other virtual machine.
|
||||||
|
|
||||||
|
A sane default, which does not maximize performance, is the following:
|
||||||
|
|
||||||
|
```
|
||||||
|
<domain type='kvm'>
|
||||||
|
[...]
|
||||||
|
<memory unit="GiB">4</memory>
|
||||||
|
<currentMemory unit="GiB">1</currentMemory>
|
||||||
|
[...]
|
||||||
|
<devices>
|
||||||
|
<memballoon model="virtio-non-transitional"/>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
||||||
|
```
|
||||||
|
|
||||||
|
Up to 4 GiB of memory is allocated to the virtual machine, with a minimum of 1 GiB.
|
||||||
|
|
||||||
|
A memballon device is defined, which can release memory to the host and other virtual machine in case it is not needed anymore.
|
||||||
|
|
||||||
|
```
|
||||||
|
<domain type='kvm'>
|
||||||
|
[...]
|
||||||
|
<memoryBacking>
|
||||||
|
<source type="memfd"/>
|
||||||
|
<access mode="shared"/>
|
||||||
|
</memoryBacking>
|
||||||
|
[...]
|
||||||
|
</domain>
|
||||||
|
```
|
||||||
|
|
||||||
|
What is also done is to mark the memory as shared memory, which is necessary for other features to work, like *virtiofs*.
|
Reference in New Issue
Block a user