Запуск полно-виртуализованных гостей (HVM) под Xen 3.2 на Debian Lenny (x86_64)
Version 1.0
Author: Falko Timme
Введение
HVM (Hardware Virtual Machine) — полноценно аппаратная виртуализация: позволяет запускать неизменённые гостевые ОС (включая Windows) при наличии процессорной поддержки Intel VT или AMD‑V. В отличие от паравиртуализации, гость не требует изменения ядра. Полная виртуализация обычно даёт худшую производительность по сравнению с паравиртуализацией, зато обеспечивает совместимость с закрытыми ОС.
Для общего обзора технологий виртуализации можно посмотреть VMware whitepaper: http://www.vmware.com/files/pdf/VMware_paravirtualization.pdf
Внимание: Руководство предоставляется без гарантий; результаты зависят от аппаратуры и конфигурации хоста.
Предварительная заметка
Я предполагаю, что у вас уже установлен Xen 3.2 на Debian Lenny и система настроена согласно разделу 2 руководства Virtualization With Xen On Debian Lenny (AMD64). В этом руководстве используются образы дисков (файлы) для хранения виртуальных машин. При использовании реальных разделов или LVM были проблемы — гость не видел диск. Возможно, реализация работы с физическими устройствами на вашей платформе возможна, но это выйдет за рамки данного материала.
Важно: HVM требует процессорной поддержки аппаратной виртуализации. Ниже — несколько способов проверить поддержку.
Как проверить поддержку аппаратной виртуализации
Проверить поддержку аппаратной виртуализации после установки Xen можно командой:
xm dmesg | grep -i hvmЕсли команда что‑то выводит — поддержка есть. Пример на процессоре AMD‑V:
server1:~# xm dmesg | grep -i hvm
(XEN) HVM: SVM enabled
server1:~#Проверка до установки Xen (по признаку наличия флагов в cpuinfo):
egrep '(vmx|svm)' --color=always /proc/cpuinfoЕсли вывод пуст — аппаратной поддержки нет.
Установка первого HVM-гостя
В этом примере создаём гостя xen1.example.com. Сначала создаём файл‑образ диска, например 4 ГБ:
dd if=/dev/zero of=/home/xen1.example.com.img bs=1024k count=4000(Для увеличения размера — увеличьте параметр count.)
Вы можете устанавливать гостя с физического CD/DVD или с ISO‑образа. Чтобы создать ISO из CD/DVD:
dd if=/dev/cdrom of=/home/ubuntu8_10_server_amd64.isoДалее создайте файл конфигурации /etc/xen/xen1.example.com.cfg:
vi /etc/xen/xen1.example.com.cfgВставьте в файл конфигурацию (пример):
import os, re
arch = os.uname()[4]
kernel = "/usr/lib/xen-default/boot/hvmloader"
builder='hvm'
memory = 512
shadow_memory = 8
name = "xen1.example.com"
vif = [ 'type=ioemu, bridge=eth0' ]
disk = [ 'file:/home/xen1.example.com.img,xvda,w', 'file:/home/ubuntu8_10_server_amd64.iso,xvdc:cdrom,r' ]
#disk = [ 'file:/home/xen1.example.com.img,xvda,w', 'phy:/dev/cdrom,xvdc:cdrom,r' ]
device_model = '/usr/lib/xen-default/bin/qemu-dm'
# boot on floppy (a), hard disk (c) or CD-ROM (d)
# default: hard disk, cd-rom, floppy
boot="dc"
sdl=0
vnc=1
vnclisten="0.0.0.0"
vncconsole=1
vncpasswd='howtoforge'
stdvga=0
serial='pty'
usbdevice='tablet'
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'Примечания по конфигурации:
- Используйте первую строку disk (с ISO) для установки из образа; вторую (phy:/dev/cdrom) — при установке с реального CD/DVD.
- boot=”dc” — сначала попытка загрузки с CD/ISO (d), затем с диска (c). При первом запуске важно, чтобы привод CD/ISO был первым устройством загрузки.
- vnc=1 и vnclisten=”0.0.0.0” включают удалённый доступ по VNC на всех интерфейсах. Если хотите ограничить доступ — укажите конкретный IP или оставьте значение по умолчанию (localhost).
- vncpasswd задаёт пароль для VNC; оставьте пустым vncpasswd=’’ если пароль не нужен.
Запустите гостя:
xm create /etc/xen/xen1.example.com.cfgПроверка прослушиваемых портов (VNC обычно 5900):
netstat -tapПример вывода:
server1:/etc/xen# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:5900 *:* LISTEN 24492/qemu-dm
...После создания вы можете подключиться к гостю по VNC. На Windows можно использовать TightVNC; в Ubuntu — Просмотр удалённого рабочего стола.

