Глава 9. Виртуализация

9.1. Виртуализация на уровне ядра

virtio-blk-data-plane

Red Hat Enterprise Linux 7.0 предлагает экспериментальный вариант virtio-blk-data-plane, что позволяет QEMU осуществлять дисковый ввод-вывод в отдельно выделенном потоке, тем самым улучшая общую производительность ввода-вывода.

Мост PCI

QEMU раньше поддерживал до 32 слотов PCI. Мост PCI в Red Hat Enterprise Linux 7.0 позволяет настроить больше 32 PCI-устройств, но без поддержки горячей замены.

Песочница QEMU

В Red Hat Enterprise Linux 7.0 усилена защита виртуализации KVM за счет фильтрования системных вызовов ядра, что облегчает изоляцию хоста от гостевых систем.

Добавление виртуальных процессоров

QEMU в Red Hat Enterprise Linux 7.0 поддерживает возможность добавления виртуальных процессоров к работающим виртуальным машинам типа pc-i440fx-rhel7.0.0 (стандартный тип для Red Hat Enterprise Linux 7.0).

Очереди в virtio_net

virtio_net допускает использование отдельных очередей отправки и получения пакетов для виртуальных процессоров. Производительность возрастает, так как виртуальный процессор работает независимо от других.

Очереди в virtio_scsi

virtio_scsi допускает использование отдельных очередей и прерываний для виртуальных процессоров. Производительность возрастает, так как виртуальный процессор работает независимо от других.

Сжатие страниц при динамической миграции

Скорость онлайн-миграции в KVM значительно улучшена за счет сжатия страниц памяти переносимой виртуальной машины.

HyperV в KVM

KVM поддерживает некоторые функции Microsoft Hyper-V, включая устройство управления памятью (MMU, Memory Management Unit) и виртуальный контроллер прерываний (Virtual Interrupt Controller). Microsoft предоставляет паравиртуализированный API для взаимодействия гостевых систем с хостом, и частичная реализация функций на хосте помогает улучшить производительность.

Ускорение обработки операций EOI

Red Hat Enterprise Linux 7.0 эффективно использует дополнительные функции APIC Intel и AMD по оптимизации операций завершения прерываний (EOI, End of Interrupt). Для старых микросхем доступны паравиртуальные функции оптимизации EOI.

Поддержка USB 3.0

Поддержка USB в Red Hat Enterprise Linux 7.0 улучшена за счет эмуляции интерфейса xHCI USB 3.0 (экспериментальная версия).

Виртуальные системы Windows 8 и Windows Server 2012

Red Hat Enterprise Linux 7.0 поддерживает создание гостевых систем Microsoft Windows 8 и Windows Server 2012 в виртуальных машинах KVM.

Регулирование ввода-вывода гостей QEMU

Ввод-вывод блочных устройств в гостевых системах QEMU может регулироваться с целью снижения вероятности сбоев (за исключением регулирования в плоскости передачи данных сети).

Интеграция динамического выделения памяти и прозрачных страниц hugepages

Улучшена интеграция механизмов динамического выделения памяти и прозрачных страниц (THP, Transparent Huge Pages) в Red Hat Enterprise Linux 7.0. Динамически выделенные страницы могут быть преобразованы в страницы THP.

Определение энтропии с хоста

Новое устройство virtio-rng позволяет определить энтропию гостевых систем с хоста. По умолчанию эти сведения извлекаются из /dev/random, но в качестве источника могут также выступать аппаратные генераторы случайных чисел хоста.

Передача данных через сетевой мост

Эффективность обработки больших сообщений повышается за счет того, что процессор не дожидается выполнения операций копирования памяти (методика, известная как zero copy, то есть процессор не осуществляет копирование). Это улучшает производительность при передаче данных из гостевой системы через сетевой мост.

Динамическая миграция

Разрешается динамическая миграция гостевых систем с хоста Red Hat Enterprise Linux 6.5 на Red Hat Enterprise Linux 7.0.

TRIM в qemu-kvm

discard='unmap' в секции <driver> в XML-определении домена разрешает выполнение команд fstrim и mount -o discard в гостевых системах.
<disk type='file' device='disk'>
	<driver name='qemu' type='raw' discard='unmap'/>
  <source file='/var/lib/libvirt/images/vm1.img'>
  ...
