null

Использование VirtIO в OpenNebula по умолчанию

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