AoE: настройка инициатора, тесты производительности и сборка небольшого SAN
- Пошаговое руководство по настройке AoE-инициатора на клиенте, тестированию производительности с fio и bonnie-64 и созданию простого SAN на базе AoE.
- Включены проверенные команды, шаблоны конфигураций, методика измерений, контроль качества и планы действий при проблемах.
Краткое определение
AoE (ATA over Ethernet) — сетевой протокол для доставки блочных устройств по Ethernet без использования IP. Он экспортирует диски с сервера (target) и показывает их на клиенте (initiator) как локальные блочные устройства.
Содержание
- Настройка инициатора AoE на клиенте
- Сбор и интерпретация метрик производительности (fio, bonnie-64)
- Набор инструментов aoetools и их назначение
- Построение простого SAN из нескольких серверов и устройств
- Методика тестирования и критерии приёмки
- Руководства: чек-листы, сценарии отказа и отката
1. Настройка инициатора AoE на клиенте
Важно: прежде чем подключаться к удалённым AoE-устройствам, убедитесь, что сеть между сервером и клиентом работает стабильно и между ними настроены нужные VLAN/MTU параметры.
Требования на клиенте
- Модуль ядра aoe (aoe driver) должен быть доступен и загружен.
- Пакет aoe-tools должен быть установлен (см. раздел «Инструменты AoE»).
Шаги настройки инициатора
- Загрузите модуль aoe:
[root@aoeclient trunk]# modprobe aoe- Проверьте загруженные модули и наличие aoe:
[root@aoeclient trunk]# lsmod | grep aoe- Отобразите текущее состояние AoE-устройств:
[root@aoeclient trunk]# aoe-stat- Просмотрите созданные блочные устройства в /dev/etherd:
[root@aoeclient trunk]# ls -l /dev/etherd/- Отформатируйте устройство и смонтируйте (пример с ext3):
[root@aoeclient trunk]# mkfs.ext3 /dev/etherd/e0.0
[root@aoeclient trunk]# mount /dev/etherd/e0.0 /mntПосле этого устройство доступно для записи и чтения как локальный блок.
Important
- При работе с реальными дисками используйте journaling FS (ext4/xfs) в зависимости от требований к производительности и надёжности.
- Не выполняйте mkfs на рабочем устройстве без резервного копирования — это уничтожит данные.
2. Оборудование и исходные условия для тестирования производительности
В примере измерений использовалось следующее железо и конфигурация сети:
- Коммутатор: 3Com SuperStack 24 порта, гигабитный.
- Сетевые карты: Gigabit NICs (5-портовые на некоторых хостах).
- Диски: SATA 160 GB на серверах.
- CPU: Intel Xeon E5450 @ 3.00 GHz.
- ОЗУ: 24 GB.
MTU и Jumbo-кадры
Пример того, что MTU назначен в системе:
[root@sigma13 ]# ifconfig eth0 mtu 9000Замечание: использование jumbo-кадров (MTU 9000) может снизить CPU-нагрузку и повысить пропускную способность при корректной настройке коммутатора и NIC.
Операционные системы
В примере использовались Fedora Core 7 и 10 (FC7, FC10) из-за совместимости модулей ядра: не всегда возможно собрать все цели на одном ядре.
3. Методика измерения дискового i/o
Инструменты и подходы
- Хардварные и программные факторы влияют на результаты (MTU, свитч, драйвер, CPU, кеши).
- Для измерений полезно применять несколько независимых инструментов: fio (гибкий), bonnie (файловые тесты), hdparm (уровень диска), iostat (мониторинг) и dd (простейшие копирования/заполения).
Рекомендации по методике
- Убедитесь, что тесты выполняются на «чистом» устройстве или после сброса кеша, чтобы результаты не были искажены предыдущими операциями.
- Повторяйте тесты несколько раз и усредняйте результаты.
- Фиксируйте систему во время тестов: не запускайте фоновые тяжёлые задачи.
- Для длительных тестов записывайте температуру и состояние NIC/CPU, чтобы исключить троттлинг.
Короткая формула: контролируй переменные — повторяй тесты — усредняй результаты.
4. Производительность с fio (пример и разбор)
Файл конфигурации surface-scan (пример)
[global]
ethread=1
bs=128k
direct=1
ioengine=sync
verify=meta
verify pattern=0xaa555aa5
verify interval=512
[write-phase]
filename=/dev/etherd/e0.1 ; or use a full disk, for example /dev/sda
rw=write
fill device=1
do verify=0
[verify-phase]
stonewall
create serialize=0
filename=/dev/etherd/e0.1
rw=read
do verify=1
bs=128kОбъяснение ключевых параметров (одной строкой):
- bs — размер блока для операций I/O.
- direct=1 — обходит страницу кеша ОС (O_DIRECT).
- ioengine — метод выполнения I/O, here sync означает простые синхронные вызовы.
- verify — проверка целостности записанных данных.
Запуск теста
[root@aoeclient ]# fio surface-scanИнтерпретация графиков
- По горизонтальной оси (X) откладывается размер блока (в килобайтах).
- По вертикальной оси (Y) — пропускная способность в KB/sec (килобайт/секунду).
График записи (пример):