</disk>

Устройства NVIDIA

Red Hat Enterprise Linux 7.0 поддерживает использование NVIDIA GRID и Quadro в качестве дополнительных устройств для эмулированных адаптеров VGA.

Паравиртуальная реализация ticket lock

Red Hat Enterprise Linux 7.0 поддерживает паравиртуальную реализацию упорядоченного спинлока (pvticketlocks), что повышает производительность гостевых систем Red Hat Enterprise Linux 7.0 на хостах Red Hat Enterprise Linux 7.0 с превышенным процессорным лимитом.

Обработка ошибок PCIe

Если выделенное гостевой системе устройство PCIe с функциями AER (Advanced Error Reporting) столкнулось с ошибками, система будет остановлена. После решения конфликта на уровне драйвера хоста работу гостя можно будет возобновить. Другие гостевые системы не будут затронуты.

Эмуляция михросхем Q35, шин PCI Express и AHCI

Red Hat Enterprise Linux 7.0 теперь предлагает выбрать тип Q35 для виртуальных машин KVM, что необходимо для поддержки шин PCI Express и AHCI. Эта функциональность предлагается в качестве предварительной версии.

Назначение PCI-устройств

Драйвер VFIO (Virtual Function I/O) облегчает предоставление PCI-устройств виртуальным машинам KVM. VFIO характеризуется возможностью изоляции устройств на уровне ядра, улучшенной защитой доступа к устройствам и совместимостью с безопасной загрузкой. VFIO заменил механизм выделения устройств KVM, используемый в Red Hat Enterprise Linux 6.

Большие страницы Intel VT-d

При назначении устройств VFIO (Virtual Function I/O) виртуальным машинам KVM блок управления памятью для операций ввода-вывода (IOMMU, Input/Output Memory Management Unit) использует страницы размером 2 МБ, тем самым снижая издержки операций ввода-вывода буфера TLB (Translation Lookaside Buffer). Поддержка страниц размером 1 ГБ будет позднее добавлена в Red Hat Enterprise Linux 7.0.

Определение времени в KVM

В Red Hat Enterprise Linux 7.0 механизм vsyscall улучшен механизм чтения времени из пространства пользователя гостями KVM. Как следствие, будет отмечен рост производительности приложений, регулярно запрашивающих текущее время, в виртуальных системах Red Hat Enterprise Linux 7.0 на хостах Red Hat Enterprise Linux 7.0.

QCOW2 версии 3

Red Hat Enterprise Linux 7.0 поддерживает формат QCOW2 версии 3 .

Статистика миграции

Анализ статистики динамической миграции поможет принять решение по ее оптимизации. Статистика была улучшена и теперь включает ожидаемое время простоя и скорость изменения страниц памяти.

Поточная миграция

Динамическая миграция KVM теперь поддерживает поточную обработку.

Горячее подключение символьных устройств и последовательных портов

Red Hat Enterprise Linux 7.0 поддерживает возможность горячего подключения новых символьных устройств через последовательный порт.

Эмуляция AMD Opteron G5

KVM допускает эмуляцию процессоров AMD Opteron G5.

Инструкции Intel для гостей KVM

Гости KVM могут использовать новые инструкции процессоров Intel 22nm, включая:
  • умножение чисел с плавающей точкой с последующим сложением и округлением,
  • 256-разрядные целые векторы,
  • инструкции MOVBE (Big Endian Move Instruction),
  • HLE/HLE+.

Форматы файлов VPC и VHDX

KVM в Red Hat Enterprise Linux 7.0 поддерживает файловые форматы Microsoft Virtual PC (VPC) и Microsoft Hyper-V virtual hard disk (VHDX).

libguestfs

libguestfs предоставляет набор инструментов для управления образами дисков виртуальных машин. Основные характеристики libguestfs в Red Hat Enterprise Linux 7.0:
  • sVirt — безопасная виртуализация с использованием SELinux.
  • Управление удаленными дисками (чтение и изменение), используя NBD (Network Block Device).
  • Горячая замена дисков помогает улучшить производительность некоторых приложений.

Драйверы virtio-win

Red Hat Enterprise Linux 7.0 предоставляет WHQL-сертифицированные драйверы virtio-win для последних версий Microsoft Windows (8, 8.1, 2012 и 2012 R2).