Xen [351.2]

Рейтинг: 67.6% · 8 голосов
Специализация LPIC-3 305 (v3.0): KVM/QEMU и libvirt, Xen, образы дисков, контейнеры (namespaces/cgroups, LXC/LXD, Docker), оркестрация (Compose, Swarm, Kubernetes, Helm), Vagrant/Packer/cloud-init.
Ответить
Аватара пользователя
Sergey_Sysadmin
Сообщения: 134
Зарегистрирован: 11 май 2026, 05:31

Xen [351.2]

Сообщение Sergey_Sysadmin »

Оглавление курса (16)
  1. Введение в LPIC-3 305: виртуализация и контейнеризация
  2. Концепции и теория виртуализации [351.1]
  3. Xen [351.2] (вы здесь)
  4. QEMU и KVM [351.3]
  5. Управление ВМ через libvirt [351.4, часть 1]
  6. libvirt: виртуальные сети и пулы хранилищ [351.4, часть 2]
  7. Управление образами дисков ВМ [351.5]
  8. Концепции контейнеризации [352.1]
  9. LXC и LXD [352.2]
  10. Docker: образы и контейнеры [352.3, часть 1]
  11. Docker: тома, сети, логирование, ресурсы [352.3, часть 2]
  12. Оркестрация контейнеров
  13. Облачные инструменты: OpenStack и Terraform [353.1]
  14. Packer [353.2]
  15. cloud-init [353.3]
  16. Vagrant [353.4]
Урок 2. Xen [351.2]

Xen - это гипервизор первого типа (bare-metal), который грузится раньше любого ядра Linux и сам распределяет процессор и память между виртуальными машинами. Его особенность в том, что управляющая ОС (dom0) и гипервизор - это разные сущности: микроядро Xen занимается только планированием и изоляцией, а вся работа с дисками, сетью и драйверами выполняется в обычном Linux. На экзамене 305-300 от вас ждут понимания этой архитектуры, типов доменов PV/HVM/PVH, управления через xl и устройства xenstore. В этом уроке разберём, как поднять стенд, запустить и мигрировать гость, и где Xen в 2026 году ещё реально живёт.

Изображение

Как это работает

После загрузчика управление получает не ядро Linux, а сам гипервизор Xen - крошечный слой, который видит всё железо. Затем Xen стартует привилегированный домен dom0: это полноценный Linux с особыми правами. Только dom0 (или назначенный driver domain) имеет доступ к физическим устройствам и через бэкенд-драйверы обслуживает остальные гости. Гости называются domU (unprivileged domain), и каждый из них общается с железом не напрямую, а через фронтенд-драйверы, которые ходят в dom0.

Изначально Xen прославился паравиртуализацией (PV): гостевое ядро знало, что работает под гипервизором, и вместо привилегированных инструкций делало гиперколлы. Это давало скорость без аппаратной виртуализации, но требовало правленого ядра и плохо дружило с современным железом (нет настоящих таблиц страниц, проблемы с безопасностью спекулятивных атак). Поэтому классический 32-битный PV сегодня считается легаси.

Сейчас актуальны два режима. HVM (Hardware Virtual Machine) использует Intel VT-x или AMD-V, эмулирует целый ПК через QEMU (BIOS/UEFI, диск, сеть) и запускает немодифицированную ОС, включая Windows. PVH (paravirtualized hardware) - современный компромисс: аппаратная виртуализация процессора и памяти, но без эмуляции устройств QEMU, ввод-вывод идёт через лёгкие PV-драйверы. PVH грузится быстро, имеет минимальную поверхность атаки и в 2026 году считается предпочтительным для Linux-гостей. На x86 исторический дефолт - PV, на Arm дефолт - PVH.

Связку фронтенд-бэкенд координирует xenstore - небольшая иерархическая база ключ-значение в памяти, общая для всех доменов. Через неё домены обмениваются параметрами устройств, путями к кольцевым буферам и статусами. Драйверы делают watch на ветки xenstore и реагируют на изменения - так гость узнаёт, что появился диск, а dom0 узнаёт, что гость запросил подключение.

Команды и примеры

Установка гипервизора и тулстека. На Debian 13 / Ubuntu 24.04:

Код: Выделить всё

apt update
apt install xen-hypervisor-amd64 xen-tools xen-utils
# после установки выбрать ядро Xen в grub и перезагрузиться
На RHEL 10 нативного Xen в репозиториях нет (Red Hat ушёл на KVM ещё в RHEL 6). На Fedora 41+ ставится из репозитория:

Код: Выделить всё

dnf install xen xen-hypervisor xen-runtime
systemctl enable --now xenstored xenconsoled
grub2-mkconfig -o /boot/grub2/grub.cfg
После загрузки проверяем, что мы в dom0:

Код: Выделить всё

xl info        # версия Xen, объём памяти, число CPU, флаги hvm
xl list        # список доменов; Domain-0 всегда первый
xl dmesg       # лог самого гипервизора (не dmesg ядра)
Минимальный конфиг PVH-гостя, файл /etc/xen/web1.cfg:

Код: Выделить всё