График чтения (пример):

Notes
- fio позволяет моделировать множество сценариев: случайные/последовательные, смешанные профили, разные размеры очередей и количества потоков.
- Результаты зависят от параметров bs и глубины очереди; для AoE-устройств в сети обычно выгодны большие последовательные блоки.
5. Производительность с bonnie-64
Простой командный запуск bonnie-64 (пример):
[root@sigma13 bonnie-64-read-only]# mount /dev/etherd/e0.0 /mnt
[root@sigma13 bonnie-64-read-only]# ./Bonnie -d /mnt/ -s 128График записи bonnie-64 (пример):

Обозначения на графике:
- X — размер файла в мегабайтах.
- Y — пропускная способность в МБ/сек.
Когда использовать bonnie
- bonnie удобен для файловых тестов и эмулирует поведение приложений, работающих с файлами (create, read, append).
- Для низкоуровневых блочных измерений лучше fio или iozone с direct I/O.
6. Инструменты AoE (aoetools) и команды
Установка aoetools (пример):
[root@node1 kk]# wget http://support.coraid.com/support/linux/aoe6-70.tar.gz
[root@node1 kk]# tar -xzvf aoe6-70.tar.gz
[root@node1 kk]# cd aoe6-70
[root@node1 aoe6-70]# make
[root@node1 aoe6-70]# make installПосле установки доступны утилиты:
- aoecfg — управление конфигурационными строками AoE.
- aoe-discover — инициировать обнаружение AoE-устройств драйвером.
- aoe-flush — удалить отключённые устройства из драйвера.
- aoe-interfaces — привязать драйвер к конкретным сетевым интерфейсам.
- aoe-mkdevs — создать специальные файлы устройств для драйвера aoe.
- aoe-mkshelf — создать файлы устройств для одного адреса стойки (shelf).
- aoeping — простая проверка связи с AoE-устройством.
- aoe-revalidate — перепроверить размер диска AoE-устройства.
- aoe-stat — вывести отчёт о состоянии AoE-устройств.
- aoe-version — показать версии aoetools и загруженного драйвера.
Пример: обнаружение и создание устройств
[root@client1 krishna]# aoe-discover
[root@client1 krishna]# aoe-stat
[root@client1 krishna]# aoe-mkdevs7. Построение небольшого SAN на AoE — практический пример
Описание архитектуры
В простом SAN несколько серверов (targets) экспортируют блочные устройства. Клиент (initiator) подключается к ним и может объединить устройства в RAID/LVM для обеспечения отказоустойчивости и масштабируемости.
Примерная схема сети (логическая):

В эксперименте использовались loop-устройства по 200 MB в качестве имитации реальных дисков (в реальном развёртывании их заменяют на 200 GB или больше).
7.1 Экспорт устройств с server0
Создаём два файла по 200 MB и привязываем к loop-устройствам:
[root@server0]# dd if=/dev/zero of=file1.img bs=1M count=200
[root@server0]# dd if=/dev/zero of=file2.img bs=1M count=200
[root@server0]# losetup /dev/loop0 file1.img
[root@server0]# losetup /dev/loop1 file2.img
[root@server0]# losetup -a
[root@server0 vblade-19]# ./vbladed 0 0 eth0 /dev/loop0
[root@server0 vblade-19]# ./vbladed 1 0 eth0 /dev/loop17.2 Экспорт устройств с server1
Повторяем процедуру на втором сервере:
[root@server1]# dd if=/dev/zero of=file1.img bs=1M count=200
[root@server1]# dd if=/dev/zero of=file2.img bs=1M count=200
[root@server1]# losetup /dev/loop0 file1.img
[root@server1]# losetup /dev/loop1 file2.img
[root@server1]# losetup -a
[root@server1 vblade-19]# ./vbladed 0 1 eth0 /dev/loop0
[root@server1 vblade-19]# ./vbladed 1 1 eth0 /dev/loop1Примечание: параметры в команде vbladed обозначают shelf и номер (shelf, slot или подобную адресацию). Проверьте документацию вашей версии vblade для точного синтаксиса.
7.3 Клиент: обнаружение и работа с экспортированными устройствами
Проверяем загрузку модуля aoe и утилит:
[root@client1 krishna]# lsmod | grep aoe
[root@client1 krishna]# aoe-versionПример вывода aoe-version в эксперименте:
aoetools: 29
installed aoe driver: 70
running aoe driver: 70Запускаем модуль и смотрим доступные устройства:
[root@client1 krishna]# modprobe aoe
[root@client1 krishna]# aoe-statПример строки вывода aoe-stat:
e0.0 0.209GB eth0 1024 up
e0.1 0.209GB eth0 1024 up
e1.0 0.209GB eth0 1024 up
e1.1 0.209GB eth0 1024 up7.4 Создание RAID на клиенте (пример)
Монтирование зеркал (RAID1) и затем их страйп (RAID0) — подход «stripe over mirrors».
Сборка зеркал:
[root@client1 krishna]# mdadm -C /dev/md0 -l 1 -n 2 /dev/etherd/e0.0 /dev/etherd/e0.1
[root@client1 krishna]# mdadm -C /dev/md1 -l 1 -n 2 /dev/etherd/e1.0 /dev/etherd/e1.1Создаём страйп поверх зеркал:
[root@client1 krishna]# mdadm -C /dev/md2 -l 0 -n 2 /dev/md0 /dev/md1Проверка состояния RAID:
[root@client1 krishna]# cat /proc/mdstat
Personalities : [raid1] [raid0]
md2 : active raid0 md1[1] md0[0]
409344 blocks 64k chunks
md1 : active raid1 etherd/e1.1[1] etherd/e1.0[0]
204736 blocks [2/2] [UU]
md0 : active raid1 etherd/e0.1[1] etherd/e0.0[0]
204736 blocks [2/2] [UU]
unused devices:7.5 Конвертация RAID md2 в LVM и создание файловой системы
Создаём PV, VG и LV, затем файловую систему и монтируем её:
[root@client1 krishna]# pvcreate /dev/md2
[root@client1 krishna]# vgcreate volgrp /dev/md2
[root@client1 aoedoc]# lvcreate -L 300M -n logicalvol volgrp
[root@client1 aoedoc]# mkfs.ext3 /dev/volgrp/logicalvol
[root@client1 aoedoc]# mount -t ext3 /dev/volgrp/logicalvol /mnt/
[root@client1 mnt]# cd /mnt/
[root@client1 mnt]# mkdir aoe
[root@client1 mnt]# touch aoefile
[root@client1 mnt]# ls
aoe aoefile lost+foundТеперь логический том доступен и готов к использованию.
Добавление томов и масштабирование
- Чтобы добавить физический том в volgroup: сначала добавьте новый диск/устройство и выполните vgextend.
- Для увеличения файловой системы: расширьте LV (lvextend) и затем выполните resize2fs (или xfs_growfs для XFS) после размонтирования или в онлайн-режиме, если FS поддерживает.
8. Критерии приёмки
- Устройства /dev/etherd/* видны и стабильны после перезагрузки сети.
- Производительность в тестах fio/bonnie соответствует ожидаемым профилям (величины и тренды), нет постоянных ошибок верификации.
- RAID- и LVM-уровни собраны и корректно отражают состояние в /proc/mdstat и vgs/pvs/lvs.
- При отключении одного target зеркалирование сохраняет целостность данных (тест на отказ).
9. План действий при отказе и откат (runbook)
Если клиент теряет доступ к одному из target:
- Проверить сетевой уровень: ping, ethtool, ifconfig.
- На сервере-target убедиться, что vbladed работает и loop-устройства присутствуют.
- Выполнить aoe-stat и aoe-discover на клиенте.
- Если устройство исчезло из md, проверить статус mdadm и перестроить массив: mdadm –assemble –scan или –add при необходимости.
- Для быстрого отката: если изменения файловой системы привели к проблемам, размонтируйте LV и восстановите из резервной копии.
Rollback-пример
- Отключите модуль aoe: rmmod aoe (только если безопасно).
- Снимите md-устройства: mdadm –stop /dev/mdX и затем соберите их снова при необходимости.
10. Чек-листы по ролям
Администратор сети
- Проверить MTU на свитчах и NICs.
- Убедиться в правильной маршрутизации и VLAN.
- Мониторить перегрузки портов.
Системный администратор (server/target)
- Настроить vblade/vbladed для экспорта нужных устройств.
- Следить за состоянием дисков и loop-устройств.
- Обновлять aoetools и драйверы корректно, тестируя в стенде.
Клиентский администратор (initiator)
- Установить aoe-tools и загрузить модуль aoe.
- Провести тесты производительности и проверку целостности.
- Настроить mdadm/LVM и планировать регулярные бекапы.
11. Альтернативы и когда AoE может не подойти
Когда AoE — хорошее решение
- Простые SAN на базе Ethernet без необходимости IP-level маршрутизации.
- Низкая сложность: лёгкая настройка и небольшие накладные расходы.
Ограничения и случаи, когда AoE не оптимален
- При необходимости межсетевой маршрутизации между VLAN или через слой 3. AoE работает в канале Ethernet (L2).
- Если нужна продвинутая функциональность блоков уровня SAN (Zoning, FC SAN features), стоит рассмотреть iSCSI или Fibre Channel.
- Для масштабируемых и многофункциональных дата-центров с интеграцией в storage management — iSCSI/FC чаще предпочтительнее.
Альтернативы
- iSCSI — работает по IP, подходит для масштабирования и межсетевого взаимодействия.
- NFS — файловый доступ, проще, но не блочный.
- Ceph/RADOS/Gluster — распределённые решения для масштабируемого хранения.
12. Мини‑методология тестирования (шаги)
- Подготовка: очистка всех предыдущих тестовых данных.
- Настройка сети: проверьте MTU, отключите энергосбережение на NIC.
- Базовый тест: короткий fio с direct=1 по последовательному чтению/записи.
- Расширенный тест: рандомные операции, многопоточные тесты, разные bs.
- Нагрузочные тесты: долгое заполнение, проверка стабильности.
- Снятие логов: iostat, sar, dmesg, netstat во время теста.
- Анализ результатов и сравнение с базовой линией.
13. Короткий глоссарий
- AoE — ATA over Ethernet, протокол блочного доступа по L2.
- Target — сервер, экспортирующий устройство.
- Initiator — клиент, потребляющий экспортированный диск.
- vblade/vbladed — пользоват. процесс для экспорта блочных устройств по AoE.
- mdadm — утилита для управления ПО-RAID в Linux.
- LVM — логический менеджер томов (PV/VG/LV).
14. Рекомендации по безопасности и эксплуатации
- Ограничьте трафик AoE на уровне VLAN или физических портов: AoE не шифрует трафик, поэтому изолируйте сеть.
- Контроль доступа: используйте сетевые политики, чтобы предотвратить доступ сторонних хостов к AoE-устройствам.
- Мониторинг: собирайте метрики сетевого трафика, ошибок NIC и статистику mdadm/LVM.
15. Типичные проблемы и краткие решения
Проблема: Устройство не появляется после modprobe aoe
- Проверьте кабели, VLAN и MTU.
- Выполните aoe-discover.
- Проверьте логи dmesg и /var/log/messages.
Проблема: низкая производительность при больших блоках
- Проверьте MTU, включены ли jumbo frames на всех промежуточных устройствах.
- Проверьте CPU util на сервере и клиенте.
- Попробуйте direct=0 (для сравнения), оцените влияние кеша ОС.
Проблема: ошибки верификации fio
- Проверьте целостность сети и сбои на целевом диске.
- Увеличьте verify interval или отключите verify для чистых скоростных тестов (но не для проверок целостности).
16. Резюме
- AoE — лёгкий и эффективный протокол для блочного доступа поверх Ethernet в пределах L2-сети.
- Для правильной эксплуатации необходимо обеспечить корректную сетевую конфигурацию (MTU, VLAN) и использовать соответствующие инструменты (aoetools, fio, bonnie).
- Собранные RAID/LVM конфигурации позволяют организовать базовый SAN с отказоустойчивостью и возможностью масштабирования.
Надеюсь, это руководство даст вам чёткую карту действий для развёртывания AoE и проведения корректных тестов производительности.
Похожие материалы
Herodotus: механизм и защита Android‑трояна
Включить новое меню «Пуск» в Windows 11
Панель полей сводной таблицы в Excel — руководство
Включить новое меню «Пуск» в Windows 11
Дубликаты Диспетчера задач в Windows 11 — как исправить