Использование VirtIO для виртуальных машин на базе KVM позволяет повысить производительность виртуализированных устройств ввода-вывода, однако в OpenNebula они не используются по умолчанию.
VirtIO - это стандартизированный интерфейс, который позволяет виртуальным машинам получать доступ к упрощенным «виртуальным» устройствам, вместо полной эмуляции реальной аппаратуры со стороны гипервизора. Такими устройствами могут быть блочные устройства, сетевые адаптеры, текстовые консоли.
Доступ к устройствам через VirtIO на гостевой виртуальной машине повышает производительность по сравнению с более традиционными «эмулируемыми» устройствами, поскольку устройства VirtIO требуют лишь минимальной настройки и конфигурации, необходимых для отправки и получения данных, в то время как хост-машина выполняет большую часть настройки фактического физического оборудования.
VirtIO для сетевых интерфейсов в OpenNebula
При подключении сетевого интерфейса
Для подключения сетевого интерфейса через VirtIO, нужно указать virtio
в поле Hardware model to emulate
.
Изменение шины для существующего интерфейса
Возможности изменить модель виртуализации нет ни через команду onevm update
, ни через веб-интерфейс Sunstone.
Вместо этого нужно воспользоваться командой onedb update-body vm --id <id>
. После её вызова открывается редактор текущей конфигурации машины, где необходимо указать тип виртуализации (MODEL
) для необходимых интерфейсов (NIC
):
<VM>
<TEMPLATE>
<NIC>
...
<MODEL><![CDATA[virtio]]></MODEL>
...
</NIC>
</TEMPLATE>
</VM>
После внесения изменений необходимо передеплоить виртуальную машину (Undeploy - Deploy в Sunstone).
Изменение поведения по умолчанию
Чтобы добавляемые сетевые устройства всегда использовали VirtIO, нужно добавить/отредактировать соответствующую строчку в файле /etc/one/vmm_exec/vmm_exec_kvm.conf
на всех frontend нодах OpenNebula:
NIC = [ model="virtio" ]
VirtIO для дисков в OpenNebula
Для новых подключаемых дисков
Выбор шины для подключения диска осуществляется в поле BUS
среди следующих доступных: Virtio
, SCSI
, Parallel ATA (IDE)
.
Изменение типа для существующего диска
OpenNebula определяет шину подключаемого диска через букву префикса в его имени:
- hd - IDE
- sd - SCSI
- vd - VirtIO
Данный префикс нельзя изменить с помощью onevm update
или из Sunstone, придётся опять воспользоваться командой onedb update-body vm --id <id>
. Префикс устройства упоминается два раза для каждого диска:
<VM>
<TEMPLATE>
<DISK>
...
<DEV_PREFIX><![CDATA[vd]]></DEV_PREFIX>
<TARGET><![CDATA[vda]]></TARGET>
...
</DISK>
</TEMPLATE>
</VM>
После их изменения необходимо передеплоить виртуальную машину (Undeploy - Deploy в Sunstone).
Изменение поведения по умолчанию
За шину дисковых устройств отвечают два параметра в файле /etc/one/oned.conf
на frontend нодах OpenNebula:
DEFAULT_DEVICE_PREFIX = "vd"
DEFAULT_CDROM_DEVICE_PREFIX = "hd"