type    = "pvh"
name    = "web1"
memory  = 2048
vcpus   = 2
kernel  = "/var/lib/xen/vmlinuz-deb13"
ramdisk = "/var/lib/xen/initrd-deb13.img"
cmdline = "root=/dev/xvda1 console=hvc0"
disk    = [ "/var/lib/xen/web1.img,raw,xvda,rw" ]
vif     = [ "bridge=xenbr0" ]
Обратите внимание: ключ type заменил устаревший builder. Для HVM-гостя с Windows было бы type="hvm" и блок с device_model_version, vnc, boot="dc".

Запуск, консоль, жизненный цикл:

Код: Выделить всё

xl create /etc/xen/web1.cfg     # создать и запустить домен
xl create -c /etc/xen/web1.cfg  # сразу подцепиться к консоли
xl console web1                  # подключиться к консоли (выход: Ctrl+])
xl pause web1 / xl unpause web1
xl shutdown web1                 # корректное завершение через ACPI/PV
xl destroy web1                  # жёстко убить (аналог выдернуть питание)
Прямой осмотр xenstore - полезно при отладке устройств:

Код: Выделить всё

xenstore-ls /local/domain/0       # ветка dom0
xenstore-list /local/domain
xenstore-read /local/domain/1/name
Живая миграция между двумя dom0 (нужен общий storage и совместимый CPU):

Код: Выделить всё

# на стороне-приёмнике один раз разрешаем приём
xl migrate-receive   # обычно поднимается сервисом, явно не запускают
# на источнике
xl migrate web1 dom0-host2.local      # live по умолчанию
xl migrate --debug web1 dom0-host2    # с диагностикой
Частые грабли
  • Забыли выбрать в GRUB ядро через Xen - система грузится в обычный Linux, и xl выдаёт ошибку соединения с гипервизором. Проверяйте, что в xl info есть строка с версией Xen.
  • Память dom0 не зафиксирована: по умолчанию dom0 балунит и отдаёт RAM гостям, что мешает планировщику. Задавайте dom0_mem=4G,max:4G в строке Xen в GRUB.
  • Путаница type и builder: старые конфиги с builder="hvm" ещё работают, но опция помечена deprecated, на свежих сборках лучше сразу писать type.
  • Пытаетесь запустить чистый 32-битный PV-гость на новом железе с включёнными митигациями - может не стартовать. Берите PVH или HVM.
  • Миграция падает из-за разных моделей CPU или отсутствия общего диска - xl переносит только RAM и состояние, но не данные диска.
  • Перепутали xl dmesg (лог гипервизора) и dmesg (лог ядра dom0) - ищете сообщение Xen не там.
Мини-лаба
  • Установите Xen-гипервизор на свой стенд (Debian 13 или Fedora) и перезагрузитесь в ядро через Xen.
  • Командой xl info и xl list убедитесь, что dom0 живой; найдите в выводе число доступных vcpu.
  • Создайте образ диска через truncate или dd на 4 ГБ и разверните в него минимальную систему (debootstrap или готовый cloud-образ).
  • Напишите конфиг PVH-гостя по примеру выше и поднимите его через xl create -c, дождитесь приглашения логина.
  • Из dom0 посмотрите ветку гостя в xenstore: xenstore-ls /local/domain/1.
  • Сделайте xl pause, проверьте статус в xl list (флаг p), затем xl unpause.
  • Если есть второй хост - настройте общий storage и выполните xl migrate, наблюдая за доменом на приёмнике.
Контрольные вопросы
  • Чем принципиально отличается роль гипервизора Xen от роли dom0 и почему их разделяют?
  • В чём разница между PV, HVM и PVH по способу работы с процессором и устройствами ввода-вывода?
  • Какую функцию выполняет xenstore и как через него взаимодействуют фронтенд- и бэкенд-драйверы?
  • Какой конфигурационный ключ пришёл на смену builder и какие значения он принимает?
  • Что переносит xl migrate при живой миграции, а что должно быть обеспечено заранее?
  • Почему классический 32-битный PV сегодня считается легаси и чем его заменяют?
👍1 ❤️3 🔥1 😄 🤔
Аватара пользователя
Jv9gsb
Сообщения: 1
Зарегистрирован: 11 май 2026, 14:19

Re: Xen [351.2]

Сообщение Jv9gsb »

А если в RHEL 10 Xen из коробки нет, чем тогда стенд под экзамен поднимать - Fedora или Debian брать?
👍 ❤️1 🔥 😄 🤔2
Аватара пользователя
denoenjoyer
Сообщения: 1
Зарегистрирован: 11 май 2026, 18:02

Re: Xen [351.2]

Сообщение denoenjoyer »

Заметил на новом сервере: чистый PV-гость вообще не стартует, а как переписал конфиг на type=pvh - сразу взлетел. Так что PVH реально дефолт теперь.
👍1 ❤️ 🔥 😄 🤔
Ответить
← Предыдущая глава
Концепции и теория виртуализации [351.1]
Следующая глава →
QEMU и KVM [351.3]

Все главы курса «LPIC-3 305: виртуализация и контейнеризация»

Поделиться темой: ✈ Telegram VK

Вернуться в «LPIC-3 305: виртуализация и контейнеры»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость