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

AoE: настройка инициатора, тесты производительности и сборка небольшого SAN

9 min read Хранение данных Обновлено 07 Nov 2025
AoE: настройка, тесты и сборка SAN
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»).

Шаги настройки инициатора

  1. Загрузите модуль aoe:
[root@aoeclient trunk]# modprobe aoe
  1. Проверьте загруженные модули и наличие aoe:
[root@aoeclient trunk]# lsmod | grep aoe
  1. Отобразите текущее состояние AoE-устройств:
[root@aoeclient trunk]# aoe-stat
  1. Просмотрите созданные блочные устройства в /dev/etherd:
[root@aoeclient trunk]# ls -l /dev/etherd/
  1. Отформатируйте устройство и смонтируйте (пример с 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 (килобайт/секунду).

График записи (пример):

График производительности записи при тесте fio

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

График производительности чтения при тесте fio

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 (пример):

График производительности записи при тесте bonnie

Обозначения на графике:

  • 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-mkdevs

7. Построение небольшого SAN на AoE — практический пример

Описание архитектуры

В простом SAN несколько серверов (targets) экспортируют блочные устройства. Клиент (initiator) подключается к ним и может объединить устройства в RAID/LVM для обеспечения отказоустойчивости и масштабируемости.

Примерная схема сети (логическая):

Логическая схема небольшого SAN с несколькими серверами и клиентом

В эксперименте использовались 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/loop1

7.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 up

7.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:

  1. Проверить сетевой уровень: ping, ethtool, ifconfig.
  2. На сервере-target убедиться, что vbladed работает и loop-устройства присутствуют.
  3. Выполнить aoe-stat и aoe-discover на клиенте.
  4. Если устройство исчезло из md, проверить статус mdadm и перестроить массив: mdadm –assemble –scan или –add при необходимости.
  5. Для быстрого отката: если изменения файловой системы привели к проблемам, размонтируйте 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. Мини‑методология тестирования (шаги)

  1. Подготовка: очистка всех предыдущих тестовых данных.
  2. Настройка сети: проверьте MTU, отключите энергосбережение на NIC.
  3. Базовый тест: короткий fio с direct=1 по последовательному чтению/записи.
  4. Расширенный тест: рандомные операции, многопоточные тесты, разные bs.
  5. Нагрузочные тесты: долгое заполнение, проверка стабильности.
  6. Снятие логов: iostat, sar, dmesg, netstat во время теста.
  7. Анализ результатов и сравнение с базовой линией.

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 и проведения корректных тестов производительности.

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

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

Herodotus: механизм и защита Android‑трояна
Кибербезопасность

Herodotus: механизм и защита Android‑трояна

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

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

Панель полей сводной таблицы в Excel — руководство
Excel

Панель полей сводной таблицы в Excel — руководство

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

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

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

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

История просмотров Reels в Instagram — как найти
Instagram

История просмотров Reels в Instagram — как найти