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

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

7 min read Хранилище Обновлено 16 Nov 2025
AoE: настройка, тестирование и создание SAN
AoE: настройка, тестирование и создание SAN

Кратко: пошаговое руководство по настройке инициатора AoE на клиенте, тестированию производительности с fio и bonnie, установке aoe‑утилит и созданию простой SAN на базе loop‑устройств. Включены команды, примеры конфигурации, чек‑листы ролей, критерии приёмки и рекомендации по отладки.

8. Настройка инициатора AoE (AoE Initiator Setup)

На стороне клиента должен быть установлен драйвер aoe и пакет aoe‑tools (см. раздел «AoE Tools & commands»). Экспортированные блочные устройства появятся в каталоге /dev/etherd. Выполните следующие команды для доступа к устройству:

[root@aoeclient trunk]# modprobe aoe
[root@aoeclient trunk]# lsmod | grep aoe
[root@aoeclient trunk]# aoe-stat
[root@aoeclient trunk]# ls -l /dev/etherd/
[root@aoeclient trunk]# mkfs.ext3 /dev/etherd/e0.0
[root@aoeclient trunk]# mount /dev/etherd/e0.0 /mnt

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

Важно: используйте правильный файл устройства (/dev/etherd/eX.Y) и убедитесь, что модули загружены корректно. Если lsmod не показывает aoe, проверьте вывод dmesg на предмет ошибок при modprobe.

9. Графики производительности таргета AoE (AoE Target Performance Graph)

9.1 Оборудование, использованное для измерений

В эксперименте использовалось следующее оборудование для измерения дискового ввода‑вывода (I/O):

  • коммутатор Com Super Stack, 24 порта, гигабитный
  • сетевые карты Gigabyte, 5‑портовая NIC
  • 160 ГБ SATA‑жёсткий диск
  • процессор Intel Xeon E5450 @ 3.00 GHz
  • 24 ГБ оперативной памяти

Сеть поддерживает MTU 9000 (jumbo frames):

[root@sigma13 ]# ifconfig eth0 mtu 9000

Для тестов использовались Fedora Core 7 и Fedora Core 10 из‑за несовместимости сборки всех таргетов с одним и тем же ядром.

9.2 Методы измерения дискового ввода‑вывода

После настройки всех доступных AoE‑таргетов можно измерять I/O экспортированных блочных устройств. Популярные инструменты: hdparm, iostat, dd, fio, bonnie, iozone, iometer и другие. Каждый инструмент измеряет разные характеристики: пропускную способность, задержки, IOPS, последовательное/случайное чтение/запись.

Определения в одну строку:

  • IOPS — количество операций ввода‑вывода в секунду.
  • Throughput (пропускная способность) — объём данных в единицу времени (например, КБ/с или МБ/с).

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

Для измерений использовался 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

После настройки запустите fio против всех доступных aoe‑таргетов для сбора данных:

[root@aoeclient ]# fio surface-scan

График производительности AoE (операция записи) выглядит следующим образом:

График производительности AoE — запись: пропускная способность (КБ/с) в зависимости от размера блока

Здесь по оси X отложен размер блока в килобайтах, по оси Y — пропускная способность в КБ/с.

График производительности AoE (операция чтения) выглядит так:

График производительности AoE — чтение: пропускная способность (КБ/с) в зависимости от размера блока

Практический совет: при интерпретации графиков оцените поведение при малых блоках (латентность, IOPS) и при больших — для оценки последовательной пропускной способности.

9.4 Графики производительности с 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

Результат (график для операции записи):

График производительности AoE с bonnie — запись: пропускная способность в МБ/с в зависимости от размера файла

Здесь ось X — размер файла в мегабайтах, ось Y — пропускная способность в МБ/с.

Советы по тестированию производительности:

  • Прогрейте кеш перед измерениями, если хотите измерять устойчивую производительность.
  • Повторите тесты несколько раз и выбросьте первые прогревочные прогоны.
  • Смените параметры fio (ioengine, direct, bs, rw) чтобы получить полную картину.

10. Инструменты AoE и команды (AoE Tools & commands)

Существуют утилиты для анализа AoE‑трафика и управления устройствами. Скачивание и установка:

[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
  • aoe-interfaces — ограничить драйвер aoe указанными сетевыми интерфейсами
  • aoe-mkdevs — создать специальные файлы устройств для aoe драйвера
  • aoe-mkshelf — создать файлы устройств для одного адреса shelf
  • aoeping — простая проверка связи с AoE‑устройством
  • aoe-revalidate — повторно валидировать размер диска aoe‑устройства
  • aoe-stat — вывести отчёт о состоянии устройств aoe
  • aoe-version — показать версии aoe‑утилит и драйвера

Примечание: в исходном списке команда aoe-interfaces была повторена — следите за дублированием при документировании.

11. Создание небольшой SAN (Making of a Small SAN)

На этом этапе рассмотрим, как собрать простую сеть хранения (SAN) на базе доступных дисков и гигабитного коммутатора. В примере автор использовал loop‑устройства по 200 МБ вместо реальных 200 ГБ дисков (в реальной среде замените файлы на реальные устройства или большие файлы).

Основная схема SAN:

Схема небольшой SAN с двумя серверами‑таргетами и одним клиентом

11.1 Настройка сервера для SAN (Server Setup For SAN)

Экспорт двух устройств с server0:

[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 vblade-19]# losetup -a
[root@server0 vblade-19]# ./vbladed 0 0 eth0 /dev/loop0
[root@server0 vblade-19]# ./vbladed 1 0 eth0 /dev/loop1

Экспорт двух устройств с 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 vblade-19]# losetup -a
[root@server1 vblade-19]# ./vbladed 0 1 eth0 /dev/loop0
[root@server1 vblade-19]# ./vbladed 1 1 eth0 /dev/loop1

Здесь vbladed экспортирует loop‑устройства по протоколу AoE.

11.2 Настройка клиента для SAN (Client Setup For SAN)

Убедитесь, что на клиенте установлен драйвер aoe и утилиты. Проверка модулей:

[root@client1 krishna]# lsmod | grep aoe

Если драйвер отсутствует, его можно скачать с зеркала: http://support.coraid.com/support/linux/

Проверка версии aoetools и драйвера:

[root@client1 krishna]# aoe-version

aoetools: 29
installed aoe driver: 70
running aoe driver: 70

Выход команды aoe‑stat (пример):

[root@client1 krishna]# 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

После этого на клиенте станут видны экспортированные блочные устройства.

Создание RAID массива

Соберём зеркала и striped RAID поверх них.

Мирроринг e0.0 и e0.1:

[root@client1 krishna]# mdadm -C /dev/md0 -l 1 -n 2 /dev/etherd/e0.0 /dev/etherd/e0.1

Мирроринг e1.0 и e1.1:

[root@client1 krishna]# mdadm -C /dev/md1 -l 1 -n 2 /dev/etherd/e1.0 /dev/etherd/e1.1

Создадим striped (RAID0) поверх двух зеркал:

[root@client1 krishna]# mdadm -C /dev/md2 -l 0 -n 2 /dev/md0 /dev/md1

Проверка статуса:

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

Конвертация RAID md2 в LVM

Создаём физический том LVM и группу томов:

[root@client1 krishna]# pvcreate /dev/md2
[root@client1 krishna]# vgcreate volgrp /dev/md2
[root@client1 krishna]# pvs

