Гид по технологиям

XEN-AoE: виртуализация с ATA over Ethernet

• 8 min read • Виртуализация • Обновлено 10 Nov 2025
XEN-AoE: настройка DOMU и live-migration
XEN-AoE: настройка DOMU и live-migration

Краткое описание и цель

Этот материал объясняет, как совместить XEN и AoE для недорогой, масштабируемой IP-Sanit-архитектуры. Основная цель лаборатории — экспортировать блочные устройства с node1 на node2, собрать RAID, установить Debian в DOMU на этих устройствах и выполнить live-migration этого DOMU на node3.

Ключевые понятия одной строкой:

  • XEN — гипервизор уровня 1 для запуска гостевых ОС.
  • AoE — простой протокол для экспорта ATA-устройств поверх Ethernet.
  • DOMU — гостевая виртуальная машина под XEN.

Important: используйте тестовую среду и снимайте снапшоты/резервные копии перед манипуляциями с блочными устройствами и LVM.

Обзор XEN-AoE и зачем это нужно

XEN-AoE даёт возможность использовать дешёвое дисковое пространство и стандартный Ethernet для организации IP-SAN с низкой стоимостью владения. Вариант полезен для небольших стендов, тестовых кластеров и сценариев, где не требуются расширенные функции SAN, но важна простая и гибкая подмена дисков между узлами.

Преимущества:

  • Экономия на специализированном оборудовании.
  • Простота настройки и отладки.
  • Возможность live-migration гостевых машин при использовании XEN.

Ограничения:

  • AoE не обеспечивает таких функций, как высокоуровневая репликация, тонкая настройка QoS или шифрование, как более дорогие SAN-решения.
  • В сетях с большим количеством трафика возможно влияние на производительность дисковой подсистемы.

Требования и подготовка среды

Минимальные требования для лаборатории:

  • Три узла: node1 (target/AoE-export), node2 (initiator/DOMU host), node3 (целевой хост для миграции).
  • XEN-кernel на node2 и node3 (или установка соответствующего пакета и перезагрузка в XEN-ядро).
  • Наличие yum/apt и сетевой доступ для загрузки пакетов (debootstrap, mdadm и т.д.).
  • Поддержка 64‑битного процессора рекомендуется, но в лаборатории Debian выбран i386 для совместимости.

Примечание: в примерах локализованы единицы — 4 GB приведено как 4 ГБ.

Шаг 1. Создание локальных файлов-образов и loop-устройств на node1

Создаём два файла объёмом 4 ГБ и привязываем их к loop-устройствам:

[root@node1 Desktop]# dd if=/dev/zero of=newfile1.img bs=1M count=4000
[root@node1 Desktop]# dd if=/dev/zero of=newfile2.img bs=1M count=4000
[root@node1 Desktop]# losetup /dev/loop0 newfile1.img
[root@node1 Desktop]# losetup /dev/loop1 newfile2.img
[root@node1 Desktop]# losetup -a

Что происходит: мы создаём два файла-образа и привязываем их как блочные устройства. Это удобный способ симулировать настоящие диски для тестов.

Important: при работе с реальными дисками не используйте dd на продуктивных устройствах без резервной копии.

Шаг 2. Создание LVM поверх loop-устройств на node1

Инициализируем физические тома, создаём группы томов и логические тома:

[root@node1 Desktop]# pvcreate /dev/loop0
[root@node1 Desktop]# pvcreate /dev/loop1
[root@node1 Desktop]# pvs
[root@node1 Desktop]# vgcreate vgnode1.0 /dev/loop0
[root@node1 Desktop]# vgcreate vgnode1.1 /dev/loop1
[root@node1 Desktop]# vgs
[root@node1 Desktop]# lvcreate -L 3G -n lvnode1.0 vgnode1.0
[root@node1 Desktop]# lvcreate -L 3G -n lvnode1.1 vgnode1.1
[root@node1 Desktop]# lvs

Пояснение: для каждого loop-устройства создаётся свой VG и LV размером 3 ГБ. Это оставляет небольшой буфер в файле для метаданных.

Шаг 3. Экспорт LVM-томов через AoE (vblade)

Запускаем демон vblade для публикации логических томов по AoE на интерфейсе eth0:

[root@node1 vblade]# ./vbladed 0 0 eth0 lvnode1.0
[root@node1 vblade]# ./vbladed 0 1 eth0 lvnode1.1

Здесь ‘0’ — номер shelf (major), ‘0’ и ‘1’ — slot (minor), eth0 — интерфейс, lvnode1.* — блочные устройства, которые экспортируются.

Note: vblade обычно запускают от имени root и можно оформить systemd unit для автозапуска.

Шаг 4. Подключение AoE-устройств на node2 и создание RAID

На node2 загружаем модуль aoe и проверяем доступные AoE-устройства:

[root@node2 Desktop]# modprobe aoe
[root@node2 Desktop]# aoe-stat

После обнаружения устройств создаём зеркальный массив md0 из двух AoE-устройств:

