Часть I – ATA over
Ethernet (AoE)
Антон Борисов
Задача современных систем обработки информации – надежное хранение
данных. Сегодня мы поговорим о SAN (Storage Area Networks), а если быть точнее,
то о протоколах, которые обеспечивают их надежность и безопасность
обрабатываемых данных.
В крупных компаниях SAN соединяет многочисленные сервера к централизованному
пулу дисков хранения. По сравнению с администрированием сотни серверов,
где каждый из них имеет собственное дисковое хранилище, сети SAN упрощают
эксплуатацию и обслуживание. Однако есть недостаток в использовании SAN –
каждое устройство (дисковый массив) «принадлежит» серверу, который инициировал
соединение. В отличие от SAN этого недостатка нет у NAS (Network Attached Storage),
где доступ от многих серверов к одному файлу не блокируется и информация
от такого взаимодействия не теряется. Впрочем, превратить SAN в NAS просто
– следует использовать кластерные файловые системы – GFS (Global File System)
[2], OCFS2 (Oracle Cluster File System) [3] и аналогичные.
На каких технологиях строятся современные
SAN-сети? Широкоизвестным видом является FiberChannel (оптический канал
передачи данных). Название FiberChannel не должно вас пугать – этот тип
соединения может быть реализован и на основе витой пары (см. Wikipedia [1]).
Типичная сеть состоит из нескольких оптических коммутаторов, которые соединены
между собой и посредством HBA (Host Bus Adapter) подключены к дискам. Передача
данных основана на протоколе SCSI. Не стоит говорить, что это самое дорогое
решение.
Конкурентом технологии FiberChannel является
iSCSI-протокол. Передача данных в этом случае производится не по оптическим
каналам, а по витой паре (ethernet). Сеть в данном случае представлена ethernet-коммутатороми
и UTP-кабелями категории 5e/6. Работа протокола iSCSI полагается на
функционирование TCP/IP-протокола.
Следующим протоколом, который используется при
разработке SAN-сетей, является AoE (ATA over Ethernet). ATA-протокол
инкапсулируется в ethernet-кадры и в отличие от iSCSI не предусмотрен для
маршрутизации. Однако AoE обладает интересной реализацией обнаружения
AoE-устройств.
Наиболее перспективной и проработанной
технологией можно считать протокол HyperSCSI, который в некоторой степени похож
на iSCSI, но не использует TCP/IP в качестве своей основы. В заключительной
части этого цикла статей я приведу результаты измерения скоростных
характеристик, а сейчас немного вас заинтригую – как оказалось, AoE не самый
быстрый протокол.
Сегодняшняя статья посвящена, пожалуй, самому
молодому и амбициозно продвигаемому протоколу – AoE (ATA over Ethernet).
Впервые о нем широко заговорили в 2004 году. Компания – разработчик протокола и
на сегодняшний день единственный производитель устройств хранения информации,
работающих с этим протоколом – Coraid Inc. [4]. Коротко охарактеризовать данный
протокол можно фразой – «ATA-команды инкапсулируются в ethernet-кадры».
Протокол уже получил свой номер в организации IANA, поэтому включение его
поддержки в маршрутизаторы – дело ближайшего времени. Хотя было бы наивно
думать, что сам по себе протокол будет поддержан всеми производителями
коммуникационного оборудования. Впрочем, немало зависит и от настойчивости
самой фирмы Coraid.
Краткий экскурс в основу
протокола AoE
Рассмотрим заголовок ethernet-пакета для протокола AoE (см. рис. 1). Первые
14 байт в заголовке типичны для ethernet-пакета. Что же касается полей Ver, Flags,
Error, то они детально расписаны в документации на протокол AoE [5].

