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: когда нужно шарить файловую систему, а не блочные устройства.
Мини-методология развёртывания (шаги)
- Подготовка сети: выделить VLAN/сегмент для AoE.
- Подготовка узлов: установить Xen, модули AoE, необходимые утилиты.
- Создание и экспорт блочных устройств на таргете.
- Подключение, тестирование и сборка RAID на иницииаторе.
- Развёртывание гостевой ОС через debootstrap.
- Тест загрузки и консоли, корректировка initrd.
- Пробная миграция и проверка приложений.
- Документирование конфигурации и бэкапы.
Чек-лист по ролям
- Администратор сети:
- обеспечить L2 доступ между узлами;
- настроить MTU и QoS при необходимости;
- изолировать AoE трафик на VLAN.
- Системный администратор storage:
- настроить vblade и проверить экспорт;
- следить за целостностью LVM и RAID;
- обеспечить мониторинг mdadm и логов AoE.
- Администратор виртуализации:
- подготовить initrd и конфигурацию Xen;
- протестировать live-миграцию;
- настроить мониторинг DomU.
Плейбук для повторяемого развёртывания (SOP)
- На node1: подготовить файлы, подключить их к loop и создать LVM.
- Запустить vbladed с нужными shelf/slot и интерфейсом.
- На node2: подключить aoe и подтвердить видимость устройств.
- Собрать RAID, отформатировать и смонтировать.
- Выполнить debootstrap и подготовить /etc, fstab и inittab.
- Сформировать initrd с xen-модулями.
- Создать конфиг Xen и запустить DomU.
- Выполнить тестовую миграцию на node3.
- Проверить журналы, производительность и целостность данных.
Критерии приёмки
- 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-устройством.
Похожие материалы
Троян Herodotus: как он работает и как защититься
Включить новое меню «Пуск» в Windows 11
Панель полей PivotTable в Excel — руководство
Включить новый Пуск в Windows 11 — инструкция
Как убрать дубликаты Диспетчера задач Windows 11