xg-scale
annotate aoe.tex @ 0:4730a0d07d88
Исходники курса после первого прочтения.
Правки (которых должно быть много),
ещё пока не вносились.
Правки (которых должно быть много),
ещё пока не вносились.
author | Igor Chubin <igor@chub.in> |
---|---|
date | Tue Jul 01 16:16:44 2008 +0300 (2008-07-01) |
parents | |
children |
rev | line source |
---|---|
igor@0 | 1 \section{ATA over Ethernet} |
igor@0 | 2 |
igor@0 | 3 Описываемая технология построения хранилищ даёт возможность строить дисковые массивы |
igor@0 | 4 для архивов, резервных копий или традиционного использования |
igor@0 | 5 на базе обычных дисков ATA, которые дешевле даже чем лента. |
igor@0 | 6 Эта технология может оказаться особенно интересной для тех, |
igor@0 | 7 кто использует виртуализированные системы на базе Xen. |
igor@0 | 8 |
igor@0 | 9 Технология является альтернативой для iSCSI, но с более узким |
igor@0 | 10 спектром задач, где она может использоваться. Подробнее об этом ниже, |
igor@0 | 11 в разделе \textit{\dq{}Преимущества и недостатки AoE\dq{}}. |
igor@0 | 12 |
igor@0 | 13 \subsection{Введение} |
igor@0 | 14 Данные некоторых видов огромны просто в силу своей природы. |
igor@0 | 15 Видео, например, как правило занимает большой объём диска. |
igor@0 | 16 В связи с широким распространением видеонаблюдения |
igor@0 | 17 потребность в хранении видео-данных становится ещё более актуальной. |
igor@0 | 18 |
igor@0 | 19 Резервное копирование и избыточность данных |
igor@0 | 20 имеет существенное значение для любого дела, |
igor@0 | 21 в котором используются компьютеры. |
igor@0 | 22 Похоже, не важно, какой объём хранилища -- всегда хочется иметь больше. |
igor@0 | 23 Даже почта может вырасти за пределы контейнера, в котором она лежит. |
igor@0 | 24 Это хорошо известно провайдерам Интернет-услуг. |
igor@0 | 25 |
igor@0 | 26 Хранилище неограниченного размера вполне имеет право на существование, |
igor@0 | 27 если сделать так, чтобы диски можно было вынести за предел корпуса |
igor@0 | 28 и отвязать хранилище от компьютера, которые его использует. |
igor@0 | 29 Принцип развязки связанных компонент с целью достижения большей гибкости |
igor@0 | 30 хорошо показал себя во множестве различных областей, |
igor@0 | 31 не только при построении хранилищ. |
igor@0 | 32 Модульный код обладает гибкостью, которая позволяет |
igor@0 | 33 применять его в непредвиденных ситуациях или |
igor@0 | 34 стерео-система, сделанная из компонентов, |
igor@0 | 35 может использоваться в различных интересных конфигурациях, |
igor@0 | 36 а не только как аудио-комбайн. |
igor@0 | 37 |
igor@0 | 38 Наиболее известный пример хранилищ, работающих из коробки это, наверное, SAN (storage area network). |
igor@0 | 39 Когда SAN\rq{}ы только появились вокруг них был большой шум и переполох. |
igor@0 | 40 Сложно было выяснить, что же это в действительности такое. |
igor@0 | 41 А когда в итоге это всё-таки получилось, выяснилось что это нечто |
igor@0 | 42 сложное, проприетарное и дорогое. |
igor@0 | 43 |
igor@0 | 44 Однако, поддерживая SAN\rq{}ы Linux-сообщество сделало несколько полезных изменений в ядре. |
igor@0 | 45 Сегодня в ядрах Linux есть возможности, которых ещё несколько лет назад очень не хватало. |
igor@0 | 46 Они могут использоваться как гигантские блочные устройства, выходящие далеко |
igor@0 | 47 за старые пределы в два терабайта (именно терабайта! подробности, например, в \url{http://lkml.org/lkml/2002/5/9/217} и \url{http://kerneltrap.org/node/186}). Они поддерживают намного больше |
igor@0 | 48 одновременно подключённых дисков. Также появились богатые возможности управления томами. |
igor@0 | 49 В дополнение ко всему прочему, файловые системы могут теперь расширяться до огромных размеров, |
igor@0 | 50 даже когда они смонтированы и используются. |
igor@0 | 51 |
igor@0 | 52 Здесь рассматриваются новые пути использования эти возможности ядра: |
igor@0 | 53 диски выносятся из компьютера старые пределы ёмкости преодолеваются. |
igor@0 | 54 Можно воспринимать ATA over Ethernet как способ заменить IDE-кабель |
igor@0 | 55 сетью Ethernet. Когда хранилище и компьютер развязаны и между ними стоит такая гибкая вещь |
igor@0 | 56 как Ethernet, возможности ограничены только воображением и желанием изучать новые вещи. |
igor@0 | 57 |
igor@0 | 58 \subsection{Что такое AoE} |
igor@0 | 59 ATA over Ethernet (AoE) — это сетевой протокол, зарегистрированный IEEE как Ethernet-протокол |
igor@0 | 60 номер 0x88a2. AoE это низкоуровневый протокол, намного более простой чем TCP/IP или даже просто IP. |
igor@0 | 61 TCP/IP и IP нужны обязательно, если требуется организовать (надёжную) передачу данных через Интернет, |
igor@0 | 62 но на компьютер в этом случае ложится намного большая нагрузка, для того чтобы |
igor@0 | 63 обеспечить ту сложность, которая присуща этим протоколам. |
igor@0 | 64 |
igor@0 | 65 Особенно хорошо это известно пользователям iSCSI. |
igor@0 | 66 iSCSI позволяет перенаправить ввод/вывод поверх TCP/IP, |
igor@0 | 67 что в свою очередь даёт возможность заменить дорогое оборудование Fibre Channel на значительно |
igor@0 | 68 более дешёвое Ethernet и IP. |
igor@0 | 69 Зачастую iSCSI используется совместно с устройствами для разгрузки TCP (TCP offload engines, TOE). |
igor@0 | 70 Эти устройства довольно дорогие, но они снимают часть нагрузки TCP/IP |
igor@0 | 71 с центрального процессора машин, использующих iSCSI. |
igor@0 | 72 |
igor@0 | 73 Интересно, что в большинстве своём iSCSI не используется поверх собственно сети Интернет. |
igor@0 | 74 Чаще всего пакеты просто передаются на машину, стоящую в соседней серверной стойке, |
igor@0 | 75 и в этом случае вся мощь TCP/IP оказывается просто избыточной. |
igor@0 | 76 |
igor@0 | 77 Резонный вопрос, почему бы вместо того что разгружать TCP/IP вообще от него не избавиться? |
igor@0 | 78 Протокол AoE именно это и делает. |
igor@0 | 79 И вместо того чтобы полагаться на TCP/IP, он полагается на возможности современных коммутаторов, |
igor@0 | 80 у которых не бывает коллизий, есть возможность управления потоком и |
igor@0 | 81 постоянно растёт производительность. |
igor@0 | 82 В локальной сети сохраняется последовательность пакетов |
igor@0 | 83 и для каждого пакеты сетевым оборудованием вычисляется контрольная сумма. |
igor@0 | 84 |
igor@0 | 85 В каждом AoE пакете находится команда для ATA-диска или ответ от ATA-диска. |
igor@0 | 86 Драйвер AoE в ядре Linux выполняется AoE и делает диск доступным как обычное |
igor@0 | 87 блочное устройство, такое, например, как \texttt{/dev/etherd/e0.0} -- точно также |
igor@0 | 88 как IDE-драйвер делает диск, подключённый к концу IDE-кабеля, доступным как \texttt{/dev/hda}. |
igor@0 | 89 Драйвер, если нужно, ретранслирует пакеты, так что AoE-устройство выглядит для остального ядра как обычный диск. |
igor@0 | 90 |
igor@0 | 91 В дополнение к ATA командам, у AoE есть простая возможность идентификации |
igor@0 | 92 доступных устройств с помощью конфигурационных опросных пакетов (query config packets). |
igor@0 | 93 Это всё: ATA команды и конфигурационных опросные пакеты. |
igor@0 | 94 |
igor@0 | 95 Возникает вопрос: |
igor@0 | 96 если все диски находятся в сети, тогда как я могу ограничить доступ к дискам? |
igor@0 | 97 Как можно быть уверенным что, даже если машину А взломали, что диски машины B в безопасности? |
igor@0 | 98 |
igor@0 | 99 Ответ в том, что AoE немаршрутизируемый протокол. Можно легко определить какой компьютер |
igor@0 | 100 будет видеть какие диски путём конфигурирования Ethernet-сети. |
igor@0 | 101 Поскольку AoE-устройствам не нужны IP-адреса, создать изолированные |
igor@0 | 102 Ethernet-сети несложно. |
igor@0 | 103 Большинство современных коммутаторов имеют возможность организации |
igor@0 | 104 VLAN\rq{}ов, что позволяет легко разделить коммутатор на несколько широковещательных доменов. |
igor@0 | 105 |
igor@0 | 106 Протокол AoE настолько легковесный, что его может использовать даже самое недорогое железо |
igor@0 | 107 (существует как минимум один производитель оборудования, поддерживаеющего ATA over Ethernet — Coraid). |
igor@0 | 108 Описание спецификаций AoE помещается на 8 страниц. Простота протокола выглядит контрастно |
igor@0 | 109 по отношению к iSCSI, который описывается на сотнях страниц, |
igor@0 | 110 включая спецификации по шифрованию, маршрутизации, контролю доступа |
igor@0 | 111 и множеству других вопросов. |
igor@0 | 112 |
igor@0 | 113 Простые примитивы могут быть очень мощными. |
igor@0 | 114 |
igor@0 | 115 \subsection{Стэн-архиватор} |
igor@0 | 116 Эта история основана на реальных событиях, случившихся с гражданином |
igor@0 | 117 одного другого государства. |
igor@0 | 118 |
igor@0 | 119 Стэн — вымышленный админ, работающий на государственной службе. |
igor@0 | 120 В соответствии с новым государственным законом той страны все официальные |
igor@0 | 121 документы должны архивироваться. Любой гражданин государства |
igor@0 | 122 может потребовать показать любой документ в любое время. |
igor@0 | 123 Из-за этого Стэну понадобилось огромное хранилище, которое может расти |
igor@0 | 124 без всяких ограничений. Производительность хранилища может не быть |
igor@0 | 125 больше производительности локального диска. Любые данные из хранилища |
igor@0 | 126 должны доставаться легко и мгновенно. |
igor@0 | 127 |
igor@0 | 128 Стэн уверенно чувствует себя в системном администрировании Linux и Ethernet сетях, |
igor@0 | 129 и из-за этого он решает попробовать для своей задачи ATA over Ethernet. |
igor@0 | 130 Он покупает кое-какое оборудование, потратив на это меньше \$6.5K: |
igor@0 | 131 \begin{itemize} |
igor@0 | 132 \item Одна двухпортовая гигабитная Ethernet-карта, вместо старой 100-мегабитной карты. |
igor@0 | 133 \item Один 26-портовый коммутатор с двумя гигабитными портами. |
igor@0 | 134 \item Одну полку Coraid EtherDrive и десять блэйдов EtherDrive. |
igor@0 | 135 \item Десять 400GB ATA жестких дисков. |
igor@0 | 136 \end{itemize} |
igor@0 | 137 |
igor@0 | 138 Оборудование может быть объединеное в программный RAID-10 — чередование поверх зеркалированных пар. |
igor@0 | 139 Хотя этак конфигурация не даёт столько ёмкости как конфигурация RAID 5, |
igor@0 | 140 она максимизирует отказоустойчивость, надёжность, снижает нагрузку |
igor@0 | 141 на процессор и время реинициализации диска при замене. |
igor@0 | 142 |
igor@0 | 143 Имеет смысл поверх AoE-дисков использовать |
igor@0 | 144 LVM и файловые системы с возможностью online-расширения, такие например, |
igor@0 | 145 как ext3, XFS или JFS. |
igor@0 | 146 Это даст возможность в дальнейшем, при необходимости купить новую заполненную |
igor@0 | 147 полку, создать ещё один RAID 10, превратить его в физический том, |
igor@0 | 148 и использовать этот том для расширения |
igor@0 | 149 объёма логических томов с файловыми системами. |
igor@0 | 150 |
igor@0 | 151 Для старых систем нужно скомпилировать драйвер |
igor@0 | 152 AoE с AOE\_PARTITIONS=1 (в частности, sarge не поддерживал большие минорные номера), |
igor@0 | 153 поэтому он выключает поддержку разделов, для того чтобы использовать побольше дисков. |
igor@0 | 154 |
igor@0 | 155 \begin{verbatim} |
igor@0 | 156 %# # Настройка хоста для работы с AOE |
igor@0 | 157 |
igor@0 | 158 %# # Сборка и инсталляция драйвера aoe |
igor@0 | 159 %# tar xvfz aoe-2.6-5.tar.gz |
igor@0 | 160 %# cd aoe-2.6-5 |
igor@0 | 161 %# make AOE_PARTITIONS=1 install |
igor@0 | 162 |
igor@0 | 163 %# # Настройка сети |
igor@0 | 164 %# # Для AoE IP-адрес не нужен |
igor@0 | 165 %# ifconfig eth1 up |
igor@0 | 166 |
igor@0 | 167 %# # Чтобы быть уверенным что интерфейс успел подняться, нужно подождать какое-то время |
igor@0 | 168 %# # И после этого загрузить драйвер aoe |
igor@0 | 169 %# sleep 5 |
igor@0 | 170 %# modprobe aoe |
igor@0 | 171 |
igor@0 | 172 %# # Теперь можно посмотреть какие AoE-устройства есть в сети |
igor@0 | 173 %# aoe-stat |
igor@0 | 174 \end{verbatim} |
igor@0 | 175 |
igor@0 | 176 \subsection{Минорные номера устройств} |
igor@0 | 177 Программы, которые хотят использовать устройство, как правило, обращаются к нему |
igor@0 | 178 через специальный файл, соответствующий ему. Типичный пример -- файл \texttt{/dev/hda}. |
igor@0 | 179 Команда \texttt{ls -l} покажет для этого устройства, \texttt{/dev/hda}, номера 3 и 0. |
igor@0 | 180 Мажорный номер 3 и минорный номер 0. А у устройства \texttt{/dev/hda1} минорный номер 1, |
igor@0 | 181 в то время как мажорный номер тоже 3. |
igor@0 | 182 |
igor@0 | 183 До ядра 2.6 минорный номер был 8битный, ограничивая возможное количество номеров от 0 до 255. |
igor@0 | 184 Ни у кого и не было столько устройств, поэтому ограничение не имело существенного значения. |
igor@0 | 185 Теперь, когда диски могут быть отвязаны от серверов, ограничение стало важным -- |
igor@0 | 186 в настоящее время ядро 2.6 использует до 20 бит для минорного номера устройства. |
igor@0 | 187 |
igor@0 | 188 Иметь 1048576 разных значений для минорного номера это большая помощь для систем, в которых |
igor@0 | 189 много устройств, но не всякое программное обеспечение может с этим разобраться. |
igor@0 | 190 Если glibc или другая программа всё ещё думает, что минорные номера 8-битные, |
igor@0 | 191 будет проблематично заставить её использовать номера превышающие 255. |
igor@0 | 192 |
igor@0 | 193 Для облегчения перехода, драйвер AoE может быть скомипилирован |
igor@0 | 194 без поддержки разделов. |
igor@0 | 195 Это позволит вместо 16 номеров на диск использовать только один. |
igor@0 | 196 Так что, даже на системах, которые до сих пор не поддерживают большие |
igor@0 | 197 минорные номера как ядро 2.6, можно использовать до 256 AoE дисков. |
igor@0 | 198 |
igor@0 | 199 Команды для создания файловой системы и логических томов показаны на листинге 2. |
igor@0 | 200 Стэн решил назвать группу ben и логический том franklin. |
igor@0 | 201 После этого нужно сделать небольшие изменения в конфигурации LVM2. |
igor@0 | 202 Во-первых, нужно добавить строку с типом = [\dq{}aoe\dq{}, 16], |
igor@0 | 203 так чтобы LVM распознал AoE-диски. Во-вторых, нужно указать md\_component\_detection = 1, |
igor@0 | 204 чтобы диски внутри RAID 10 игнорировались, как только весь RAID 10 |
igor@0 | 205 стал физическим томом. |
igor@0 | 206 |
igor@0 | 207 \begin{verbatim} |
igor@0 | 208 %# # ускорить инициализацию массива |
igor@0 | 209 %# for f in `find /proc | grep speed`; do echo 100000 > $f done |
igor@0 | 210 |
igor@0 | 211 %# создать массив (mdadm will manage hot spares) |
igor@0 | 212 %# mdadm -C /dev/md1 -l 1 -n 2 /dev/etherd/e0.0 /dev/etherd/e0.1 |
igor@0 | 213 %# mdadm -C /dev/md2 -l 1 -n 2 /dev/etherd/e0.2 /dev/etherd/e0.3 |
igor@0 | 214 %# mdadm -C /dev/md3 -l 1 -n 2 /dev/etherd/e0.4 /dev/etherd/e0.5 |
igor@0 | 215 %# mdadm -C /dev/md4 -l 1 -n 2 -x 2 \ |
igor@0 | 216 /dev/etherd/e0.6 /dev/etherd/e0.7 \ |
igor@0 | 217 /dev/etherd/e0.8 /dev/etherd/e0.9 |
igor@0 | 218 %# sleep 1 |
igor@0 | 219 |
igor@0 | 220 %# распределение по зеркалам |
igor@0 | 221 %# mdadm -C /dev/md0 -l 0 -n 4 \ |
igor@0 | 222 /dev/md1 /dev/md2 /dev/md3 /dev/md4 |
igor@0 | 223 |
igor@0 | 224 %# # превращаем RAID10 в физический том, и добавляем его в группу |
igor@0 | 225 %# pvcreate /dev/md0 |
igor@0 | 226 %# vgcreate TURBO /dev/md0 |
igor@0 | 227 |
igor@0 | 228 %# # смотрим количество экстентов |
igor@0 | 229 %# vgdisplay TURBO | grep -i 'free.*PE' |
igor@0 | 230 |
igor@0 | 231 %## создаём том, занимающий всё свободное пространство |
igor@0 | 232 %# lvcreate --extents 88349 --name vol1 TURBO |
igor@0 | 233 %# modprobe jfs |
igor@0 | 234 %# mkfs -t jfs /dev/TURBO/vol1 |
igor@0 | 235 %# mkdir /vol1 |
igor@0 | 236 %# mount /dev/TURBO/vol1 /vol1 |
igor@0 | 237 \end{verbatim} |
igor@0 | 238 |
igor@0 | 239 На системе Debian Sarge с двумя процессорами |
igor@0 | 240 Athlon MP, 1 GB памяти, сетевой картой Intel PRO/1000MT и 40GB дисками |
igor@0 | 241 и коммутатором Netgear FS526T |
igor@0 | 242 с RAID 10 работающим поверх 8 блэйдов EtherDrive в полке Coraid |
igor@0 | 243 была зафиксирована произодвительность 23.58MB/s на чтение |
igor@0 | 244 и 17.45MB/s на запись. |
igor@0 | 245 Измерения делались |
igor@0 | 246 путём копирования 1GB файла в /dev/null после сброса кэша. |
igor@0 | 247 Во время копирования включена также команда sync. |
igor@0 | 248 |
igor@0 | 249 RAID 10 в данном случае состоит из четырёх stripe\rq{}ов, |
igor@0 | 250 каждый из которых это пара зеркалированных дисков. |
igor@0 | 251 Вообще, можно вычислить производительность |
igor@0 | 252 набора блэйдов EtherDrive исходя только из количества stripe\rq{}ов в нём. |
igor@0 | 253 Для RAID 10 stripe\rq{}ов будет в два раза меньше чем дисков, |
igor@0 | 254 поскольку каждый диск зеркалируется на другой диск. |
igor@0 | 255 Для RAID 5 один диск выделяется под чётность, оставляя остальные диски для stripe\rq{}ов. |
igor@0 | 256 |
igor@0 | 257 Ожидаемая пропускная способность чтения равна количеству stripe\rq{}ов умножить на 6MB/s. |
igor@0 | 258 Это означает, что если Стэн изначальное купил бы две полки |
igor@0 | 259 и собрал бы из них 18-блэйдный RAID 10 вместо своего 8-блэйдного, он мог ожидать |
igor@0 | 260 прироста производительности более чем в два раза. |
igor@0 | 261 Стэну не нужна такая большая производительность и он хочет начать с маленькой файловой системы, |
igor@0 | 262 размером 1.6TB. |
igor@0 | 263 |
igor@0 | 264 Ниже показано как можно расширить файловую систему. |
igor@0 | 265 |
igor@0 | 266 На листинге не показан файл \#mdadm-aoe.conf\# и стартовые/стоповые скрипты. |
igor@0 | 267 Конфигурационный файл mdadm указывает процессу mdadm, работающему в режиме монитора, |
igor@0 | 268 как выполнять горячую замену, чтобы можно было заменить сбойный диск в зеркале. |
igor@0 | 269 Подробности о группах резервирования (spare groups) можно прочитать на man-странице |
igor@0 | 270 по mdadm. |
igor@0 | 271 |
igor@0 | 272 Увеличить файловую систему без размонтирования, установить массив RAID 10, добавить его в группу томов и затем увеличить файловую систему: |
igor@0 | 273 |
igor@0 | 274 \begin{verbatim} |
igor@0 | 275 %# # когда для второй полки сделан RAID10, добавляем его в группу томов |
igor@0 | 276 %# vgextend TURBO /dev/md5 |
igor@0 | 277 %# vgdisplay TURBO | grep -i 'free.*PE' |
igor@0 | 278 |
igor@0 | 279 %# # увеличиваем логический том и файловую систему |
igor@0 | 280 %# lvextend --extents +88349 /dev/TURBO/vol1 |
igor@0 | 281 %# mount -o remount,resize /vol1 |
igor@0 | 282 \end{verbatim} |
igor@0 | 283 |
igor@0 | 284 Стартовый и стоповый скрипты легко создать. |
igor@0 | 285 Стартовый скрипт просто собирает зеркалированные пары RAID 1, |
igor@0 | 286 собирает все RAID 0 и запускает процесс мониторинга mdadm. |
igor@0 | 287 Стоповый скрипт останавливает монитор mdadm, |
igor@0 | 288 останавливает RAID 0 и, в последнюю очередь, |
igor@0 | 289 останавливает RAID 1. |
igor@0 | 290 |
igor@0 | 291 \subsection{Совместный доступ к блочным хранилищам} |
igor@0 | 292 Теперь, после того как мы увидели конкретный пример ATA over Ethernet в действии, |
igor@0 | 293 может возникнуть вопрос: \dq{}А что произойдёт, если другой хост попытается получить |
igor@0 | 294 доступ к данным, когда с ними уже работает какой-то хост в сети?\dq{} |
igor@0 | 295 Сможет ли этот второй хост подмонтировать файловую систему JFS и получить доступ |
igor@0 | 296 к тем же данным? Короткий ответ такой: \dq{}Да, но это не безопасно!\dq{}. |
igor@0 | 297 JFS, как и ext3, как и многие другие файловые системы спроектированы |
igor@0 | 298 для использования на отдельном хосте. И для таких файловых систем |
igor@0 | 299 одновременный доступ с нескольких хостов приведёт к повреждениям. |
igor@0 | 300 Причина -- в кэш-буфере, который унифицирован с кэшем страниц в ядре 2.6. |
igor@0 | 301 |
igor@0 | 302 Linux кэширует данные файловых систем в оперативной памяти |
igor@0 | 303 везде, где это только возможно, дабы избежать использования |
igor@0 | 304 медленного блочного устройства и добиться хорошего прироста производительности. |
igor@0 | 305 Вы могли видеть результат наглядно, |
igor@0 | 306 когда, например, запускали \textbf{find} дважды |
igor@0 | 307 поверх одного и того же каталога. |
igor@0 | 308 |
igor@0 | 309 Некоторые файловые системы спроектированы так, что они могут использоваться одновременно |
igor@0 | 310 несколькими хостами — такие файловые системы называют \textit{кластерными}. |
igor@0 | 311 Они имеют механизмы для проверки, синхронизирован ли кэш на всех |
igor@0 | 312 машинах с нижележащей файловой системой. |
igor@0 | 313 Отличный пример такой системы с открытым кодом это GFS. |
igor@0 | 314 GFS использует кластерное программное обеспечение |
igor@0 | 315 для того чтобы отследить, кто из группы хостов |
igor@0 | 316 работает с файловой системой. |
igor@0 | 317 Для того чтобы убедиться, |
igor@0 | 318 что разные хосты договариваются друг с другом |
igor@0 | 319 при совместном доступе к файловой системе, |
igor@0 | 320 в GFS используются блокировки. |
igor@0 | 321 |
igor@0 | 322 Когда используются кластерные файловые системы, такие как GFS, |
igor@0 | 323 становится возможным совместный доступ множества хостов |
igor@0 | 324 к одному и тому же блочному устройству по сети. |
igor@0 | 325 Не нужно ничего типа NFS-сервера, поскольку |
igor@0 | 326 каждый хост работает с хранилищем непосредственно. |
igor@0 | 327 |
igor@0 | 328 Но есть одна загвоздка. |
igor@0 | 329 Чем больше дисков вы используете, тем выше шансы, |
igor@0 | 330 что один из дисков засбоит. |
igor@0 | 331 В этой ситуации обычно используется RAID, |
igor@0 | 332 который добавляет избыточность. |
igor@0 | 333 К сожалению, программный RAID Linux |
igor@0 | 334 пока что не умеет работать с кластерными файловыми системами. |
igor@0 | 335 Это означает, что каждый хост |
igor@0 | 336 в сети не сможет запускать mdadm. |
igor@0 | 337 |
igor@0 | 338 Кластерное программное обеспечение для Linux развивается |
igor@0 | 339 с большой скоростью. Есть надежда что рано или поздно RAID будет поддерживать кластерные файловые системы. |
igor@0 | 340 До этого момента мало вариантов использования AoE в кластерных системах. |
igor@0 | 341 Основная идея — централизовать функциональность RAID. |
igor@0 | 342 Можно купить один или два Coraid RAIDblade |
igor@0 | 343 и сделать чтобы кластерные узлы использовали их. |
igor@0 | 344 RAIDblade\rq{}ы будут управлять EtherDrive\rq{}ами, |
igor@0 | 345 которые должны подключаться за них. |
igor@0 | 346 Или тоже самое можно сделать на обычной Linux-системе, |
igor@0 | 347 которая подключит массивы, сделает на них RAID |
igor@0 | 348 и с помощью ATA over Ethernet экспортирует его как готовое устройство. |
igor@0 | 349 Это может сделать, например, программа [vblade]. |
igor@0 | 350 |
igor@0 | 351 \subsection{Резервное копирование} |
igor@0 | 352 Поскольку AoE выводит недорогие диски в Ethernet-сеть, многие админы |
igor@0 | 353 могут заинтересоваться в использовании AoE для создания резервных копий. |
igor@0 | 354 Часто в стратегиях резервного копирования используются двухуровневые хранилища, |
igor@0 | 355 которые не такие быстрые как on-line хранилища, но и не такие медленные для доступа как лента. |
igor@0 | 356 ATA over Ethernet даёт возможность легко использовать дешёвые ATA-диски как хранилище второго уровня. |
igor@0 | 357 |
igor@0 | 358 Но вообще говоря, с такими дешёвыми жёсткими дисками и стабильным программным RAID, |
igor@0 | 359 почему бы не использовать диски как носитель для хранения резервных копий? |
igor@0 | 360 В такой системе резервного копирования, в отличие от ленточной, |
igor@0 | 361 есть возможность непосредственного доступа к заархивированным файлам. |
igor@0 | 362 |
igor@0 | 363 В нескольких программах резервного копирования при создании резервных копий |
igor@0 | 364 используются преимущества возможностей файловых систем. |
igor@0 | 365 Например, используя жёсткие ссылки они могут делать полные бэкапы |
igor@0 | 366 с эффективностью инкрементальных. Подробности |
igor@0 | 367 здесь ([rsync Backups http://www.mikerubel.org/computers/rsync\_snapshots]) |
igor@0 | 368 и здесь ([Backup PC http://backuppc.sourceforge.net/]). |
igor@0 | 369 |
igor@0 | 370 \subsection{Заключение} |
igor@0 | 371 Размещение недорогих дисков в локальной сети это одна из тех идей, |
igor@0 | 372 которая заставляет подумать \dq{}Почему это интересно раньше никто не сделал?\dq{}. |
igor@0 | 373 С помощью простого сетевого протокола можно развязать хранилища |
igor@0 | 374 и сервера, не используя при этом дорогого аппаратного обеспечения |
igor@0 | 375 и сложной сетевой инфраструктуры. В простой Ethernet сети нет необходимости |
igor@0 | 376 в сложном, развитом но требовательном к ресурсам стеке протоколов TCP/IP. |
igor@0 | 377 |
igor@0 | 378 Если вы используете хранилища в локальной сети, и если настройки |
igor@0 | 379 доступа к хранилищу путём конфигурирование сети Ethernet достаточно, |
igor@0 | 380 тогда ATA over Ethernet подойдёт вас лучше всего. |
igor@0 | 381 Если вас интересуют такие вещи как шифрование, возможность маршрутизации |
igor@0 | 382 и контроль доступа, посмотрите iSCSI. |
igor@0 | 383 |
igor@0 | 384 С AoE появляется простое альтернативное решение для организации хранилищ на Linux, |
igor@0 | 385 которой ранее явно не хватало. С простотой появляются и возможности. |
igor@0 | 386 AoE может использоваться как строительный блок в любом решении для хранения. |
igor@0 | 387 Дальше уже ваша фантазия. |
igor@0 | 388 |
igor@0 | 389 \subsection{Преимущества и недостатки AoE} |
igor@0 | 390 Преимущества и недостатки AoE в сравнении с iSCSI. |
igor@0 | 391 |
igor@0 | 392 Преимущества: |
igor@0 | 393 \begin{itemize} |
igor@0 | 394 \item Низкая стоимость |
igor@0 | 395 \item Высокая производительность |
igor@0 | 396 \item Простота |
igor@0 | 397 \end{itemize} |
igor@0 | 398 |
igor@0 | 399 Недостатки: |
igor@0 | 400 \begin{itemize} |
igor@0 | 401 \item Низкая масштабируемость, возможность использования только в пределах одной Ethernet-сети |
igor@0 | 402 \item Отсутствие механизмов обеспечения безопасности |
igor@0 | 403 \item Отсутствие механизмов контроля ошибок передачи данных, за исключением тех, что есть у самой сети Ethernet (см, например \url{http://lists.xensource.com/archives/html/xen-devel/2005-05/msg00832.html}) |
igor@0 | 404 \end{itemize} |
igor@0 | 405 |
igor@0 | 406 \subsection{Дополнительная информация} |
igor@0 | 407 \begin{itemize} |
igor@0 | 408 \item \htmladdnormallinkfoot{ATA over Ethernet}{http://xgu.ru/wiki/aoe} (рус.) |
igor@0 | 409 \item \htmladdnormallinkfoot{ATA over Ethernet}{http://en.wikipedia.org/wiki/ATA\_over\_Ethernet}(англ.) в Wikipedia |
igor@0 | 410 \item \htmladdnormallinkfoot{ATA Over Ethernet: Putting Hard Drives on the LAN}{http://www.linuxjournal.com/article/8149} — статья в Linux Journal |
igor@0 | 411 \item \htmladdnormallinkfoot{Resources for "ATA Over Ethernet: Putting Hard Drives on the LAN"}{http://www.linuxjournal.com/article/8201} (англ.) |
igor@0 | 412 \item \htmladdnormallinkfoot{Resources for "ATA Over Ethernet: Putting Hard Drives on the LAN"}{http://www.linuxjournal.com/article/8201} (англ.) — дополнительные ссылки в Linux Journal |
igor@0 | 413 \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 | 414 \item \htmladdnormallinkfoot{Using AoE in FreeBSD}{http://www.coraid.com/support/freebsd/usingaoe.html} — Поддержка AoE в FreeBSD |
igor@0 | 415 \item \htmladdnormallinkfoot{Протоколы сетей хранения данных. Часть I — ATA over Ethernet}{http://www.samag.ru/cgi-bin/go.pl?q=articles;n=09.2005;a=15} — статья в журнале Системный администратор |
igor@0 | 416 \item \htmladdnormallinkfoot{The Coraid Linux NAS HOWTO}{http://www.coraid.com/support/cln/CLN-HOWTO.html} (англ.) — HOWTO по разворачиванию NAS на базе ATA over Ethernet |
igor@0 | 417 \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 | 418 \item \htmladdnormallinkfoot{Access over Ethernet Insecurities in AoE SLIDES}{http://www.slideshare.net/amiable\_indian/access-over-ethernet-insecurites-in-aoe/} (англ.) |
igor@0 | 419 \item \htmladdnormallinkfoot{"iSCSI killer" Native in Linux}{http://hardware.slashdot.org/article.pl?sid=06/07/31/1143230} (англ.) — обсуждение AoE на Slashdot |
igor@0 | 420 \item \htmladdnormallinkfoot{OpenNews: ATA over Ethernet в Linux}{http://www.opennet.ru/openforum/vsluhforumID3/36130.html} — обсуждение статьи на OpenNet |
igor@0 | 421 \item \htmladdnormallinkfoot{OpenNews: Построение SAN для Xen на основе DRBD, LVM и GNBD" }{http://www.opennet.ru/openforum/vsluhforumID3/36804.html} — другое обсуждение на OpenNet, где затрагиваются вопросы сравнения AoE и iSCSI |
igor@0 | 422 \end{itemize} |
igor@0 | 423 |
igor@0 | 424 |