Рано или поздно, в домашних условиях, в небольшой или крупной фирме, возникает необходимость увеличения дискового пространства. Самый простой способ – поменять (или добавить) винчестеры, но это далеко не всегда возможно. Тогда на ум сразу же приходит мысль об iSCSI. Данный протокол базируется на TCP/IP и разработан для установления взаимодействия между различными устройствами хранения данных и управления ими. Он стандартизован по RFC 3720, имеется множество его реализаций, как свободных так и платных, в том числе есть готовые драйверы от Майкрософт. iSCSI достаточно сложный протокол, включая спецификации по шифрованию, маршрутизации и другим вопросам. Но и реализация данного протокола может оказаться достаточно дорогой (обычно его реализуют для стойки из трех компонентов, два из них это процессорные модули, а один собственно модуль iSCSI, не считая UPS, сетевых и других компонентов).
Некоторые также хотят еще получить возможность удаленного сохранения данных (или возможность быстро их унести) при этом, зачастую, к сохранности не предъявляются особые требования (достаточно резервного копирования).
В этом случае лучше всего подходит доступ к данным по протоколам FTP или SMB. При чем SMB реализуется очень просто и поддерживается всеми ОС Windows изначально. Но эти протоколы не всегда подходят, иногда нужно иметь именно «жесткий диск», например не все программы могут устанавливаться на сетевой путь (и практически ни одна по FTP), не все программы могут работать с данными на сетевых ресурсах (взять тот же MS SQL сервер). Но покупать новый сервер или iSCSI не представляется выгодным и возможным. Тем более, что несмотря на большой объем данных использоваться он может не очень активно. И тогда можно вспомнить о протоколе AoE: ATA over Ethernet. Данный протокол очень прост (размер документации всего 8 страниц). Данный протокол работает поверх Ethernet, и в общем случае не требует протоколов TCP/IP. Ввиду простоты он обеспечивает неплохое быстродействие и низкую стоимость. Есть у него и недостатки. Это в первую очередь отсутствие механизмов обеспечения безопасности, так как ATA протокол инкапсулируется в Ethernet кадры. По этой же причине невозможна маршрутизация (то есть AoE может работать только в пределах одной локальной сети). Нет в AoE никакой проверки на ошибки (и тем более восстановления), кроме той что есть в самом протоколе Ethernet. Ну и ввиду особенностей реализации нельзя разбивать Ethernet кадры (что для локальной сети практически всегда выполняется).
Из особенностей протокола, вытекает как лучше его использовать. Для сервера (или группы серверов) лучше иметь выделенную сеть Ethernet с отдельной сетевой картой, со скоростью не менее 1 Гбит. Сервер будет играть роль клиента протокола AoE и очень удобно использовать под виртуальной машиной. В эту же сеть будет включаться устройство, изображающее сервер AoE, на котором будет находиться дисковый массив. В общем случае этот массив вида RAID5 или RAID10 (так же часто делают и для iSCSI, только скорость выбирают не менее 10 Гбит). С этого дискового массива «виртуальные» «жесткие диски» будут монтироваться на сервере.
Рассмотрим реальный пример подобного применения. В качестве сервера будем использовать Windows Server 2003 x64 (можно и 2008 и х32). В качестве дискового массива выберем D-Link DNS-323, представляющий собой сетевой дисковый массив с 2 отсеками для жестких дисков SATA максимальной емкости 750 Гб каждый. Жесткие диски можно объединить в RAID 0, RAID 1 или оставить отдельными. Тут можно дать следующие рекомендации: если Вам очень важна сохранность данных, и при этом монтируемые «жесткие диски» не нужны большого размера (менее 300 Гб), то нужно инициализировать и отформатировать винчестеры под RAID1. Если Вам нужен один диск, соразмерный с размером винчестера (и возможно несколько маленьких), то используйте жесткие диски по отдельности. Если Вы заранее не знаете размеры будущих монтируемых «жестких дисков» и важен быстрый доступ, используйте RAID0.
Для начала настроим DNS-323. Во-первых, следуя инструкции нужно обновиться до последней версии (на данный момент это версия 1.5). Следует обратить внимание, что если до этого стояла версия менее чем 1.4, то винчестеры нужно переформатировать и переинициализировать в обязательном порядке. После этого нужно, используя интерфейс управления, отключить все неиспользуемые службы (например, ftp сервер). Так как в стандартной прошивке отсутствует поддержка AoE, нужно ее немного «модернизировать». К этому моменту нужно окончательно определиться с распределением места и отформатировать винчестеры в выбранном режиме. Чтобы определиться выбираем RAID0, и форматируем винчестеры в этом режиме.
Приступаем к модернизации. Для этого установим FUN-PLUG 0.5, скопируйте два файла fun_plug и fun_plug.tgz на диск Volume1 DNS-323 и затем его перегрузите. Подождите 3 минуты, после чего зайдите на DNS-323 с помощью telnet. Для этого лучше всего использовать утилиту putty, но можно просто из командной строки Windows XP или Vista (для последней нужно через установку и добавление компонентов ОС добавить клиент telnet).
Следующий этап: установка optware. Войдя по telnet, выполните следующие команды:
cd /mnt/HD_a2/
mkdir ipkg
cd ipkg
wget http://ipkg.nslu2-linux.org/feeds/optware/dns323/cross/unstable/ipkg-opt_0.99.163-10_arm.ipk
tar -xzf ipkg-opt_0.99.163-10_arm.ipk
tar -xzf data.tar.gz
mkdir -p /opt
mount --bind /mnt/HD_a2/ipkg/opt /opt
export PATH=/opt/bin:/opt/sbin:$PATH
echo src dns323 http://ipkg.nslu2-linux.org/feeds/optware/dns323/cross/unstable >> /opt/etc/ipkg.conf
ipkg update
ipkg install nano
nano /ffp/start/optware.sh
затем в открывшееся «окошко» вствьте текст:
mkdir -p /opt
mount --bind /mnt/HD_a2/ipkg/opt /opt
export PATH=/opt/bin:/opt/sbin:$PATH
for i in /opt/etc/init.d/S??* ;do
[ ! -f "$i" ] && continue
case "$i" in
*.sh)
(
trap - INT QUIT TSTP
set start
. $i
)
;;
*)
$i start
;;
esac
done
Нажмите Ctrl+X , затем Y и Enter. Тем самым был создан файл nano /ffp/start/optware.sh.
Затем выполните:
chmod a+x /ffp/start/optware.sh ipkg install vblade nano /ffp/start/vbladed.sh
Предпоследней командой устанавливаем пакет vblade, который собственно и является сервером AoE. Последней командой редактируем скрипт автоматической раздачи дисков нашего сервера AoE.
Введите:
# /mnt/HD_a2/ipkg/opt/sbin/vblade 1 1 egiga0 /mnt/HD_a2/DISKS/disk11.fs &
Сохраните файл: (нажмите Ctrl+X , затем Y и Enter)
И введите команду
chmod a+x /ffp/start/vbladed.sh
На этом этапе установка сервера AoE (а именно vblade окончена). Теперь нужно настроить какие именно диски будут передаваться по протоколу AoE. Для этого рассмотрим синтаксис команды vblade: vblade [ -m mac[,mac...] ] shelf slot netif filename, где:
mac – это локальный MAC адрес, так как сетевая карта у DNS-323 одна, параметр для нас не актуален;
shelf и slot – номера от 0 до 254 (может быть и больше, но лучше не использовать), эта пара номеров должна быть уникальна в данной локальной сети, именно по ней и будет в дальнейшем монтироваться диск;
netif – сетевой интерфейс, для DNS-323 это значение всегда egiga0;
filename – указатель на файл, содержащее устройство жесткого диска. Тут можно передать непосредственно весь жесткий диск целиком. Так как мы инициализировали дисковый массив как RAID0, то неразумно отдавать весь диск целиком. Для этого создадим «виртуальный» файл – винчестер.
Создадим на нашем массиве каталог DISKS в котором и будут лежать данные файлы и создадим файл disk11.fs:
mkdir /mnt/HD_a2/DISKS
dd if=/dev/zero of=/mnt/HD_a2/DISKS/disk11.fs bs=10240 count=1048576
данная команда dd создает файл, размером с 10485760 блоков по 10240 байт, то есть 100 Гб. Размер блока для DNS-323 лучше не выбирать больше 102400 байт, исходя из этого выбираем первую цифру.
Теперь подробнее рассмотрим файл /ffp/start/vbladed.sh. Этот файл будет выполняться при каждой перезагрузке DND-323. В нашем случае он содержит всего одну строчку. Отредактируем ее, выполнив команду:
nano /ffp/start/vbladed.sh
Строчка начинается с символа
# который комментирует строчку. Далее содержится команда инициализации «диска» в виде файла /mnt/HD_a2/DISKS/disk11.fs, который мы только что создали и присваивает ему номера 1 и 1. Сохраним файл.
Чтобы проверить как это будет работать выполним команду:
vblade 1 1 egiga0 /mnt/HD_a2/DISKS/disk11.fs
в результате должны увидеть сообщение вида:
pid 1615: e1.1, 209715200 sectors O_RDWR,
где первая цифра – это номер процесса в памяти (можно увидеть командой ps), e1.1 – это версия нашего диска исходя из тех номеров, что выполнялись в команде (в нашем случае 1 и 1), последняя цифра – это колличество «виртуальных» секторов и оканчивается режимом доступа к диску (в данном случае чтение и запись, если бы таким образом вывести CD-ROM, то доступ был бы только чтение).
Итак, настройку сервера AoE (дискового массива закончили), приступим к клиенту в виде Windows Server 2003 Enterprise Edition x64. Стандартных драйверов AoE Microsoft не предусмотрела. Поэтому качаем свободный драйвер WinAoE. Скачав последнюю версию, на сегодня это файл winaoe-0.97g.zip, распаковав его, стандартным способом устанавливаем новое оборудование, указав что драйвер нужно брать из папки, в которую распаковали драйвер. Перегружаем систему. Проверяем, для этого запустим командную строку (Пуск – Выполнить – ввести cmd, нажать кнопку «Выполнить»). В командной строке введем команду:
aoe scan
Увидим результат типа:
Client NIC Target Server MAC Size
00:04:33:a4:46:57 e1.1 00:18:4b:bc:4d:b1 102400M
То есть диск доступен. Подключим его:
aoe mount 00:04:33:a4:46:57 1 1
Обратите внимание, вводить нужно MAC адрес клиента (своего компьютера), а не сервера, но интерфейса который подключен к DNS-323, а номера соответствую номерам в e1.1. После подключения диск доступен в системе, но не забывайте – при первом подключении он не форматирован и система «не знает», какую букву использовать. Чтобы отформатировать диск через панель «Администрирование» запустим оснастку «Управление компьютером». В ней выберем пункт «Управление дисками». Выбрав нужный диск, используя правую кнопку мыши нужно выбрать пункт «Инициализировать», в результате «виртуальный» винчестер будет проинициализирован как диск MBR. Я рекомендую переинициализировать диск как GPT диск (после форматирования это будет невозможно), так как GPT диск в данном применении более надежен. В дальнейшем можно будет преобразовать диск в динамический и создать из нескольких дисков RAID массив. Теперь диск можно отформатировать (лучше всего использовать основной NTFS раздел) и присвоить букву.
Для того, чтобы диск автоматически монтировался при каждом запуске операционной системы создадим файл: C:\WINDOWS\system32\aoed.cmd следующего содержания:
echo | aoe mount 00:04:33:a4:46:57 1 1
исправив MAC адрес на необходимый. Этот файл может содержать необходимое колличество строк с монтированием нужных дисков (комбинация MAC адрес клиента и обе цифры должны быть уникальны, иначе смонтируются одинаковые диски, что может привести к нестабильной работе операционной системы). После чего добавить выполнение этого файла при каждой загрузке операционной системы любым способом (лучше всего добавив строковый параметр «aoed» в [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] с содержимым: «C:\\WINDOWS\\system32\\aoed.cmd».
Все. Установка закончена. Что дальше? Следует учесть, что в случае, если подмонтированный диск по AoE использует какое-либо важное приложение, то в случае разрыва соединения может возникнуть «синий экран» с ошибкой драйвера. В общем это внештатная ситуация, так как желательно использовать отдельную сетевую карту в 1Гбит, единый UPS для сервера и накопителя. В случае, если нужно повысить надежность, можно поставить второй накопитель типа DNS-323, создать на нем диск такого же объема и смонтировать оба диска как один динамический диск с зеркалированием. В дальнейшем, можно приобрести устройство EtherBlade, которое представляет готовое высоконадежное устройство, аппаратно выполняющее функции vblade. Ради эксперимента на базе DNS-323 и сервера Windows Server 2003, работающего под виртуальной машиной был поднят сервер WSUS, спокойно обслуживающий 50 машин. На таком диске может спокойно храниться базы данных Microsoft SQL Server, в том числе для 1С. Следует иметь ввиду, несмотря на простоту протокола, DNS-323 имеет всего 32 Мб памяти. Но далеко не все приложения следует запускать из под AoE диска, на том же DNS-323 (или любом подобном устройстве) можно поднять полноценный SAMBA сервер, который по протоколу SMB вполне может работать полноценно в том числе в домене, или полноценный ftp сервер, но чем больше служб поднять, тем больше памяти из доступных 32 Мб будет использовано маломощным процессором Marvell 88F5181 500 Mhz. Хотя никто не мешает поднять vblade сервер на любом компьютере под управлением Linux (желательно с версией ядра от 2.6).
Какие есть альтернативы AoE. В первую очередь, это уже упомянутый iSCSI, также следует упомянуть следующие протоколы: FiberChannel, HyperSCSI, FICON, FCoE.
О сайте

[...] реализации я попробовал рассмотреть в небольшой статье тут. Как обычно жду Ваших замечаний и предложений. [...]
очень интересная статейка! Автору пять. Сразу к пожеланиям: автор писал «на том же DNS-323… можно поднять полноценный SAMBA сервер,…или полноценный ftp сервер»
Хотелось бу увидеть такиеже подробные статейки
По поводу самбы и ftp они по сути есть на DNS-323 WiKi. Может только слишком технические да на английском … подумаю. Просто D-Link не одна подобные устройства делает, и есть, например DNS-343, который попроизводительнее будет чуть чуть …
Спасибо за отзыв, над предложением подумаю.
Автору респект. классная статейка, главное понятная. ждем статейки по самбе на DNS-323…
Обнаружены ошибки форматирования текста, в частности перед bind некоторые браузеры отображают одно тире вместо двух. Поправлено. В результате пока убрано цветное выделение, будет поправлено позже. пока убраны все ссылки внутри статьи.
Замечание: перед командой «ipkg update» нужно выполнить команду: «echo src dns323 http://ipkg.nslu2-linux.org/feeds/optware/dns323/cross/unstable >> /opt/etc/ipkg.conf»
Постоянно возникали проблемы с WinAoE – дрова глючные, скорость работы очень низкая. Планировал даже отказаться, но в процессе переноса данных с DNS возникла проблема с драйверами для windows 7.
Установил вместо WinAoE программу StarPort от StarWind Software – скорость доступа выросла на порядок, глюки изчезли.
Ps. Программа freeware.
————–
WBRGDS, Viveda
Недольшое уточнение. В DNS-323 можно использовать диски до 1.5Тб включительно
Команду
chmod a+x /ffp/start/optware.sh ipkg install vblade nano /ffp/start/vbladed.sh
нужно разделить на 3 разных:
chmod a+x /ffp/start/optware.sh
ipkg install vblade
nano /ffp/start/vbladed.sh
В том виде у меня не отрабатывало…