АНТОН БОРИСОВ
Протоколы сетей хранения данных
Часть 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
Досадной мелочью (по крайней мере в драйверах 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.
Ссылки:
- http://wikipedia.org.
- http://www.redhat.com/software/rha/gfs.
- http://oss.oracle.com/projects/ocfs2.
- http://www.coraid.com.
- http://www.coraid.com/documents/AoEr8.txt.