Использование 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"