xg-scale

annotate raid.tex @ 4:253d66dd74bb

Добавлено подробное описание управления памятью домена и выделением устройств домену
author Igor Chubin <igor@chub.in>
date Sun Jul 06 23:27:46 2008 +0300 (2008-07-06)
parents
children
rev   line source
igor@0 1 \section{Программный RAID в Linux}
igor@0 2
igor@0 3 Здесь рассматриваются вопросы создания и обслуживания программного RAID-массива в операционной системе Linux.
igor@0 4
igor@0 5 \subsection{mdadm}
igor@0 6 Управление программным RAID-массивом в Linux
igor@0 7 выполняется с помощью программы \textbf{mdadm}.
igor@0 8
igor@0 9 У программы \textbf{mdadm} есть несколько режимов работы.
igor@0 10
igor@0 11 \begin{itemize}
igor@0 12 \item \textbf{Assemble (сборка)} — Собрать компоненты ранее созданного массива в массив. Компоненты можно указывать явно, но можно и не указывать — тогда выполняется их поиск по суперблокам.
igor@0 13 \item \textbf{Build (построение)} — Собрать массив из компонентов, у которых нет суперблоков. Не выполняются никакие проверки, создание и сборка массива в принципе ничем не отличаются.
igor@0 14 \item \textbf{Create (создание)} — Созать новый массив на основе указанных устройств. Использовать суперблоки размещённые на каждом устройстве.
igor@0 15 \item \textbf{Monitor (наблюдение)} — Следить на изменением состояния устройств. Для RAID0 этот режим не имеет смысла.
igor@0 16 \item \textbf{Grow (расширение или уменьшение)} — Расширение или уменьшение массива, включаются или удаляются новые диски.
igor@0 17 \item \textbf{Incremental Assembly (инкрементальная сборка)} — Добавление диска в массив.
igor@0 18 \item \textbf{Manage (управление)} — Разнообразные операции по управлению массивом, такие как замена диска и пометка как сбойного.
igor@0 19 \item \textbf{Misc (разное)} — Действия, которые не относятся ни к одному из перечисленных выше режимов работы.
igor@0 20 \item \textbf{Auto-detect (автоообнаружение)} — Активация автоматически обнаруживаемых массивов в ядре Linux.
igor@0 21 \end{itemize}
igor@0 22
igor@0 23 Формат вызова:
igor@0 24
igor@0 25 \begin{verbatim}
igor@0 26 mdadm [mode] [array] [options]
igor@0 27 \end{verbatim}
igor@0 28
igor@0 29 Режимы:
igor@0 30 \begin{itemize}
igor@0 31 \item \texttt{-A}, \texttt{--assemble} — режим сборки
igor@0 32 \item \texttt{-B}, \texttt{--build} — режим построения
igor@0 33 \item \texttt{-C}, \texttt{--create} — режим создания
igor@0 34 \item \texttt{-F}, \texttt{--follow}, \texttt{--monitor} — режим наблюдения
igor@0 35 \item \texttt{-G}, \texttt{--grow} — режим расширения
igor@0 36 \item \texttt{-I}, \texttt{--incremental} — режим инкрементальной сборки
igor@0 37 \end{itemize}
igor@0 38
igor@0 39 \subsection{Настройка программного RAID-массива}
igor@0 40 Рассмотрим как выполнить настройку RAID-массива 5 уровня
igor@0 41 на трёх дисковых разделах.
igor@0 42 Мы будем использовать разделы:
igor@0 43 \begin{verbatim}
igor@0 44 /dev/hde1
igor@0 45 /dev/hdf2
igor@0 46 /dev/hdg1
igor@0 47 \end{verbatim}
igor@0 48
igor@0 49 В том случае если разделы иные,
igor@0 50 не забудьте использовать соответствующие имена файлов.
igor@0 51
igor@0 52 \subsubsection{Создание разделов}
igor@0 53 Нужно определить на каких физических разделах
igor@0 54 будет создаваться RAID-массив.
igor@0 55 Если разделы уже есть, нужно найти свободные (\textit{fdisk -l}).
igor@0 56 Если разделов ещё нет, но есть неразмеченное место,
igor@0 57 их можно создать с помощью программ \textit{fdisk} или \textit{cfdisk}.
igor@0 58
igor@0 59 Просмотреть какие есть разделы:
igor@0 60
igor@0 61 \begin{verbatim}
igor@0 62 %# fdisk -l
igor@0 63 \end{verbatim}
igor@0 64
igor@0 65 \begin{verbatim}
igor@0 66 Disk /dev/hda: 12.0 GB, 12072517632 bytes
igor@0 67 255 heads, 63 sectors/track, 1467 cylinders
igor@0 68 Units = cylinders of 16065 * 512 = 8225280 bytes
igor@0 69 \end{verbatim}
igor@0 70
igor@0 71 \begin{verbatim}
igor@0 72 Device Boot Start End Blocks Id System
igor@0 73 /dev/hda1 * 1 13 104391 83 Linux
igor@0 74 /dev/hda2 14 144 1052257+ 83 Linux
igor@0 75 /dev/hda3 145 209 522112+ 82 Linux swap
igor@0 76 /dev/hda4 210 1467 10104885 5 Extended
igor@0 77 /dev/hda5 210 655 3582463+ 83 Linux
igor@0 78 ...
igor@0 79 ...
igor@0 80 /dev/hda15 1455 1467 104391 83 Linux
igor@0 81 \end{verbatim}
igor@0 82
igor@0 83 Просмотреть, какие разделы куда смонтированы,
igor@0 84 и сколько свободного места есть на них (размеры в килобайтах):
igor@0 85
igor@0 86 \begin{verbatim}
igor@0 87 %# df -k
igor@0 88 Filesystem 1K-blocks Used Available Use% Mounted on
igor@0 89 /dev/hda2 1035692 163916 819164 17% /
igor@0 90 /dev/hda1 101086 8357 87510 9% /boot
igor@0 91 /dev/hda15 101086 4127 91740 5% /data1
igor@0 92 ...
igor@0 93 ...
igor@0 94 ...
igor@0 95 /dev/hda7 5336664 464228 4601344 10% /var
igor@0 96 \end{verbatim}
igor@0 97
igor@0 98 \subsubsection{Размонтирование}
igor@0 99 Если вы будете использовать созданные ранее разделы,
igor@0 100 обязательно размонтируйте их. RAID-массив нельзя создавать
igor@0 101 поверх разделов, на которых находятся смонтированные файловые системы.
igor@0 102
igor@0 103 \begin{verbatim}
igor@0 104 %# umount /dev/hde1
igor@0 105 %# umount /dev/hdf2
igor@0 106 %# umount /dev/hdg1
igor@0 107 \end{verbatim}
igor@0 108
igor@0 109 \subsubsection{Изменение типа разделов}
igor@0 110 Желательно (но не обязательно) изменить тип разделов, которые будут
igor@0 111 входить в RAID-массив и установить его равным FD (Linux RAID autodetect).
igor@0 112 Изменить тип раздела можно с помощью fdisk.
igor@0 113
igor@0 114 Рассмотрим как это делать на примере раздела \texttt{/dev/hde1}.
igor@0 115 \begin{verbatim}
igor@0 116 %# fdisk /dev/hde
igor@0 117 The number of cylinders for this disk is set to 8355.
igor@0 118 There is nothing wrong with that, but this is larger than 1024,
igor@0 119 and could in certain setups cause problems with:
igor@0 120 1) software that runs at boot time (e.g., old versions of LILO)
igor@0 121 2) booting and partitioning software from other OSs
igor@0 122 (e.g., DOS FDISK, OS/2 FDISK)
igor@0 123
igor@0 124 Command (m for help):
igor@0 125
igor@0 126 Use FDISK Help
igor@0 127
igor@0 128 Now use the fdisk m command to get some help:
igor@0 129
igor@0 130 Command (m for help): m
igor@0 131 ...
igor@0 132 ...
igor@0 133 p print the partition table
igor@0 134 q quit without saving changes
igor@0 135 s create a new empty Sun disklabel
igor@0 136 t change a partition's system id
igor@0 137 ...
igor@0 138 ...
igor@0 139 Command (m for help):
igor@0 140
igor@0 141 Set The ID Type To FD
igor@0 142
igor@0 143 Partition /dev/hde1 is the first partition on disk /dev/hde.
igor@0 144 Modify its type using the t command, and specify the partition number
igor@0 145 and type code.
igor@0 146 You also should use the L command to get a full listing
igor@0 147 of ID types in case you forget.
igor@0 148
igor@0 149 Command (m for help): t
igor@0 150 Partition number (1-5): 1
igor@0 151 Hex code (type L to list codes): L
igor@0 152
igor@0 153 ...
igor@0 154 ...
igor@0 155 ...
igor@0 156 16 Hidden FAT16 61 SpeedStor f2 DOS secondary
igor@0 157 17 Hidden HPFS/NTF 63 GNU HURD or Sys fd Linux raid auto
igor@0 158 18 AST SmartSleep 64 Novell Netware fe LANstep
igor@0 159 1b Hidden Win95 FA 65 Novell Netware ff BBT
igor@0 160 Hex code (type L to list codes): fd
igor@0 161 Changed system type of partition 1 to fd (Linux raid autodetect)
igor@0 162
igor@0 163 Command (m for help):
igor@0 164
igor@0 165
igor@0 166 Make Sure The Change Occurred
igor@0 167
igor@0 168 Use the p command to get the new proposed partition table:
igor@0 169
igor@0 170 Command (m for help): p
igor@0 171
igor@0 172 Disk /dev/hde: 4311 MB, 4311982080 bytes
igor@0 173 16 heads, 63 sectors/track, 8355 cylinders
igor@0 174 Units = cylinders of 1008 * 512 = 516096 bytes
igor@0 175
igor@0 176 Device Boot Start End Blocks Id System
igor@0 177 /dev/hde1 1 4088 2060320+ fd Linux raid autodetect
igor@0 178 /dev/hde2 4089 5713 819000 83 Linux
igor@0 179 /dev/hde4 6608 8355 880992 5 Extended
igor@0 180 /dev/hde5 6608 7500 450040+ 83 Linux
igor@0 181 /dev/hde6 7501 8355 430888+ 83 Linux
igor@0 182
igor@0 183 Command (m for help):
igor@0 184
igor@0 185
igor@0 186 Save The Changes
igor@0 187
igor@0 188 Use the w command to permanently save the changes to disk /dev/hde:
igor@0 189
igor@0 190 Command (m for help): w
igor@0 191 The partition table has been altered!
igor@0 192
igor@0 193 Calling ioctl() to re-read partition table.
igor@0 194
igor@0 195 WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
igor@0 196 The kernel still uses the old table.
igor@0 197 The new table will be used at the next reboot.
igor@0 198 Syncing disks.
igor@0 199 \end{verbatim}
igor@0 200
igor@0 201 Аналогичным образом нужно изменить тип раздела
igor@0 202 для всех остальных разделов, входящих в RAID-массив.
igor@0 203
igor@0 204 \subsubsection{Создание RAID-массива}
igor@0 205 Создание RAID-массива выполняется с помощью программы \textbf{mdadm} (ключ \verb|--create|).
igor@0 206 Мы воспользуемся опцией \verb|--level|, для того чтобы создать RAID-массив 5 уровня.
igor@0 207 С помощью ключа \verb|--raid-devices| укажем устройства, поверх которых будет собираться
igor@0 208 RAID-массив.
igor@0 209 \begin{verbatim}
igor@0 210 %# mdadm --create --verbose /dev/md0 --level=5 \
igor@0 211 --raid-devices=3 /dev/hde1 /dev/hdf2 /dev/hdg1
igor@0 212
igor@0 213 mdadm: layout defaults to left-symmetric
igor@0 214 mdadm: chunk size defaults to 64K
igor@0 215 mdadm: /dev/hde1 appears to contain an ext2fs file system
igor@0 216 size=48160K mtime=Sat Jan 27 23:11:39 2007
igor@0 217 mdadm: /dev/hdf2 appears to contain an ext2fs file system
igor@0 218 size=48160K mtime=Sat Jan 27 23:11:39 2007
igor@0 219 mdadm: /dev/hdg1 appears to contain an ext2fs file system
igor@0 220 size=48160K mtime=Sat Jan 27 23:11:39 2007
igor@0 221 mdadm: size set to 48064K
igor@0 222 Continue creating array? y
igor@0 223 mdadm: array /dev/md0 started.
igor@0 224 \end{verbatim}
igor@0 225
igor@0 226 Если вы хотите сразу создать массив, где диска не хватает (degraded)
igor@0 227 просто укажите слово \texttt{missing} вместо имени устройства.
igor@0 228 Для RAID5 это может быть только один диск; для RAID6 — не более двух;
igor@0 229 для RAID1 — сколько угодно, но должен быть как минимум один рабочий.
igor@0 230
igor@0 231 \subsubsection{Проверка правильности сборки}
igor@0 232 Убедиться, что RAID-массив проинициализирован корректно
igor@0 233 можно просмотрев файл \texttt{/proc/mdstat}.
igor@0 234 В этом файле отражается текущее состояние RAID-массива.
igor@0 235 \begin{verbatim}
igor@0 236 %# cat /proc/mdstat
igor@0 237 Personalities : [raid5]
igor@0 238 read_ahead 1024 sectors
igor@0 239 md0 : active raid5 hdg1[2] hde1[1] hdf2[0]
igor@0 240 4120448 blocks level 5, 32k chunk, algorithm 3 [3/3] [UUU]
igor@0 241
igor@0 242 unused devices: <none>
igor@0 243 \end{verbatim}
igor@0 244
igor@0 245 Обратите внимание на то, как называется новый RAID-массив.
igor@0 246 В нашем случае он называется \texttt{/dev/md0}.
igor@0 247 Мы будем обращаться к массиву по этому имени.
igor@0 248
igor@0 249 \subsubsection{Создание файловой системы поверх RAID-массива}
igor@0 250 Новый RAID-раздел нужно отформатировать, т.е. создать на нём файловую систему.
igor@0 251 Сделать это можно при помощи программы из семейства \textbf{mkfs}.
igor@0 252 Если мы будем создавать файловую систему ext3, воспользуемся программой \textbf{mkfs.ext3}:
igor@0 253 \begin{verbatim}
igor@0 254 %# mkfs.ext3 /dev/md0
igor@0 255 mke2fs 1.39 (29-May-2006)
igor@0 256 Filesystem label=
igor@0 257 OS type: Linux
igor@0 258 Block size=1024 (log=0)
igor@0 259 Fragment size=1024 (log=0)
igor@0 260 36144 inodes, 144192 blocks
igor@0 261 7209 blocks (5.00%) reserved for the super user
igor@0 262 First data block=1
igor@0 263 Maximum filesystem blocks=67371008
igor@0 264 18 block groups
igor@0 265 8192 blocks per group, 8192 fragments per group
igor@0 266 2008 inodes per group
igor@0 267 Superblock backups stored on blocks:
igor@0 268 8193, 24577, 40961, 57345, 73729
igor@0 269
igor@0 270 Writing inode tables: done
igor@0 271 Creating journal (4096 blocks): done
igor@0 272 Writing superblocks and filesystem accounting information: done
igor@0 273
igor@0 274 This filesystem will be automatically checked every 33 mounts or
igor@0 275 180 days, whichever comes first. Use tune2fs -c or -i to override.
igor@0 276 \end{verbatim}
igor@0 277
igor@0 278 \subsubsection{Создание конфигурационного файла mdadm.conf}
igor@0 279 Система сама не запоминает какие RAID-массивы ей нужно создать
igor@0 280 и какие компоненты в них входят.
igor@0 281 Эта информация находится в файле \texttt{mdadm.conf}.
igor@0 282
igor@0 283 Строки, которые следует добавить в этот файл,
igor@0 284 можно получить при помощи команды
igor@0 285 \begin{verbatim}
igor@0 286 mdadm --detail --scan --verbose
igor@0 287 \end{verbatim}
igor@0 288
igor@0 289 Вот пример её использования:
igor@0 290
igor@0 291 \begin{verbatim}
igor@0 292 %# mdadm --detail --scan --verbose
igor@0 293 ARRAY /dev/md0 level=raid5 num-devices=4
igor@0 294 UUID=77b695c4:32e5dd46:63dd7d16:17696e09
igor@0 295 devices=/dev/hde1,/dev/hdf2,/dev/hdg1
igor@0 296 \end{verbatim}
igor@0 297
igor@0 298 Если файла \texttt{mdadm.conf} ещё нет, можно его создать:
igor@0 299 \begin{verbatim}
igor@0 300 %# mdadm --detail --scan --verbose > /etc/mdadm.conf
igor@0 301 \end{verbatim}
igor@0 302
igor@0 303 \subsubsection{Создание точки монтирования для RAID-массива}
igor@0 304 Поскольку мы создали новую файловую систему, вероятно,
igor@0 305 нам понадобится и новая точка монтирования.
igor@0 306 Назовём её \texttt{/raid}.
igor@0 307 \begin{verbatim}
igor@0 308 %# mkdir /raid
igor@0 309 \end{verbatim}
igor@0 310
igor@0 311 \subsubsection{Изменение /etc/fstab}
igor@0 312 Для того чтобы файловая система, созданная на новом RAID-массиве автоматически монтировалась
igor@0 313 при загрузке, добавим соотвествующую запись в файл \texttt{/etc/fstab}
igor@0 314 хранящий список автоматически монтируемых при загрузке файловых систем.
igor@0 315 \begin{verbatim}
igor@0 316 /dev/md0 /raid ext3 defaults 1 2
igor@0 317 \end{verbatim}
igor@0 318
igor@0 319 Если мы объединяли в RAID-массив разделы, которые использовались раньше,
igor@0 320 нужно отключить их монтирование: удалить или закомментировать соответствующие строки
igor@0 321 в файле \texttt{/etc/fstab}.
igor@0 322 Закомментировать строку можно символом \texttt{\#}.
igor@0 323 \begin{verbatim}
igor@0 324 #/dev/hde1 /data1 ext3 defaults 1 2
igor@0 325 #/dev/hdf2 /data2 ext3 defaults 1 2
igor@0 326 #/dev/hdg1 /data3 ext3 defaults 1 2
igor@0 327 \end{verbatim}
igor@0 328
igor@0 329 \subsubsection{Монтирование файловой системы нового RAID-массива}
igor@0 330 Для того чтобы получить доступ к файловой системе, расположенной на новом RAID-массиве,
igor@0 331 её нужно смонтировать. Монтирование выполняется с помощью команды \textbf{mount}.
igor@0 332
igor@0 333 Если новая файловая система добавлена в файл \texttt{/etc/fstab},
igor@0 334 можно смонтировать её командой \textbf{mount} \texttt{-a}
igor@0 335 (смонтируются все файловые системы, которые должны монтироваться при загрузке, но сейчас не смонтированы).
igor@0 336 \begin{verbatim}
igor@0 337 %# mount -a
igor@0 338 \end{verbatim}
igor@0 339 Можно смонтировать только нужный нам раздел (при условии, что он указан в \texttt{/etc/fstsb}).
igor@0 340 \begin{verbatim}
igor@0 341 %# mount /raid
igor@0 342 \end{verbatim}
igor@0 343 Если раздел в \texttt{/etc/fstab} не указан, то при монтировании мы должны задавать как минимум два параметра:
igor@0 344 точка монтирования и монтируемое устройство:
igor@0 345 \begin{verbatim}
igor@0 346 %# mount /dev/md0 /raid
igor@0 347 \end{verbatim}
igor@0 348
igor@0 349 \subsubsection{Проверка состояния RAID-массива}
igor@0 350 Информация о состоянии RAID-массива находится в файле \texttt{/proc/mdstat}.
igor@0 351 \begin{verbatim}
igor@0 352 %# raidstart /dev/md0
igor@0 353 %# cat /proc/mdstat
igor@0 354 Personalities : [raid5]
igor@0 355 read_ahead 1024 sectors
igor@0 356 md0 : active raid5 hdg1[2] hde1[1] hdf2[0]
igor@0 357 4120448 blocks level 5, 32k chunk, algorithm 3 [3/3] [UUU]
igor@0 358
igor@0 359 unused devices: <none>
igor@0 360 \end{verbatim}
igor@0 361
igor@0 362 \subsection{Дальнейшая работа с массивом}
igor@0 363 \subsubsection{Пометка диска как сбойного}
igor@0 364 Диск в массиве можно условно сделать сбойным, ключ \verb|--fail| (\texttt{-f}):
igor@0 365 \begin{verbatim}
igor@0 366 %# mdadm /dev/md0 --fail /dev/hde1
igor@0 367 %# mdadm /dev/md0 -f /dev/hde1
igor@0 368 \end{verbatim}
igor@0 369
igor@0 370 \subsubsection{Удаление сбойного диска}
igor@0 371 Сбойный диск можно удалить с помощью ключа \verb|{--remove| (\texttt{-r}):
igor@0 372 \begin{verbatim}
igor@0 373 %# mdadm /dev/md0 --remove /dev/hde1
igor@0 374 %# mdadm /dev/md0 -r /dev/hde1
igor@0 375 \end{verbatim}
igor@0 376
igor@0 377 \subsubsection{Добавление нового диска}
igor@0 378 Добавить новый диск в массив можно с помощью ключей \verb|--add| (\texttt{-a})
igor@0 379 и \verb|--re-add|:
igor@0 380 \begin{verbatim}
igor@0 381 %# mdadm /dev/md0 --add /dev/hde1
igor@0 382 %# mdadm /dev/md0 -a /dev/hde1
igor@0 383 \end{verbatim}
igor@0 384
igor@0 385 \subsubsection{Сборка существующего массива}
igor@0 386 Собрать существующий массив можно с помощью \textbf{mdadm} \texttt{--assemble}.
igor@0 387 Как дополнительный аргумент указывается,
igor@0 388 нужно ли выполнять сканирование устройств, и если нет, то
igor@0 389 какие устройства нужно собирать.
igor@0 390 \begin{verbatim}
igor@0 391 %# mdadm --assemble /dev/md0 /dev/hde1 /dev/hdf2 /dev/hdg1
igor@0 392 %# mdadm --assemble --scan
igor@0 393 \end{verbatim}
igor@0 394
igor@0 395 \subsubsection{Расширение массива}
igor@0 396 Расширить массив можно с помощью ключа \texttt{--grow} (\texttt{-G}).
igor@0 397 Сначала добавляется диск, а потом массив расширяется:
igor@0 398 \begin{verbatim}
igor@0 399 %# mdadm /dev/md0 --add /dev/hdh2
igor@0 400 \end{verbatim}
igor@0 401
igor@0 402 Проверяем, что диск (раздел) добавился:
igor@0 403
igor@0 404 \begin{verbatim}
igor@0 405 %# mdadm --detail /dev/hdh2
igor@0 406 %# cat /proc/mdstat
igor@0 407 \end{verbatim}
igor@0 408
igor@0 409 Если раздел действительно добавился,
igor@0 410 мы можем расширить массив:
igor@0 411
igor@0 412 \begin{verbatim}
igor@0 413 %# mdadm -G /dev/md0 --raid-devices=4
igor@0 414 \end{verbatim}
igor@0 415
igor@0 416 Убедитесь, что массив расширился:
igor@0 417
igor@0 418 \begin{verbatim}
igor@0 419 %# cat /proc/mdstat
igor@0 420 \end{verbatim}
igor@0 421
igor@0 422 Нужно обновить обновить конфигурационный файл с учётом сделанных
igor@0 423 изменений:
igor@0 424
igor@0 425 \begin{verbatim}
igor@0 426 %# mdadm --detail --scan >> /etc/mdadm/mdadm.conf
igor@0 427 %# vi /etc/mdadm/mdadm.conf
igor@0 428 \end{verbatim}
igor@0 429
igor@0 430 \subsection{Дополнительная информация}
igor@0 431 \begin{itemize}
igor@0 432 \item \htmladdnormallinkfoot{Программный RAID в Linux}{http://xgu.ru/wiki/raid} (рус.)
igor@0 433 \item \htmladdnormallinkfoot{man mdadm}{http://linux.die.net/man/8/mdadm} (англ.)
igor@0 434 \item \htmladdnormallinkfoot{man mdadm.conf}{http://linux.die.net/man/5/mdadm.conf} (англ.)
igor@0 435 \item \htmladdnormallinkfoot{Linux Software RAID}{http://www.linuxhomenetworking.com/wiki/index.php/Quick\_HOWTO\_:\_Ch26\_:\_Linux\_Software\_RAID} (англ.)
igor@0 436 \item \htmladdnormallinkfoot{HOWTO Gentoo Install on Software RAID}{http://gentoo-wiki.com/HOWTO\_Gentoo\_Install\_on\_Software\_RAID} (англ.)
igor@0 437 \item \htmladdnormallinkfoot{HOWTO Migrate To RAID}{http://gentoo-wiki.com/HOWTO\_Migrate\_To\_RAID} (англ.)
igor@0 438 \item \htmladdnormallinkfoot{Remote Conversion to Linux Software RAID-1 for Crazy Sysadmins HOWTO}{http://togami.com/~warren/guides/remoteraidcrazies/} (англ.)
igor@0 439 \item \htmladdnormallinkfoot{Migrating To RAID1 Mirror on Sarge}{http://www.debian-administration.org/articles/238} (англ.)
igor@0 440 \end{itemize}
igor@0 441
igor@0 442 Производительность программных RAID-массивов:
igor@0 443 \begin{itemize}
igor@0 444 \item Adventures With Linux RAID: \htmladdnormallinkfoot{Part 1}{http://opennfo.wordpress.com/2007/09/02/adventures-with-linux-raid-part-1/}, \htmladdnormallinkfoot{Part 2}{http://opennfo.wordpress.com/2007/09/08/adventures-with-linux-raid-part-2/} (англ.)
igor@0 445 \end{itemize}
igor@0 446