[root@node2 Desktop]# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/etherd/e0.0 /dev/etherd/e0.1
[root@node2 Desktop]# cat /proc/mdstat
[root@node2 Desktop]# mdadm --detail /dev/md0
[root@node2 Desktop]# mkfs.ext3 /dev/md0

Коротко: мы строим RAID1 из двух удалённых блочных устройств, что повышает отказоустойчивость DOMU при локальном сбое одного AoE-устройства.

Шаг 5. Установка Debian в DOMU на node2

Debootstrap позволяет создать минимальную Debian-систему без dpkg/apt в целевой папке и затем chroot.

[root@node2 Desktop]# yum install debootstrap
[root@node2 Desktop]# mkdir /debian
[root@node2 Desktop]# mount /dev/md0 /debian
[root@node2 Desktop]# debootstrap --arch i386 etch /debian

После установки базовой системы нужно подготовить несколько вещей для корректного запуска под XEN.

Получение консоли в DOMU

Если не настроить правильно inittab и getty, вы можете не получить консоль. Для минимальной конфигурации:

[root@node2 Desktop]# cp /etc/passwd /etc/shadow /debian/etc
[root@node2 Desktop]# echo '/dev/sda1 / ext3 defaults 1 1' > /debian/etc/fstab
[root@node2 Desktop]# sed -ie 's/^[2-6]:/#/0/' /debian/etc/inittab

Совет: если консоль не появляется, смотрите логи XEN и механизм respawn mingetty; иногда нужно добавить виртуальную консоль в конфигурацию DOMU или использовать ‘xm console’.

Важная правка initrd

Гостевая система в DOMU не использует SCSI; нужно создать initrd без SCSI-модулей и с поддержкой xennet/xenblk:

[root@node2 Desktop]# mkinitrd --omit-scsi-modules --with=xennet --with=xenblk --preload=xenblk initrd-$(uname -r)-no-scsi.img $(uname -r)

Если не убрать SCSI-модули, ядро гостя может ожидать SCSI-контроллер и вызвать kernel panic при загрузке.

Шаг 6. Конфигурация DOMU для XEN

Пример конфигурационного файла /etc/xen/debian (xm script). Обратите внимание, что формат должен соответствовать версии XEN в вашей системе. Ниже — пример с привычной синтаксисом:

kernel = '/boot/vmlinuz-2.6.21-7.fc7xen'
ramdisk = '/boot/initrd-2.6.21-7.fc7xen-no-scsi.img'
memory = '238'
name = 'debian'
root = '/dev/sda1 ro'
extra = 'console=tty1 xencons=tty1'
dhcp = 'dhcp'
vif = [ '' ]
disk = [ 'phy:md0,sda1,w' ]
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'

Пояснение параметров:

  • kernel/ramdisk — образ ядра и initrd для DOMU.
  • memory — количество МБ оперативной памяти.
  • disk — спецификация подключаемого устройства (phy:md0,sda1,w значит физический md0, смонтирован как sda1, режим записи).

Запуск DOMU и проверка

[root@node2 /]# umount /dev/md0
[root@node2 /]# xm create -c debian
[root@node1 /]# xm list

Команда xm create -c debian запускает DOMU и подсоединяет консоль. С помощью xm list можно проверить статус на node1 (или на node2).

Если после запуска консоли вы видите вход в Debian — установка завершена.

Live-migration DOMU на node3

Для живой миграции используйте:

[root@node2 ]# xm migrate --live debian node3

Требования для успешной миграции:

  • Сетевой доступ между node2 и node3.
  • Совместимая версия XEN и одинаковые/совместимые ядра или общий диск (AoE должен быть доступен с node3 или использовать разделяемую сеть AoE).
  • Достаточный объём памяти и ресурсов на node3.

Пошаговый чеклист (оператор)

  1. Убедиться, что node1 экспортирует устройства через vblade.
  2. На node2 загрузить модуль aoe и обнаружить устройства (aoe-stat).
  3. Создать RAID и отформатировать /dev/md0.
  4. Смонтировать /dev/md0 и запустить debootstrap.
  5. Подготовить /etc/fstab, /etc/inittab и копировать passwd/shadow.
  6. Сформировать initrd без SCSI и с xennet/xenblk.
  7. Создать конфигурацию DOMU и запустить xm create -c.
  8. Проверить работу DOMU и выполнить xm migrate –live при готовности.

Роли и ответственные:

  • Сетевой инженер: контроль сетевой транспортировки AoE и MTU.
  • Системный администратор node1: подготовка vblade и LVM.
  • Системный администратор node2: сборка RAID, установка DOMU.
  • Оператор миграции: проведение live-migration и проверка целостности приложения.

Критерии приёмки

  • DOMU успешно загружается и предлагает работоспособную консоль.
  • Файловая система внутри DOMU доступна и корректно монтирована (/dev/sda1).
  • Live-migration проходит без потери данных и DOMU остаётся доступным после миграции на node3.
  • Хосты node1, node2 и node3 регистрируют ожидаемое состояние в xm list/mdstat.

Отладка и распространённые ошибки

  1. kernel panic у гостя при загрузке

    • Причина: initrd включает SCSI-модули или отсутствуют xenblk/xennet.
    • Решение: пересобрать initrd с –omit-scsi-modules и –with=xenblk –with=xennet.
  2. Отсутствие AoE-устройств на node2

    • Причина: vblade не запущен на node1 или сетевые фильтры блокируют кадры AoE.
    • Решение: проверить vblade, arp/iptables и VLAN/MTU; запустить aoe-stat.
  3. xm migrate падает или даёт ошибку совместимости

    • Причина: несовместимые версии ядра/XEN или недоступные AoE-устройства на целевом хосте.
    • Решение: убедиться, что node3 также видит AoE-устройства (modprobe aoe + aoe-stat) и имеет совместимую версию XEN.
  4. Проблемы с консолью DOMU

    • Причина: getty respawn и отсутствие tty.
    • Решение: отредактировать /etc/inittab в chroot, добавить правильную консоль в конфигурацию Xen, использовать ‘xm console’.

Important: логи — ваш лучший друг. Просматривайте /var/log/xen, dmesg гостя и хоста для быстрого поиска причин.

Когда AoE не подходит

  • Если вам нужны продвинутые функции SAN уровня предприятия (тонкое выделение, мульти‑путь, шифрование, аппаратная репликация) — лучше смотреть в сторону iSCSI или Fibre Channel.
  • В средах с высоким трафиком и чувствительностью к задержкам AoE поверх обычного Ethernet без QoS может не обеспечить требуемую производительность.

Альтернативные подходы

  • iSCSI: стандарт RFC‑совместимый протокол, более богат функциями, поддерживает цели и инициаторы на уровне операционной системы.
  • NFS: проще в организации файлового доступа, но не предоставляет блочных устройств.
  • Fiber Channel: высокая пропускная способность и низкая задержка, но дороже аппаратно.

Мини-методология внедрения (быстрая дорожная карта)

  1. Прототип: реализовать AoE в тестовой сети с 2–3 узлами.
  2. Тестирование: провести IO-бенчмарки, симуляцию отказов, миграции.
  3. Процедуры отката: подготовить инструкции по восстановлению pv/lv и vblade.
  4. Автоматизация: оформить systemd unit-файлы, Ansible-плейбуки для повторяемости.

Безопасность и советы по сети

  • AoE не шифрует трафик, поэтому в продуктивной сети подумайте о выделенной VLAN или отдельном физическом сегменте.
  • Ограничьте доступ к AoE-рамкам с помощью фильтрации MAC и доступа по сети.
  • Регулярно обновляйте пакеты vblade/xen/mdadm и ядро.

Короткий справочник по командам

  • modprobe aoe — загрузить модуль AoE на инициаторе.
  • aoe-stat — показать обнаруженные AoE‑устройства.
  • vbladed — демон для публикации AoE устройств на target.
  • mdadm –create — создать программный RAID.
  • debootstrap — установить минимальную Debian систему в каталог.
  • mkinitrd –omit-scsi-modules … — создать initrd без SCSI модулей.
  • xm create -c — создать и подключить консоль к DOMU.
  • xm migrate –live — выполнить живую миграцию DOMU.

Глоссарий: однострочные определения

  • Target — сервер, экспортирующий AoE устройства.
  • Initiator — клиент, подключающийся к AoE устройствам.
  • Shelf — major номер в AoE, аналог главного индекса устройства.
  • Slot — minor номер в AoE, аналог подиндекса устройства.
  • Interface — сетевой интерфейс, на котором экспортируется устройство (по умолчанию eth0).
  • ACL — список контроля доступа, ограничивает инициаторы по MAC.
  • Buffers — число 64 КБ буферов для приёма пакетов.
  • Queue-length — число активных запросов ввода/вывода.
  • MTU — максимальный размер передаваемого Ethernet кадра.
  • UUID — уникальный идентификатор файловой системы.
  • Direct-IO — запись/чтение минуя кэш ОС.
  • Buffered-IO — обычная буферизация ОС.
  • Write Cache — режим кэширования записи на контроллере.
  • Trace-io — логирование всех I/O запросов демоном (для отладки).
  • Policy — правило доступа (accept/reject) по MAC.
  • losetup — привязка файла к loop блочному устройству.

Краткое резюме

  • XEN-AoE даёт лёгкий путь для организации блочной сети на базе стандартного Ethernet и дешёвого хранения.
  • В лаборатории описано создание двух 4 ГБ блочных устройств на node1, их экспорт, сборка RAID на node2, установка Debian DOMU и выполнение live-migration на node3.
  • AoE хорошо подходит для небольших стендов и бюджетных SAN, но имеет ограничения по функционалу по сравнению с iSCSI и FC.

Summary:

  • Автоматизируйте повторяемые шаги (systemd/Ansible).
  • Проверяйте совместимость версий XEN и наличие AoE на хостах при миграции.
  • Изолируйте AoE‑трафик в отдельной сети или VLAN.

Социальная заметка: короткая анонс‑версия (для рассылки) — см. поле og_description в SEO.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро