VMmanager использует libvirt для управления виртуализацией. В свою очередь, управление libvirt осуществляется при помощи утилиты virsh. Она позволяет задействовать все возможности libvirt. При помощи virsh можно также вручную управлять libvirt, однако это не рекомендуется. При крайней необходимости ручного управления libvirt следует учитывать существующие особенности VMmanager.
libvirt
libvirt — набор программного обеспечения, основными функциями которого являются:
- создание и управление виртуальными машинами;
- управление хранилищем;
- управление сетевым интерфейсом.
libvirt состоит из следующих компонентов:
- библиотека API;
- демон (libvirtd);
- утилита командной строки (virsh).
Виртуальные машины хранятся в виде XML-описаний в директории /etc/libvirt/<virtualization>, где <virtualization> — тип виртуализации, например, qemu.
Подробнее об описании виртуальных машин, элементах, атрибутах и их значениях см. в официальной документации libvirt.
Пример XML-описания виртуальной машины:
cat /etc/libvirt/qemu/ceph-client.xml
<domain type='kvm'>
<name>ceph-client</name>
<uuid>ba4ff807-bce2-40a3-8fb7-5a970de112ff</uuid>
<memory unit='KiB'>262144</memory>
<currentMemory unit='KiB'>262144</currentMemory>
<blkiotune>
<weight>500</weight>
</blkiotune>
<vcpu placement='static'>2</vcpu>
<cputune>
<shares>1000</shares>
</cputune>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.4.0'>hvm</type>
<bootmenu enable='yes'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/ceph/ceph-client'/>
<target dev='vda' bus='virtio'/>
<boot order='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/ceph/volume4'/>
<target dev='vdc' bus='virtio'/>
<boot order='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='usb' index='0' model='piix3-uhci'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<interface type='network'>
<mac address='52:54:00:ad:9b:4b'/>
<source network='NAT_192.168.0.1'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target type='isa-serial' port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<input type='tablet' bus='usb'>
<address type='usb' bus='0' port='1'/>
</input>
<graphics type='vnc' port='-1' autoport='yes' passwd='U1g3A8y9'>
<listen type='network' network='DefaultBridge'/>
</graphics>
<video>
<model type='cirrus' vram='16384' heads='1' primary='yes'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</memballoon>
</devices>
</domain>
Документацию libvirt см. на официальном сайте.
virsh
Основные возможности утилиты virsh:
- virsh create <vm> — создание виртуальной машины;
- virsh edit <vm> — редактирование виртуальной машины;
- virsh list — вывод списка запущенных виртуальных машин и их идентификаторов;
- virsh start <vm>, virsh shutdown <vm> — запуск и выключение виртуальной машины;
- virsh destroy <vm> — уничтожение виртуальной машины.
Документацию virsh см. на официальном сайте или из консоли:
man virsh