igor@0: \section{ATA over Ethernet} igor@0: igor@0: Описываемая технология построения хранилищ даёт возможность строить дисковые массивы igor@0: для архивов, резервных копий или традиционного использования igor@0: на базе обычных дисков ATA, которые дешевле даже чем лента. igor@0: Эта технология может оказаться особенно интересной для тех, igor@0: кто использует виртуализированные системы на базе Xen. igor@0: igor@0: Технология является альтернативой для iSCSI, но с более узким igor@0: спектром задач, где она может использоваться. Подробнее об этом ниже, igor@0: в разделе \textit{\dq{}Преимущества и недостатки AoE\dq{}}. igor@0: igor@0: \subsection{Введение} igor@0: Данные некоторых видов огромны просто в силу своей природы. igor@0: Видео, например, как правило занимает большой объём диска. igor@0: В связи с широким распространением видеонаблюдения igor@0: потребность в хранении видео-данных становится ещё более актуальной. igor@0: igor@0: Резервное копирование и избыточность данных igor@0: имеет существенное значение для любого дела, igor@0: в котором используются компьютеры. igor@0: Похоже, не важно, какой объём хранилища -- всегда хочется иметь больше. igor@0: Даже почта может вырасти за пределы контейнера, в котором она лежит. igor@0: Это хорошо известно провайдерам Интернет-услуг. igor@0: igor@0: Хранилище неограниченного размера вполне имеет право на существование, igor@0: если сделать так, чтобы диски можно было вынести за предел корпуса igor@0: и отвязать хранилище от компьютера, которые его использует. igor@0: Принцип развязки связанных компонент с целью достижения большей гибкости igor@0: хорошо показал себя во множестве различных областей, igor@0: не только при построении хранилищ. igor@0: Модульный код обладает гибкостью, которая позволяет igor@0: применять его в непредвиденных ситуациях или igor@0: стерео-система, сделанная из компонентов, igor@0: может использоваться в различных интересных конфигурациях, igor@0: а не только как аудио-комбайн. igor@0: igor@0: Наиболее известный пример хранилищ, работающих из коробки это, наверное, SAN (storage area network). igor@0: Когда SAN\rq{}ы только появились вокруг них был большой шум и переполох. igor@0: Сложно было выяснить, что же это в действительности такое. igor@0: А когда в итоге это всё-таки получилось, выяснилось что это нечто igor@0: сложное, проприетарное и дорогое. igor@0: igor@0: Однако, поддерживая SAN\rq{}ы Linux-сообщество сделало несколько полезных изменений в ядре. igor@0: Сегодня в ядрах Linux есть возможности, которых ещё несколько лет назад очень не хватало. igor@0: Они могут использоваться как гигантские блочные устройства, выходящие далеко igor@0: за старые пределы в два терабайта (именно терабайта! подробности, например, в \url{http://lkml.org/lkml/2002/5/9/217} и \url{http://kerneltrap.org/node/186}). Они поддерживают намного больше igor@0: одновременно подключённых дисков. Также появились богатые возможности управления томами. igor@0: В дополнение ко всему прочему, файловые системы могут теперь расширяться до огромных размеров, igor@0: даже когда они смонтированы и используются. igor@0: igor@0: Здесь рассматриваются новые пути использования эти возможности ядра: igor@0: диски выносятся из компьютера старые пределы ёмкости преодолеваются. igor@0: Можно воспринимать ATA over Ethernet как способ заменить IDE-кабель igor@0: сетью Ethernet. Когда хранилище и компьютер развязаны и между ними стоит такая гибкая вещь igor@0: как Ethernet, возможности ограничены только воображением и желанием изучать новые вещи. igor@0: igor@0: \subsection{Что такое AoE} igor@0: ATA over Ethernet (AoE) — это сетевой протокол, зарегистрированный IEEE как Ethernet-протокол igor@0: номер 0x88a2. AoE это низкоуровневый протокол, намного более простой чем TCP/IP или даже просто IP. igor@0: TCP/IP и IP нужны обязательно, если требуется организовать (надёжную) передачу данных через Интернет, igor@0: но на компьютер в этом случае ложится намного большая нагрузка, для того чтобы igor@0: обеспечить ту сложность, которая присуща этим протоколам. igor@0: igor@0: Особенно хорошо это известно пользователям iSCSI. igor@0: iSCSI позволяет перенаправить ввод/вывод поверх TCP/IP, igor@0: что в свою очередь даёт возможность заменить дорогое оборудование Fibre Channel на значительно igor@0: более дешёвое Ethernet и IP. igor@0: Зачастую iSCSI используется совместно с устройствами для разгрузки TCP (TCP offload engines, TOE). igor@0: Эти устройства довольно дорогие, но они снимают часть нагрузки TCP/IP igor@0: с центрального процессора машин, использующих iSCSI. igor@0: igor@0: Интересно, что в большинстве своём iSCSI не используется поверх собственно сети Интернет. igor@0: Чаще всего пакеты просто передаются на машину, стоящую в соседней серверной стойке, igor@0: и в этом случае вся мощь TCP/IP оказывается просто избыточной. igor@0: igor@0: Резонный вопрос, почему бы вместо того что разгружать TCP/IP вообще от него не избавиться? igor@0: Протокол AoE именно это и делает. igor@0: И вместо того чтобы полагаться на TCP/IP, он полагается на возможности современных коммутаторов, igor@0: у которых не бывает коллизий, есть возможность управления потоком и igor@0: постоянно растёт производительность. igor@0: В локальной сети сохраняется последовательность пакетов igor@0: и для каждого пакеты сетевым оборудованием вычисляется контрольная сумма. igor@0: igor@0: В каждом AoE пакете находится команда для ATA-диска или ответ от ATA-диска. igor@0: Драйвер AoE в ядре Linux выполняется AoE и делает диск доступным как обычное igor@0: блочное устройство, такое, например, как \texttt{/dev/etherd/e0.0} -- точно также igor@0: как IDE-драйвер делает диск, подключённый к концу IDE-кабеля, доступным как \texttt{/dev/hda}. igor@0: Драйвер, если нужно, ретранслирует пакеты, так что AoE-устройство выглядит для остального ядра как обычный диск. igor@0: igor@0: В дополнение к ATA командам, у AoE есть простая возможность идентификации igor@0: доступных устройств с помощью конфигурационных опросных пакетов (query config packets). igor@0: Это всё: ATA команды и конфигурационных опросные пакеты. igor@0: igor@0: Возникает вопрос: igor@0: если все диски находятся в сети, тогда как я могу ограничить доступ к дискам? igor@0: Как можно быть уверенным что, даже если машину А взломали, что диски машины B в безопасности? igor@0: igor@0: Ответ в том, что AoE немаршрутизируемый протокол. Можно легко определить какой компьютер igor@0: будет видеть какие диски путём конфигурирования Ethernet-сети. igor@0: Поскольку AoE-устройствам не нужны IP-адреса, создать изолированные igor@0: Ethernet-сети несложно. igor@0: Большинство современных коммутаторов имеют возможность организации igor@0: VLAN\rq{}ов, что позволяет легко разделить коммутатор на несколько широковещательных доменов. igor@0: igor@0: Протокол AoE настолько легковесный, что его может использовать даже самое недорогое железо igor@0: (существует как минимум один производитель оборудования, поддерживаеющего ATA over Ethernet — Coraid). igor@0: Описание спецификаций AoE помещается на 8 страниц. Простота протокола выглядит контрастно igor@0: по отношению к iSCSI, который описывается на сотнях страниц, igor@0: включая спецификации по шифрованию, маршрутизации, контролю доступа igor@0: и множеству других вопросов. igor@0: igor@0: Простые примитивы могут быть очень мощными. igor@0: igor@0: \subsection{Стэн-архиватор} igor@0: Эта история основана на реальных событиях, случившихся с гражданином igor@0: одного другого государства. igor@0: igor@0: Стэн — вымышленный админ, работающий на государственной службе. igor@0: В соответствии с новым государственным законом той страны все официальные igor@0: документы должны архивироваться. Любой гражданин государства igor@0: может потребовать показать любой документ в любое время. igor@0: Из-за этого Стэну понадобилось огромное хранилище, которое может расти igor@0: без всяких ограничений. Производительность хранилища может не быть igor@0: больше производительности локального диска. Любые данные из хранилища igor@0: должны доставаться легко и мгновенно. igor@0: igor@0: Стэн уверенно чувствует себя в системном администрировании Linux и Ethernet сетях, igor@0: и из-за этого он решает попробовать для своей задачи ATA over Ethernet. igor@0: Он покупает кое-какое оборудование, потратив на это меньше \$6.5K: igor@0: \begin{itemize} igor@0: \item Одна двухпортовая гигабитная Ethernet-карта, вместо старой 100-мегабитной карты. igor@0: \item Один 26-портовый коммутатор с двумя гигабитными портами. igor@0: \item Одну полку Coraid EtherDrive и десять блэйдов EtherDrive. igor@0: \item Десять 400GB ATA жестких дисков. igor@0: \end{itemize} igor@0: igor@0: Оборудование может быть объединеное в программный RAID-10 — чередование поверх зеркалированных пар. igor@0: Хотя этак конфигурация не даёт столько ёмкости как конфигурация RAID 5, igor@0: она максимизирует отказоустойчивость, надёжность, снижает нагрузку igor@0: на процессор и время реинициализации диска при замене. igor@0: igor@0: Имеет смысл поверх AoE-дисков использовать igor@0: LVM и файловые системы с возможностью online-расширения, такие например, igor@0: как ext3, XFS или JFS. igor@0: Это даст возможность в дальнейшем, при необходимости купить новую заполненную igor@0: полку, создать ещё один RAID 10, превратить его в физический том, igor@0: и использовать этот том для расширения igor@0: объёма логических томов с файловыми системами. igor@0: igor@0: Для старых систем нужно скомпилировать драйвер igor@0: AoE с AOE\_PARTITIONS=1 (в частности, sarge не поддерживал большие минорные номера), igor@0: поэтому он выключает поддержку разделов, для того чтобы использовать побольше дисков. igor@0: igor@0: \begin{verbatim} igor@0: %# # Настройка хоста для работы с AOE igor@0: igor@0: %# # Сборка и инсталляция драйвера aoe igor@0: %# tar xvfz aoe-2.6-5.tar.gz igor@0: %# cd aoe-2.6-5 igor@0: %# make AOE_PARTITIONS=1 install igor@0: igor@0: %# # Настройка сети igor@0: %# # Для AoE IP-адрес не нужен igor@0: %# ifconfig eth1 up igor@0: igor@0: %# # Чтобы быть уверенным что интерфейс успел подняться, нужно подождать какое-то время igor@0: %# # И после этого загрузить драйвер aoe igor@0: %# sleep 5 igor@0: %# modprobe aoe igor@0: igor@0: %# # Теперь можно посмотреть какие AoE-устройства есть в сети igor@0: %# aoe-stat igor@0: \end{verbatim} igor@0: igor@0: \subsection{Минорные номера устройств} igor@0: Программы, которые хотят использовать устройство, как правило, обращаются к нему igor@0: через специальный файл, соответствующий ему. Типичный пример -- файл \texttt{/dev/hda}. igor@0: Команда \texttt{ls -l} покажет для этого устройства, \texttt{/dev/hda}, номера 3 и 0. igor@0: Мажорный номер 3 и минорный номер 0. А у устройства \texttt{/dev/hda1} минорный номер 1, igor@0: в то время как мажорный номер тоже 3. igor@0: igor@0: До ядра 2.6 минорный номер был 8битный, ограничивая возможное количество номеров от 0 до 255. igor@0: Ни у кого и не было столько устройств, поэтому ограничение не имело существенного значения. igor@0: Теперь, когда диски могут быть отвязаны от серверов, ограничение стало важным -- igor@0: в настоящее время ядро 2.6 использует до 20 бит для минорного номера устройства. igor@0: igor@0: Иметь 1048576 разных значений для минорного номера это большая помощь для систем, в которых igor@0: много устройств, но не всякое программное обеспечение может с этим разобраться. igor@0: Если glibc или другая программа всё ещё думает, что минорные номера 8-битные, igor@0: будет проблематично заставить её использовать номера превышающие 255. igor@0: igor@0: Для облегчения перехода, драйвер AoE может быть скомипилирован igor@0: без поддержки разделов. igor@0: Это позволит вместо 16 номеров на диск использовать только один. igor@0: Так что, даже на системах, которые до сих пор не поддерживают большие igor@0: минорные номера как ядро 2.6, можно использовать до 256 AoE дисков. igor@0: igor@0: Команды для создания файловой системы и логических томов показаны на листинге 2. igor@0: Стэн решил назвать группу ben и логический том franklin. igor@0: После этого нужно сделать небольшие изменения в конфигурации LVM2. igor@0: Во-первых, нужно добавить строку с типом = [\dq{}aoe\dq{}, 16], igor@0: так чтобы LVM распознал AoE-диски. Во-вторых, нужно указать md\_component\_detection = 1, igor@0: чтобы диски внутри RAID 10 игнорировались, как только весь RAID 10 igor@0: стал физическим томом. igor@0: igor@0: \begin{verbatim} igor@0: %# # ускорить инициализацию массива igor@0: %# for f in `find /proc | grep speed`; do echo 100000 > $f done igor@0: igor@0: %# создать массив (mdadm will manage hot spares) igor@0: %# mdadm -C /dev/md1 -l 1 -n 2 /dev/etherd/e0.0 /dev/etherd/e0.1 igor@0: %# mdadm -C /dev/md2 -l 1 -n 2 /dev/etherd/e0.2 /dev/etherd/e0.3 igor@0: %# mdadm -C /dev/md3 -l 1 -n 2 /dev/etherd/e0.4 /dev/etherd/e0.5 igor@0: %# mdadm -C /dev/md4 -l 1 -n 2 -x 2 \ igor@0: /dev/etherd/e0.6 /dev/etherd/e0.7 \ igor@0: /dev/etherd/e0.8 /dev/etherd/e0.9 igor@0: %# sleep 1 igor@0: igor@0: %# распределение по зеркалам igor@0: %# mdadm -C /dev/md0 -l 0 -n 4 \ igor@0: /dev/md1 /dev/md2 /dev/md3 /dev/md4 igor@0: igor@0: %# # превращаем RAID10 в физический том, и добавляем его в группу igor@0: %# pvcreate /dev/md0 igor@0: %# vgcreate TURBO /dev/md0 igor@0: igor@0: %# # смотрим количество экстентов igor@0: %# vgdisplay TURBO | grep -i 'free.*PE' igor@0: igor@0: %## создаём том, занимающий всё свободное пространство igor@0: %# lvcreate --extents 88349 --name vol1 TURBO igor@0: %# modprobe jfs igor@0: %# mkfs -t jfs /dev/TURBO/vol1 igor@0: %# mkdir /vol1 igor@0: %# mount /dev/TURBO/vol1 /vol1 igor@0: \end{verbatim} igor@0: igor@0: На системе Debian Sarge с двумя процессорами igor@0: Athlon MP, 1 GB памяти, сетевой картой Intel PRO/1000MT и 40GB дисками igor@0: и коммутатором Netgear FS526T igor@0: с RAID 10 работающим поверх 8 блэйдов EtherDrive в полке Coraid igor@0: была зафиксирована произодвительность 23.58MB/s на чтение igor@0: и 17.45MB/s на запись. igor@0: Измерения делались igor@0: путём копирования 1GB файла в /dev/null после сброса кэша. igor@0: Во время копирования включена также команда sync. igor@0: igor@0: RAID 10 в данном случае состоит из четырёх stripe\rq{}ов, igor@0: каждый из которых это пара зеркалированных дисков. igor@0: Вообще, можно вычислить производительность igor@0: набора блэйдов EtherDrive исходя только из количества stripe\rq{}ов в нём. igor@0: Для RAID 10 stripe\rq{}ов будет в два раза меньше чем дисков, igor@0: поскольку каждый диск зеркалируется на другой диск. igor@0: Для RAID 5 один диск выделяется под чётность, оставляя остальные диски для stripe\rq{}ов. igor@0: igor@0: Ожидаемая пропускная способность чтения равна количеству stripe\rq{}ов умножить на 6MB/s. igor@0: Это означает, что если Стэн изначальное купил бы две полки igor@0: и собрал бы из них 18-блэйдный RAID 10 вместо своего 8-блэйдного, он мог ожидать igor@0: прироста производительности более чем в два раза. igor@0: Стэну не нужна такая большая производительность и он хочет начать с маленькой файловой системы, igor@0: размером 1.6TB. igor@0: igor@0: Ниже показано как можно расширить файловую систему. igor@0: igor@0: На листинге не показан файл \#mdadm-aoe.conf\# и стартовые/стоповые скрипты. igor@0: Конфигурационный файл mdadm указывает процессу mdadm, работающему в режиме монитора, igor@0: как выполнять горячую замену, чтобы можно было заменить сбойный диск в зеркале. igor@0: Подробности о группах резервирования (spare groups) можно прочитать на man-странице igor@0: по mdadm. igor@0: igor@0: Увеличить файловую систему без размонтирования, установить массив RAID 10, добавить его в группу томов и затем увеличить файловую систему: igor@0: igor@0: \begin{verbatim} igor@0: %# # когда для второй полки сделан RAID10, добавляем его в группу томов igor@0: %# vgextend TURBO /dev/md5 igor@0: %# vgdisplay TURBO | grep -i 'free.*PE' igor@0: igor@0: %# # увеличиваем логический том и файловую систему igor@0: %# lvextend --extents +88349 /dev/TURBO/vol1 igor@0: %# mount -o remount,resize /vol1 igor@0: \end{verbatim} igor@0: igor@0: Стартовый и стоповый скрипты легко создать. igor@0: Стартовый скрипт просто собирает зеркалированные пары RAID 1, igor@0: собирает все RAID 0 и запускает процесс мониторинга mdadm. igor@0: Стоповый скрипт останавливает монитор mdadm, igor@0: останавливает RAID 0 и, в последнюю очередь, igor@0: останавливает RAID 1. igor@0: igor@0: \subsection{Совместный доступ к блочным хранилищам} igor@0: Теперь, после того как мы увидели конкретный пример ATA over Ethernet в действии, igor@0: может возникнуть вопрос: \dq{}А что произойдёт, если другой хост попытается получить igor@0: доступ к данным, когда с ними уже работает какой-то хост в сети?\dq{} igor@0: Сможет ли этот второй хост подмонтировать файловую систему JFS и получить доступ igor@0: к тем же данным? Короткий ответ такой: \dq{}Да, но это не безопасно!\dq{}. igor@0: JFS, как и ext3, как и многие другие файловые системы спроектированы igor@0: для использования на отдельном хосте. И для таких файловых систем igor@0: одновременный доступ с нескольких хостов приведёт к повреждениям. igor@0: Причина -- в кэш-буфере, который унифицирован с кэшем страниц в ядре 2.6. igor@0: igor@0: Linux кэширует данные файловых систем в оперативной памяти igor@0: везде, где это только возможно, дабы избежать использования igor@0: медленного блочного устройства и добиться хорошего прироста производительности. igor@0: Вы могли видеть результат наглядно, igor@0: когда, например, запускали \textbf{find} дважды igor@0: поверх одного и того же каталога. igor@0: igor@0: Некоторые файловые системы спроектированы так, что они могут использоваться одновременно igor@0: несколькими хостами — такие файловые системы называют \textit{кластерными}. igor@0: Они имеют механизмы для проверки, синхронизирован ли кэш на всех igor@0: машинах с нижележащей файловой системой. igor@0: Отличный пример такой системы с открытым кодом это GFS. igor@0: GFS использует кластерное программное обеспечение igor@0: для того чтобы отследить, кто из группы хостов igor@0: работает с файловой системой. igor@0: Для того чтобы убедиться, igor@0: что разные хосты договариваются друг с другом igor@0: при совместном доступе к файловой системе, igor@0: в GFS используются блокировки. igor@0: igor@0: Когда используются кластерные файловые системы, такие как GFS, igor@0: становится возможным совместный доступ множества хостов igor@0: к одному и тому же блочному устройству по сети. igor@0: Не нужно ничего типа NFS-сервера, поскольку igor@0: каждый хост работает с хранилищем непосредственно. igor@0: igor@0: Но есть одна загвоздка. igor@0: Чем больше дисков вы используете, тем выше шансы, igor@0: что один из дисков засбоит. igor@0: В этой ситуации обычно используется RAID, igor@0: который добавляет избыточность. igor@0: К сожалению, программный RAID Linux igor@0: пока что не умеет работать с кластерными файловыми системами. igor@0: Это означает, что каждый хост igor@0: в сети не сможет запускать mdadm. igor@0: igor@0: Кластерное программное обеспечение для Linux развивается igor@0: с большой скоростью. Есть надежда что рано или поздно RAID будет поддерживать кластерные файловые системы. igor@0: До этого момента мало вариантов использования AoE в кластерных системах. igor@0: Основная идея — централизовать функциональность RAID. igor@0: Можно купить один или два Coraid RAIDblade igor@0: и сделать чтобы кластерные узлы использовали их. igor@0: RAIDblade\rq{}ы будут управлять EtherDrive\rq{}ами, igor@0: которые должны подключаться за них. igor@0: Или тоже самое можно сделать на обычной Linux-системе, igor@0: которая подключит массивы, сделает на них RAID igor@0: и с помощью ATA over Ethernet экспортирует его как готовое устройство. igor@0: Это может сделать, например, программа [vblade]. igor@0: igor@0: \subsection{Резервное копирование} igor@0: Поскольку AoE выводит недорогие диски в Ethernet-сеть, многие админы igor@0: могут заинтересоваться в использовании AoE для создания резервных копий. igor@0: Часто в стратегиях резервного копирования используются двухуровневые хранилища, igor@0: которые не такие быстрые как on-line хранилища, но и не такие медленные для доступа как лента. igor@0: ATA over Ethernet даёт возможность легко использовать дешёвые ATA-диски как хранилище второго уровня. igor@0: igor@0: Но вообще говоря, с такими дешёвыми жёсткими дисками и стабильным программным RAID, igor@0: почему бы не использовать диски как носитель для хранения резервных копий? igor@0: В такой системе резервного копирования, в отличие от ленточной, igor@0: есть возможность непосредственного доступа к заархивированным файлам. igor@0: igor@0: В нескольких программах резервного копирования при создании резервных копий igor@0: используются преимущества возможностей файловых систем. igor@0: Например, используя жёсткие ссылки они могут делать полные бэкапы igor@0: с эффективностью инкрементальных. Подробности igor@0: здесь ([rsync Backups http://www.mikerubel.org/computers/rsync\_snapshots]) igor@0: и здесь ([Backup PC http://backuppc.sourceforge.net/]). igor@0: igor@0: \subsection{Заключение} igor@0: Размещение недорогих дисков в локальной сети это одна из тех идей, igor@0: которая заставляет подумать \dq{}Почему это интересно раньше никто не сделал?\dq{}. igor@0: С помощью простого сетевого протокола можно развязать хранилища igor@0: и сервера, не используя при этом дорогого аппаратного обеспечения igor@0: и сложной сетевой инфраструктуры. В простой Ethernet сети нет необходимости igor@0: в сложном, развитом но требовательном к ресурсам стеке протоколов TCP/IP. igor@0: igor@0: Если вы используете хранилища в локальной сети, и если настройки igor@0: доступа к хранилищу путём конфигурирование сети Ethernet достаточно, igor@0: тогда ATA over Ethernet подойдёт вас лучше всего. igor@0: Если вас интересуют такие вещи как шифрование, возможность маршрутизации igor@0: и контроль доступа, посмотрите iSCSI. igor@0: igor@0: С AoE появляется простое альтернативное решение для организации хранилищ на Linux, igor@0: которой ранее явно не хватало. С простотой появляются и возможности. igor@0: AoE может использоваться как строительный блок в любом решении для хранения. igor@0: Дальше уже ваша фантазия. igor@0: igor@0: \subsection{Преимущества и недостатки AoE} igor@0: Преимущества и недостатки AoE в сравнении с iSCSI. igor@0: igor@0: Преимущества: igor@0: \begin{itemize} igor@0: \item Низкая стоимость igor@0: \item Высокая производительность igor@0: \item Простота igor@0: \end{itemize} igor@0: igor@0: Недостатки: igor@0: \begin{itemize} igor@0: \item Низкая масштабируемость, возможность использования только в пределах одной Ethernet-сети igor@0: \item Отсутствие механизмов обеспечения безопасности igor@0: \item Отсутствие механизмов контроля ошибок передачи данных, за исключением тех, что есть у самой сети Ethernet (см, например \url{http://lists.xensource.com/archives/html/xen-devel/2005-05/msg00832.html}) igor@0: \end{itemize} igor@0: igor@0: \subsection{Дополнительная информация} igor@0: \begin{itemize} igor@0: \item \htmladdnormallinkfoot{ATA over Ethernet}{http://xgu.ru/wiki/aoe} (рус.) igor@0: \item \htmladdnormallinkfoot{ATA over Ethernet}{http://en.wikipedia.org/wiki/ATA\_over\_Ethernet}(англ.) в Wikipedia igor@0: \item \htmladdnormallinkfoot{ATA Over Ethernet: Putting Hard Drives on the LAN}{http://www.linuxjournal.com/article/8149} — статья в Linux Journal igor@0: \item \htmladdnormallinkfoot{Resources for "ATA Over Ethernet: Putting Hard Drives on the LAN"}{http://www.linuxjournal.com/article/8201} (англ.) igor@0: \item \htmladdnormallinkfoot{Resources for "ATA Over Ethernet: Putting Hard Drives on the LAN"}{http://www.linuxjournal.com/article/8201} (англ.) — дополнительные ссылки в Linux Journal igor@0: \item \htmladdnormallinkfoot{The ATA over Ethernet (AoE) Protocol}{http://www.linux-mag.com/index.php?option=com\_content\&task=view\&id=2069\&Itemid=2307} (англ.) — статья на Linux Magazine (требуется регистрация) igor@0: \item \htmladdnormallinkfoot{Using AoE in FreeBSD}{http://www.coraid.com/support/freebsd/usingaoe.html} — Поддержка AoE в FreeBSD igor@0: \item \htmladdnormallinkfoot{Протоколы сетей хранения данных. Часть I — ATA over Ethernet}{http://www.samag.ru/cgi-bin/go.pl?q=articles;n=09.2005;a=15} — статья в журнале Системный администратор igor@0: \item \htmladdnormallinkfoot{The Coraid Linux NAS HOWTO}{http://www.coraid.com/support/cln/CLN-HOWTO.html} (англ.) — HOWTO по разворачиванию NAS на базе ATA over Ethernet igor@0: \item \htmladdnormallinkfoot{(Xen-users) HOWTO: AOE in domU and boot from it.}{http://lists.xensource.com/archives/html/xen-users/2006-07/msg00595.html} (англ. igor@0: \item \htmladdnormallinkfoot{Access over Ethernet Insecurities in AoE SLIDES}{http://www.slideshare.net/amiable\_indian/access-over-ethernet-insecurites-in-aoe/} (англ.) igor@0: \item \htmladdnormallinkfoot{"iSCSI killer" Native in Linux}{http://hardware.slashdot.org/article.pl?sid=06/07/31/1143230} (англ.) — обсуждение AoE на Slashdot igor@0: \item \htmladdnormallinkfoot{OpenNews: ATA over Ethernet в Linux}{http://www.opennet.ru/openforum/vsluhforumID3/36130.html} — обсуждение статьи на OpenNet igor@0: \item \htmladdnormallinkfoot{OpenNews: Построение SAN для Xen на основе DRBD, LVM и GNBD" }{http://www.opennet.ru/openforum/vsluhforumID3/36804.html} — другое обсуждение на OpenNet, где затрагиваются вопросы сравнения AoE и iSCSI igor@0: \end{itemize} igor@0: igor@0: