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

AoE с виртуализацией: XEN-AoE — лабораторное лабораторное руководство

8 min read Виртуализация Обновлено 08 Nov 2025
AoE с виртуализацией (XEN-AoE) — лабораторное руководство
AoE с виртуализацией (XEN-AoE) — лабораторное руководство

TL;DR

XEN-AoE помогает строить недорогую отказоустойчивую инфраструктуру виртуальных машин, экспортируя блочные устройства по AoE и запуская гостевые системы через Xen. В этой инструкции шаг за шагом показано, как создать 2 блочных устройства на узле node1, экспортировать их, собрать RAID на node2, развернуть Debian DomU и выполнить live-миграцию на node3. Включены советы по отладке, плейбук для развертывания и контрольные списки.

О статье

Это подробное руководство по использованию протокола ATA over Ethernet (AoE) совместно с гипervisором Xen для создания виртуальной среды с внешними блочными устройствами. Материал ориентирован на лабораторную установку с тремя узлами: node1 (таргет, экспортирует диски), node2 (инициатор, запускает DomU) и node3 (узел для миграции).

Основные понятия за одну строку

  • AoE: протокол для доступа к блочным устройствам по Ethernet.
  • Xen: гипervisор для запуска гостевых ОС (DomU) поверх Dom0.
  • DomU: гостевая виртуальная машина.
  • Dom0: привилегированная доменная среда Xen, управляющая оборудованием.

1. О XEN-AoE

XEN-AoE сочетает преимущества дешёвого аппаратного обеспечения и сетевого доступа к блочным устройствам. Архитектура позволяет отделить диски от CPU и памяти, что улучшает доступность и управляемость. Основные компоненты:

  • виртуализация CPU;
  • виртуализация хранения;
  • IP-SAN техники (AoE);
  • отделение дисков от вычислительных узлов;
  • использование 64-битных x86 CPU и стандартных дисков;
  • гигабитная Ethernet-инфраструктура.

Важно: AoE ориентирован на простые и недорогие SAN-решения без сложных фич Array-уровня.

2. Цель эксперимента

Цель лаборатории — экспортировать два блочных устройства объёмом 4 ГБ с node1 на node2, собрать RAID1 на node2, развернуть минимальную Debian-систему в качестве DomU и выполнить live-миграцию этого DomU с node2 на node3.

Требования:

  • три машины с установленным Xen и сетью между ними;
  • root-доступ или эквивалент на node1 и node2;
  • базовые утилиты: dd, losetup, lvm2, vblade (AoE target daemon), mdadm, debootstrap, mkinitrd, xm/xend.

3. Подготовка и создание блочных устройств на node1

На 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

Примечание: bs=1M и count=4000 создают файл приблизительно 4 000 МБ. На современных системах стоит использовать count=4096 для точной 4 ГБ, если нужна строго байтовая точность.

Важное замечание

Использование файлов как блочных устройств подходит для лабораторий и тестов. Для продакшена предпочтительнее выделенные разделы или реальные диски.

4. Создание LVM на loop-устройствах

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

[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 -L3G -n lvnode1.0 vgnode1.0
[root@node1 Desktop]# lvcreate -L3G -n lvnode1.1 vgnode1.1
[root@node1 Desktop]# lvs

Здесь каждый логический том 3 ГБ; оставшийся объём можно использовать при необходимости.

5. Экспорт блочных томов через vblade (AoE target)

На node1 запустите демона vblade для экспорта LVM-томов по AoE. Пример:

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

Параметры означают: shelf 0, slot 0 и 1, интерфейс eth0 и имя устройства в системе LVM. После запуска таргеты будут доступны по AoE как /dev/etherd/eX.Y на инициаторе.

6. Доступ к устройствам на node2 и сборка RAID

На node2 загрузите модуль aoe и проверьте доступность таргетов:

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

Если таргеты видны, создайте RAID1 из двух 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

Примечание: если номера AoE-устройств отличаются, замените пути на фактические.

7. Создание DomU на RAID-массиве с помощью debootstrap

Debootstrap скачивает и разворачивает базовую Debian-систему без apt/dpkg на целевой каталог.

[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

После выполнения в каталоге /debian будет минимальная Debian-система.

8. Получение консоли DomU

Для корректного отображения консоли нужны правки в /etc внутри chroot-образа и настройка inittab. Примеры команд:

[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

Важно: без корректной настройки mingetty и inittab вы можете не получить ожидаемую консоль. Разные версии Debian/Init требуют отдельных приёмов; поиск по сообществу Xen и конкретной версии Debian поможет найти решение для вашей конфигурации.

9. Создание initrd без SCSI-модулей

Чтобы гостевая система корректно загружалась поверх AoE, создайте initrd, предварительно исключив SCSI-модули и добавив xen-блоковые драйверы:

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

Если загрузка падает с сообщением kernel panic, проверьте, включены ли необходимые драйверы в initrd и соответствует ли версия ядра.

10. Конфигурация DomU (пример /etc/xen/debian)

Пример конфигурационного файла для 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'

Проверяйте синтаксис и кавычки: для Xen обычно используют одинарные кавычки в конфигурации.

11. Запуск DomU и проверка

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

Команда xm create -c debian запустит гостя и подключит консоль. xm list на другом узле покажет список доменов.

12. Live-миграция DomU на node3

Для live-миграции используйте команду:

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

Убедитесь, что сеть между узлами пропускает трафик Xen и AoE, что на node3 настроены те же модули и доступна та же конфигурация сети.

Советы по отладке и типичные ошибки

  • Убедитесь, что aoe-модуль загружен на инициаторе: modprobe aoe.
  • Проверьте видимость таргетов через aoe-stat или /proc/net/aoe.
  • Если DomU не загружается, создайте initrd с xenblk и xennet и исключите SCSI.
  • Для корректной работы mingetty проверьте /etc/inittab и шрифты консоли.
  • При миграции убедитесь, что версии ядра и модулей Xen совместимы между узлами.

Важно: AoE не шифрует трафик. В локальной доверенной сети это приемлемо; через ненадёжные сети используйте туннелирование или VPN.

Когда решение не подходит

  • Требуется enterprise-класс защиты или шифрования на уровне массива — AoE не обеспечивает этого.
  • Нужны продвинутые функции массивов (dedup, snapshot на уровне контроллера) — тогда лучше iSCSI/FC с поддержкой этих фич.
  • Если у вас нет выделенного и изолированного L2 сегмента для AoE, повышается риск столкновений и потери данных.

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

  • iSCSI: поддерживает маршрутизацию и более широкий набор функций хранения. Подходит для интеграции с существующими SAN и службами.
  • Fibre Channel: высокая производительность и низкая задержка, но дорогое оборудование.
  • NFS/Clustered FS: когда нужно шарить файловую систему, а не блочные устройства.

Мини-методология развёртывания (шаги)

  1. Подготовка сети: выделить VLAN/сегмент для AoE.
  2. Подготовка узлов: установить Xen, модули AoE, необходимые утилиты.
  3. Создание и экспорт блочных устройств на таргете.
  4. Подключение, тестирование и сборка RAID на иницииаторе.
  5. Развёртывание гостевой ОС через debootstrap.
  6. Тест загрузки и консоли, корректировка initrd.
  7. Пробная миграция и проверка приложений.
  8. Документирование конфигурации и бэкапы.

Чек-лист по ролям

  • Администратор сети:
    • обеспечить L2 доступ между узлами;
    • настроить MTU и QoS при необходимости;
    • изолировать AoE трафик на VLAN.
  • Системный администратор storage:
    • настроить vblade и проверить экспорт;
    • следить за целостностью LVM и RAID;
    • обеспечить мониторинг mdadm и логов AoE.
  • Администратор виртуализации:
    • подготовить initrd и конфигурацию Xen;
    • протестировать live-миграцию;
    • настроить мониторинг DomU.

Плейбук для повторяемого развёртывания (SOP)

  1. На node1: подготовить файлы, подключить их к loop и создать LVM.
  2. Запустить vbladed с нужными shelf/slot и интерфейсом.
  3. На node2: подключить aoe и подтвердить видимость устройств.
  4. Собрать RAID, отформатировать и смонтировать.
  5. Выполнить debootstrap и подготовить /etc, fstab и inittab.
  6. Сформировать initrd с xen-модулями.
  7. Создать конфиг Xen и запустить DomU.
  8. Выполнить тестовую миграцию на node3.
  9. Проверить журналы, производительность и целостность данных.

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

  • DomU успешно стартует и даёт консоль;
  • Файловая система гостя смонтирована и доступна;
  • Live-миграция проходит без остановки сервисов (допустимы краткие задержки до переключения сетевых соединений);
  • После миграции DomU корректно работает на node3 и доступ к блочным устройствам сохранён;
  • Логи на всех узлах не содержат критических ошибок за период тестов.

Факт-бокс

  • Минимальный объём примера: два блочных тома по ~4 ГБ;
  • RAID конфигурация в примере: RAID1 на инициаторе;
  • Требуется локальная L2 сеть для AoE; AoE не маршрутизируется по обычному IP.

Ментальные модели и эвристики

  • Модель «разделение ролей»: таргет — хранение, инициатор — вычисления. Это упрощает масштабирование.
  • Эвристика для лабораторий: использовать файлы + loop для имитации дисков; для продакшена — физические диски.
  • При миграции думайте о совместимости версий ядра и модулей Xen как о критическом требовании.

Короткие рекомендации по безопасности

  • Размещайте AoE в отдельном VLAN и блокируйте доступ из внешних сетей;
  • Используйте защищённое управление узлами (SSH с ключами, ограничение доступа);
  • Планируйте резервное копирование данных с таргета и инициатора.

Заключение

AoE — лёгкий и экономичный способ предоставить блочное хранение через Ethernet. В связке с Xen он позволяет быстро развернуть переносимые и мигрируемые гостевые машины на стандартном аппаратном обеспечении. Для небольших и средних установок, где не нужна функциональность корпоративных массивов, AoE часто оказывается более простой и дешёвой альтернативой iSCSI и Fibre Channel.

Глоссарий

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

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

Троян Herodotus: как он работает и как защититься
Кибербезопасность

Троян Herodotus: как он работает и как защититься

Включить новое меню «Пуск» в Windows 11
Windows 11

Включить новое меню «Пуск» в Windows 11

Панель полей PivotTable в Excel — руководство
Excel

Панель полей PivotTable в Excel — руководство

Включить новый Пуск в Windows 11 — инструкция
Windows

Включить новый Пуск в Windows 11 — инструкция

Как убрать дубликаты Диспетчера задач Windows 11
Windows

Как убрать дубликаты Диспетчера задач Windows 11

Как просмотреть историю просмотров Reels в Instagram
Социальные сети

Как просмотреть историю просмотров Reels в Instagram