Нажмите Connect и укажите IP хоста Xen и порт, например 192.168.0.100:5900:

Если в конфигурации гостя указан vncpasswd, вас попросят ввести пароль:

Затем должен отобразиться установщик выбранной ОС; следуйте обычной инсталляции как на физической машине:

Полезные советы и отладка
- Если гость «не видит» диск, проверьте строку disk в конфигурации и права на файл образа. Попробуйте задать disk как абсолютный путь и убедитесь, что qemu-dm имеет доступ к файлу.
- Если VNC не слушает на внешнем интерфейсе, проверьте vnclisten и брандмауэр хоста.
- Для проблем с производительностью проверьте shadow_memory и параметры памяти гостя; HVM потребляет больше ресурсов, чем PV-гости.
- Логи Xen и qemu-dm помогут диагностировать большинство ошибок: /var/log/xen, сообщения ядра (dmesg) и вывод xm dmesg.
Когда HVM может не подойти
- Отсутствие аппаратной поддержки (нет VT/AMD‑V) — HVM не запустится.
- Требуется высокая производительность — для серверных задач часто предпочтительнее паравиртуализация.
- Необходим доступ к физическим устройствам с тех пор как HVM с файлами образов проще, чем попытки проброса физических разделов.
Альтернативные подходы
- Паравиртуализация (PV) — лучше по производительности, но требует изменения гостевого ядра.
- Использование KVM — если у вас современный Linux‑хост и поддержка VT/AMD‑V, KVM интегрирован в ядро и удобен для множества гостевых ОС.
- LXC/контейнеры — легковесная виртуализация для Linux‑гостей без отдельного ядра.
Порядок действий (чеклист)
- Убедиться, что CPU поддерживает VT/AMD‑V (egrep или xm dmesg).
- Подготовить образ диска dd if=/dev/zero of=/home/guest.img bs=1024k count=
. - Скопировать/создать ISO образ или вставить CD/DVD.
- Создать конфигурацию в /etc/xen/
.cfg и проверить disk, vif, vnc, boot. - Запустить xm create /etc/xen/
.cfg. - Подключиться по VNC и выполнить установку ОС.
- Проверить и настроить сеть, доступы и производительность.
Критерии приёмки
- Гость успешно загружается с CD/ISO и устанавливается ОС.
- После установки гость загружается с виртуального диска.
- Гость доступен по сети и выполняет ожидаемые сервисы (ping, SSH, HTTP и т. п.).
- Производительность соответствует требованиям (ответы сервисов в приемлемом временном окне).
Runbook при проблемах (короткий)
- Если гость не создаётся — проверяйте синтаксис .cfg и права на файлы.
- Если guesт не видит диск — попробуйте отключить SELinux/AppArmor или изменить права, проверьте device_model.
- При отсутствии VNC — проверьте vnclisten, vnc=1 и netstat; отключите брандмауэр на время теста.
- Сбор логов: /var/log/xen/*, вывод xm dmesg, системный журнал (dmesg, /var/log/syslog).
Короткий глоссарий (1 строка)
- HVM — аппаратная виртуализация, запускает неизменные ОС.
- PV — паравиртуализация, требуется специальное ядро гостя.
- qemu-dm — device model для эмуляции устройств в Xen HVM.
- vnclisten — куда qemu‑dm слушает VNC‑подключения.
Итог
HVM под Xen 3.2 на Debian Lenny позволяет запускать полноценные гостевые ОС (включая Windows) при наличии аппаратной поддержки виртуализации. Основные шаги: проверить поддержку CPU, создать образ диска или ISO, подготовить конфигурацию гостя и подключиться по VNC для установки. При возникновении проблем используйте приведённый чеклист и runbook для диагностики.
Important: Если вы добились работы с физическими разделами или LVM в HVM — поделитесь решением в сообществе, это поможет другим.
Похожие материалы
Тёмная тема в популярных приложениях Windows
Изменение имени учётной записи в Windows
Настройка iptables в Linux — базовый файл правил
Исправить "This version of Netflix is not compatible"
Как настроить беспроводные наушники USB