XEN-AoE: виртуализация с ATA over Ethernet
Краткое описание и цель
Этот материал объясняет, как совместить 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.
Пошаговый чеклист (оператор)
- Убедиться, что node1 экспортирует устройства через vblade.
- На node2 загрузить модуль aoe и обнаружить устройства (aoe-stat).
- Создать RAID и отформатировать /dev/md0.
- Смонтировать /dev/md0 и запустить debootstrap.
- Подготовить /etc/fstab, /etc/inittab и копировать passwd/shadow.
- Сформировать initrd без SCSI и с xennet/xenblk.
- Создать конфигурацию DOMU и запустить xm create -c.
- Проверить работу 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.
Отладка и распространённые ошибки
kernel panic у гостя при загрузке
- Причина: initrd включает SCSI-модули или отсутствуют xenblk/xennet.
- Решение: пересобрать initrd с –omit-scsi-modules и –with=xenblk –with=xennet.
Отсутствие AoE-устройств на node2
- Причина: vblade не запущен на node1 или сетевые фильтры блокируют кадры AoE.
- Решение: проверить vblade, arp/iptables и VLAN/MTU; запустить aoe-stat.
xm migrate падает или даёт ошибку совместимости
- Причина: несовместимые версии ядра/XEN или недоступные AoE-устройства на целевом хосте.
- Решение: убедиться, что node3 также видит AoE-устройства (modprobe aoe + aoe-stat) и имеет совместимую версию XEN.
Проблемы с консолью 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: высокая пропускная способность и низкая задержка, но дороже аппаратно.
Мини-методология внедрения (быстрая дорожная карта)
- Прототип: реализовать AoE в тестовой сети с 2–3 узлами.
- Тестирование: провести IO-бенчмарки, симуляцию отказов, миграции.
- Процедуры отката: подготовить инструкции по восстановлению pv/lv и vblade.
- Автоматизация: оформить 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.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента