ADG Оставить заявку
Блог Инфраструктура 4 мин чтения

Xen 3.0 HVM: запускаем немодифицированную Windows через Intel VT на Linux-хосте

Xen 3.0 принёс HVM и Intel VT-x: теперь можно запустить немодифицированный Windows-гость. Пробуем, сравниваем с PV-Linux, считаем грабли.

Контекст момента

Xen 3.0 приносит поддержку HVM (Intel VT-x) - немодифицированная Windows теперь запускается как domU

В декабре вышел Xen 3.0.0, и главное в нём - HVM. Hardware Virtual Machine, аппаратная виртуализация через Intel VT-x. Это значит, что гостевой ОС больше не нужно знать, что она под гипервизором, и не нужно патченое ядро. Немодифицированный Windows можно поднять как domU прямо на Linux-хосте.

Мы подождали месяц-другой, пока первая паника в рассылках немного улеглась, и в марте решили попробовать.

Что нужно для HVM

Xen 3.0 с HVM требует процессора с поддержкой Intel VT-x - флаг vmx в /proc/cpuinfo. Не все серверы его имеют даже сейчас: VT-x появился в серверных Xeon относительно недавно, и не каждый BIOS включает его по умолчанию. У нас был подходящий Xeon; первое, что сделали, - зашли в BIOS и убедились, что Virtualization Technology включена. Без этого Xen загрузится, но xm create с HVM-конфигом упадёт с невразумительной ошибкой.

AMD тоже анонсировала свою технологию аппаратной виртуализации - AMD-V (Pacifica), - но серверных AMD-процессоров с ней у нас под рукой не было, так что проверяли только на Intel.

Хост. Debian Sarge, ядро с патчами Xen из xen-source-2.6, загрузчик - GRUB с отдельной записью для Xen:

title Xen 3.0 / Debian
root (hd0,0)
kernel /boot/xen-3.0.gz dom0_mem=256M
module /boot/vmlinuz-2.6.12-xen root=/dev/sda1 ro
module /boot/initrd-2.6.12-xen.img

После перезагрузки xm info показывает гипервизор и наличие флага hvm.

Конфиг гостя

HVM-домен описывается иначе, чем паравиртуальный Linux. Никакого kernel = и ramdisk = - вместо них builder = "hvm" и загрузка с виртуального CDROM или диска. Файл в /etc/xen/winxp.cfg:

builder = "hvm"
name    = "winxp"
memory  = 512
vcpus   = 1
disk    = [ "file:/var/xen/winxp.img,hda,w",
            "file:/path/to/winxp.iso,hdc:cdrom,r" ]
vif     = [ "type=ioemu, mac=00:16:3e:xx:xx:xx" ]
boot    = "d"
sdl     = 0
vnc     = 1
vncunused = 1

Ключевое слово здесь - ioemu. Сетевой интерфейс и диск у HVM-гостя - полная эмуляция через QEMU, встроенный в Xen. Никаких xen-драйверов для Windows под Xen 3.0 нет, Windows ничего не знает про Xen и работает с виртуальным IDE-контроллером и виртуальной сетевой картой Realtek.

xm create /etc/xen/winxp.cfg запускает домен, xm list показывает его. Подключаемся через VNC - и видим стандартный установщик Windows XP.

Где радость и где грабли

Радость. Windows встала. Немодифицированный дистрибутив, без каких-либо патчей под гипервизор. Для нас это был принципиальный момент: у нескольких клиентов есть специфический Windows-софт, который нельзя переехать на Linux. Раньше приходилось держать для него отдельное физическое железо или VMware ESX. Xen HVM открывает третий вариант - поднять рядом с паравиртуальными Linux-гостями на том же железе.

Первые грабли - I/O. Разница между паравиртуальным Linux-гостем и HVM Windows ощутима. PV-гость общается с dom0 через xen-blkfront и xen-netfront - это эффективные каналы с минимальными накладными расходами. HVM-гость гоняет I/O через эмуляцию QEMU: каждая операция чтения-записи проходит через эмулятор, который имитирует IDE-контроллер. На практике это означает, что под нагрузкой дисковый I/O HVM-гостя заметно медленнее, чем у PV-Linux. Для файлового сервера с активной записью - неприятно. Для веб-приложения, которое в основном читает, - терпимо.

Вторые грабли - стабильность. За две недели тестирования домен несколько раз повис без внятного сообщения в логах. Dom0 при этом продолжал работать нормально, другие PV-гости не трогало. Возможно, специфика нашего железа, возможно, сырость HVM в 3.0.0 - исследовать не стали, просто зафиксировали как факт.

Третьи грабли - консоль. У PV-гостя есть xm console, интерактивная текстовая консоль прямо в терминале. У HVM-гостя её нет: управление через VNC, который нужно заранее прописать в конфиге и который требует VNC-клиента. Мелочь, но раздражает в работе.

Паравиртуальный Linux vs HVM Windows: картина в трёх строках

PV Linux HVM Windows
Требует патченого ядра да нет
Скорость I/O высокая заметно ниже
Текстовая консоль xm console только VNC
Стабильность на нашем стенде надёжно есть вопросы

Что в итоге

Для проектов по обслуживанию инфраструктуры HVM в Xen 3.0 - это полезное расширение, но не замена нормальному решению для Windows. Если нужна одна-две Windows-виртуалки рядом с Linux-парком и I/O у них невысокий - уже сейчас можно пробовать. Если на Windows-гость падает серьёзная база данных или файловый сервер с активной записью - стоит подождать, пока или QEMU-эмуляция в Xen не ускорится, или не появятся нативные Xen-драйверы для Windows.

VMware ESX в смешанных Windows/Linux-средах пока убедительнее: зрелый продукт, стабильная работа, понятные инструменты. Но то, что Xen 3.0 вообще может запустить немодифицированный Windows, - это уже другой разговор по сравнению с тем, что было год назад.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.