Рисунок 1. Заголовок
ethernet-пакета для протокола AoE
Содержимое поля Arg зависит от того, какую
команду передали в поле Command. Существует два варианта – «Выполнить
ATA-команду» (Command 0) и «Запросить конфигурационную информацию» (Command 1).
Первая команда передается на сторону сервера, и ATA-устройство сервера
исполняет ATA-команды, которые скомпонованы в блоке Arg. Ethernet-пакет для
протокола AoE запрещается разбивать на более мелкие фрагменты. Вторая команда
предназначена для обнаружения и управления AoE-устройствами. Вот такой простой
протокол получился.
Итак, на данный момент доступны GPL-драйвера для Linux
2.4, 2.6. В пакет ПО входят как модули (aoe-2.4.XX/aoe2.6.YY), так и утилиты (aoetools)
с виртуальным наносервером (vblade). С января этого года AoE-драйверы включены
в поставку Linux-ядер версии 2.6. Поэтому, в случае когда вы пересобираете
Linux-ядро версии 2.6, можете смело выбрать компиляцию AoE – подсистемы. Также
на сегодняшний день готовы порты для BSD-систем. В планах компании стоит выпуск
драйверов и под Windows-платформу. Что касается остальных UNIX-систем, то для
них готовых драйверов нет, по крайней мере сейчас.
Настройка модулей
Ядро дистрибутива, на котором будут проводиться сегодняшние испытания, – это
Linux Kernel серии 2.4.
# wget aoe-2.4-3.tar.gz
# tar xzvf aoe-2.4-3.tar.gz
# cd aoe-2.4-3
# make && make install
Примерный вывод должен быть таким:
Found kernel version
2.4.26
Install directory
is /lib/modules/2.4.26/kernel/net/aoe
mkdir -p /lib/modules/2.4.26/kernel/net/aoe
install -m 644 aoe.o
/lib/modules/2.4.26/kernel/net/aoe
./mkdevs /dev/etherd
Directory /dev/etherd
exists, skipping devnode installation.
./autoload
/sbin/depmod -a
Подготовка AoE-модулей завершена. В /etc/modules.conf
прописаны параметры для устройств на основе AoE-протокола и созданы файлы
устройств в директории /dev/etherd/.
alias block-major-152 aoe
alias char-major-152 aoe
Следующий наш шаг – это подготовка виртуального наносервера
(vblade). Дело в том, что Coraid Inc., помимо раздачи под GPL-лицензией
драйверов для AoE, является и единственным производителем устройств хранения
информации EtherBlade, которые пока представлены только на рынке США и
сопредельных государств. Однако, судя по информации с сайта компании, идет
процесс создания дистрибьюторской сети.
Что из себя представляет EtherBlade?
EtherBlade сегодня представлен двумя продуктами – это шасси размеров 3U и
2U. В первом варианте «лезвия» хранятся 10 жестких дисков формата 3,5 дюйма. Во
втором варианте уже используются 18 жестких дисков меньшего формата, а именно
2,5 дюйма. Если в самом начале карьеры EtherBlade использовались PATA-диски, то
сегодня выпускаются модификации для SATA-дисков. Внутри отдельного лезвия
находится контроллер памяти, процессор, ethernet-порт (см. рис. 2). Каждое
такое лезвие потребляет около 12 Ватт, и гигабайт его стоимости начинается от
1,75 $. Для более тонкого варианта EtherBlade данные соответственно следующие:
5,5 Вт и 7,06 $. Лезвия подключаются во внешний 1-гигабитный свитч, который в
свою очередь может быть подключен в более скоростной 10-гигабитный. Таким образом
достигается масштабирование данного решения.

Рисунок 2. Структура
единичного «лезвия»

Рисунок 3. EtherBlade
Чтобы не ждать поставки аппаратного «лезвия»,
можно воспользоваться его виртуальным аналогом – программным vblade.
Настройка наносервера vblade.
# wget vblade-5.tar.gz
# tar xzvf vblade-5.tar.gz
# cd vblade-5.tar.gz
# make && make install
Получились 2 исполняемых файла – vblade и vbladed.
Последний является обычным скриптом, который запускает vblade. Его конструкция
напоминает нижеследующий вариант (параметры изменены):
# vblade 9 0 eth0 /dev/hda
где «9» – номер шасси, «0» – номер слота (диска или лезвия), «eth0» –
название интерфейса, по которому будет происходить обмен данными и «/dev/hda» –
собственно устройство, которое в формате «AoE» делается доступным по ethernet.
С другой машины, запустив там предварительно
процесс инсталляции драйвера AoE, мы увидим в /var/log/messages следующее:
aoe: aoe_init: AoE
v2.4-3 initialised.
aoe:
000c6e784408 e9.0 v4000 has 80418240 sectors
То есть устройство распознано драйвером AoE.
Здорово. Теперь запустив fdisk, мы увидим, что на нем находится:
# fdisk /dev/etherd/e9.0
Command (m for help):
p
Disk /dev/etherd/e9.0:
41.1 GB, 41174138880 bytes
255 heads, 63 sectors/track,
5005 cylinders
Units = cylinders
of 16065 * 512 = 8225280 bytes
Device
Boot Start End Blocks Id System
/dev/etherd/e9.0p1
* 1 924 7421998+ b W95 FAT32
/dev/etherd/e9.0p2
925 1217 2353491 7 HPFS/NTFS
/dev/etherd/e9.0p3
1218 1439 1783183+ c W95 FAT32 (LBA)
/dev/etherd/e9.0p4
2493 4865 19061122+ f W95 Ext'd (LBA)
/dev/etherd/e9.0p5
2493 4865 19061091 b W95 FAT32
Все так и обстоит на самом деле – это
действительно структура удаленного хранилища, в нашем случае ATA-диска. Для
получения статистики воспользуемся утилитой aoe-stat из пакета aoetools.
# /usr/sbin/aoe-stat
aoe-stat Error:
sysfs is not mounted
И это правильно, т.к. sysfs разработан в ядрах
серии 2.6. Однако данный факт не помешает нам вручную узнать состояние наносервера.
# cat /dev/etherd/stat
/dev/etherd/e9.0
eth0 up
Досадной мелочью (по крайней мере в драйверах
2.4) является невозможность использовать отдельные разделы в случае, когда наносервер
предоставляет для целей хранения весь диск. Чтобы обойти это ограничение,
создадим один раздел занимающий весь объем диска. Командная строка для vblade
будет выглядеть, например, так:
# vblade 9 0 eth0 /dev/hda1
В этом случае монтирование «лезвия» на удаленной
машине не отличается от монтирования локального диска.
# mount /dev/etherd/e9.0 /mnt/tmp
У данного решения есть и минусы. За счет простоты
реализации протокола увеличивается нагрузка на подсистему ввода/вывода. Не
проработана система шифрования трафика, передаваемого по сети. Как уже
отмечалось выше, на рынке представлены только аппаратные продукты одной
компании.
В следующей части мы познакомимся с протоколом iSCSI,
узнаем, что такое «инициатор» и «iSCSI-target», попробуем подключить Windows- и
Linux-клиенты к серверу с хранилищем данных по iSCSI-протоколу.
Приложенеи
SAN (Storage Area Network) – сеть, спроектированная для подключения устройств
хранения (дисковых массивов и магнитных лент) к серверам. Характерно,
что SAN отличается от других способов сетевого хранения информации за счет
использования методики блочного доступа. Фактически сервер запрашивает
информацию типа «блок X с диска Y». Передаваемая информация в SAN-сетях
очень похожа на ту, что циркулирует по шине данных в дисках ATA и SCSI.
Ссылки:
1. http://wikipedia.org.
2. http://www.redhat.com/software/rha/gfs.
3. http://oss.oracle.com/projects/ocfs2.
4. http://www.coraid.com.
5. http://www.coraid.com/documents/AoEr8.txt.