PV VG Fmt Attr PSize PFree
/dev/md2 volgrp lvm2 a- 396.00M 396.00M
[root@client1 krishna]# vgs
VG #PV #LV #SN Attr VSize VFree
volgrp 1 0 0 wz{n- 396.00M 396.00M

Создаём логический том на всё доступное пространство:

[root@client1 aoedoc]# lvcreate -L 300M -n logicalvol volgrp
[root@client1 aoedoc]# lvs

LV VG Attr LSize
logicalvol volgrp -wi-a- 300.00M

Создаём файловую систему и монтируем:

[root@client1 aoedoc]# mkfs.ext3 /dev/volgrp/logicalvol
[root@client1 aoedoc]# mount -t ext3 /dev/volgrp/logicalvol /mnt/
[root@client1 aoedoc]# cd /mnt/
[root@client1 mnt]# mkdir aoe
[root@client1 mnt]# touch aoefile
[root@client1 mnt]# ls

aoe aoefile lost+found

Если нужно изменить размер тома или добавить диски — отмонтируйте том и используйте vgextend, lvextend и resize2fs (пример команд приведён ниже в разделе «Шаблон команд»).

Дополнительные разделы: рекомендации, отладка и готовые шаблоны

Частые ошибки и когда AoE не подходит

  • Сетевые среды с высокой потерей пакетов: AoE не имеет сложных механизмов восстановления на сетевом уровне, поэтому в ненадёжной сети возможны баги и падение производительности.
  • Смешанные MTU без корректной настройки jumbo frames: если MTU на пути разнится, пакеты фрагментируются — это негативно сказывается на пропускной способности.
  • Требования к мульти‑путь и HA: AoE не обеспечивает встроенную высокую доступность на уровне таргета — требуется дополнительная архитектура (кластерные файловые системы, репликация).

Альтернатива: iSCSI чаще используется в средах с поддержкой аутентификации/целостности и сложных схем SAN; для сетей на уровне L2 AoE прост и эффективен.

Краткая методология тестирования производительности (mini‑methodology)

  1. Подготовка: установить одинаковые версии утилит на клиенте и таргете.
  2. Настройка сетевого уровня: проверить MTU, выключить энергосбережение NIC и CPU C‑states для стабильных результатов.
  3. Прогрев: выполнить несколько проходов чтения/записи для прогрева кеша.
  4. Измерение: запускать fio/bonnie с контролируемыми параметрами и фиксировать конфигурацию (bs, rw, ioengine).
  5. Анализ: смотреть на латентность, IOPS, throughput; сравнивать поведение при малых и больших блоках.

Cheat sheet — полезные команды и шаблоны

  • Подключить модуль aoe и посмотреть устройства:
modprobe aoe
lsmod | grep aoe
aoe-discover
aoe-stat
ls -l /dev/etherd/
  • Собрать RAID и LVM:
mdadm -C /dev/md0 -l 1 -n 2 /dev/etherd/e0.0 /dev/etherd/e0.1
mdadm -C /dev/md1 -l 1 -n 2 /dev/etherd/e1.0 /dev/etherd/e1.1
mdadm -C /dev/md2 -l 0 -n 2 /dev/md0 /dev/md1
pvcreate /dev/md2
vgcreate volgrp /dev/md2
lvcreate -L 300M -n logicalvol volgrp
mkfs.ext3 /dev/volgrp/logicalvol
mount /dev/volgrp/logicalvol /mnt
  • Увеличить VG и LV (пример):
# Добавили новое устройство /dev/etherd/e2.0
pvcreate /dev/etherd/e2.0
vgextend volgrp /dev/etherd/e2.0
lvextend -L +100M /dev/volgrp/logicalvol
resize2fs /dev/volgrp/logicalvol
  • Диагностика сети и NIC:
ethtool -S eth0
ethtool -K eth0 tso off gso off gro off
ifconfig eth0 mtu 9000
ping -s 8972 

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

  • Клиент видит все ожидаемые /dev/etherd/eX.Y устройства после aoe‑discover.
  • mdstat показывает состояние RAID с флагом [UU] для зеркал.
  • Файловая система успешно монтируется, тестовые файлы можно читать/писать без ошибок.
  • Производительность соответствует ожидаемым уровням для целевой нагрузки (последовательное чтение/запись, IOPS).

Роль‑ориентированные чек‑листы

Администратор сети:

  • Проверил MTU и отключил агрегацию, конфликтующие offloads.
  • Убедился в маршрутизации L2 (AoE работает на канальном уровне).

Системный администратор сервера:

  • Установил и запустил vbladed или другой AoE‑таргет.
  • Настроил losetup для loop‑файлов (в тестовой среде).

Администратор хранения данных:

  • Настроил mdadm и LVM, создал FS и смонтировал.
  • Провёл базовые тесты записи/чтения и проверил целостность.

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

  • AoE работает на L2 и не имеет встроенной аутентификации; изолируйте SAN‑сеть физически или с помощью VLAN.
  • Ограничьте доступ к интерфейсу aoe с помощью правил на свитче или фильтрации по MAC/IP.
  • Регулярно делайте резервные копии данных, так как AoE не защищает от логических ошибок приложений.

Отладка и runbook инцидента (коротко)

Симптом: клиент теряет доступ к /dev/etherd/e0.0

  1. Проверить сеть: ifconfig, ethtool, посмотреть логи switche и прав доступа.
  2. На клиенте: dmesg | tail, lsmod | grep aoe, aoe‑stat.
  3. На таргете: проверить vbladed (процесс), losetup, доступность файла‑блока.
  4. Если устройство исчезло из mdstat, пометить RAID как degraded и восстановить после восстановления сети.

Decision flow (Mermaid)

flowchart TD
  A[Потеря доступа к AoE] --> B{Сеть в порядке?}
  B -- Да --> C{vbladed запущен?}
  B -- Нет --> D[Проверить MTU/кабели/порты]
  C -- Да --> E[Проверить драйвер на клиенте]
  C -- Нет --> F[Перезапустить vbladed]
  E --> G[aoe-discover; aoe-stat; dmesg]
  G --> H[Если проблема не найдена, собрать логи и эскалировать]

(Примечание: диаграмма — вспомогательная схема принятия решения для быстрого реагирования.)

Советы по масштабированию и эксплуатационной зрелости

Уровни зрелости (примерная модель):

  • Уровень 1 — Proof of Concept: loop‑файлы, ручной запуск vbladed, тестирование fio.
  • Уровень 2 — Тестовая среда: физические диски, автоматический запуск сервисов, резервирование конфигураций.
  • Уровень 3 — Производство: изоляция сети, мониторинг (SNMP/Prometheus), процессы бэкапа и восстановление, процедура обновлений.

Переход между уровнями требует автоматизации развёртывания, резервирования и описанных процедур отката.

Резюме

  • Настройка инициатора AoE проста: загрузите модуль, выполните aoe‑discover и смонтируйте /dev/etherd/*.
  • Для измерения производительности используйте fio и bonnie, обращая внимание на параметры bs, ioengine и direct.
  • AoE подходит для L2‑изолированных SAN, но требует сетевой дисциплины (MTU, стабильность). Для более критичных сценариев рассмотрите iSCSI или NVMe‑over‑Fabric.
  • В статье приведены команды, шаблоны и чек‑листы для быстрого развёртывания и отладки.

Ключевые действия:

  1. Установите aoetools и драйвер, убедитесь в видимости устройств.
  2. Соберите RAID и LVM по необходимости и создайте файловую систему.
  3. Протестируйте производительность и начните эксплуатацию только после прохождения критериев приёмки.

Важно: для продакшн‑окружения всегда проектируйте изоляцию сетевого уровня и процедуры резервного копирования.

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

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство