Soft RAID в Linux: процесс созидания
Теперь можно приступать к созданию RAID-массива. Для чего потребуется соответствующий программный инструментарий. И тут возникает та самая альтернатива, о которой я упоминал ранее: существует два набора подходящих для этого инструментов -- традиционный raidtools
и более новый mdadm
.
По крайней мере, один из этих пактов в любом полнофункциональном дистрибутиве найдется: в последнее время это скорее будет mdadm
, хотя ещё несколько лет назад raidtools
применялся чаще. Так что на первом мы и остановимся, а второй рассмотрим кратко на одной из последующих страниц.
Итак, mdadm
. Если его случайно не оказалось в вашем дистрибутиве -- не беда, его всегда можно скачать -- либо с
tar xzvf mdadm-1.X.X.tgz
столь же своеобычно -- последовательность команд make
и make install
(обратим внимание -- программа столь проста, что в предварительном конфигурировании посредством ./configure
не нуждается).
По завершении установки мы обнаруживаем единственный исполняемый бинарник /sbin/mdadm
(изменить каталог для него можно, залезши руками в ~/mdadm_src_dir/Makefile
, но -- нужно ли? в каталоге /sbin
программе такого рода самое место) и пару относящихся к нему man-страниц (/usr/share/man/man5/mdadm.conf.5
и /usr/share/man/man8/mdadm.8
). Содержащих вполне достаточно информации для того, чтобы приступить к делу создания собственного RAID’а. Приступим к этому и мы.
Нетрудно догадаться, что раз из всего пакета в итоге образовался только один бинарник, именно его и следует запустить для создания массива. Как -- узнаем из man -8 mdadm
(кое-какие сведения можно почерпнуть и из mdadm –help
). И тот, и другой источник показывают, что для образования RAID’а команда mdadm
требует одной из двух опций: -C
(эквивалент –create
) или -B
(сиречь –build
) -- в обоих случаях обратите внимание на регистр краткой формы. В чем разница между ними?
Опция -B
создает массив без собственного суперблока. Что, как будет ясно из дальнейшего, для пользователя снимает ряд преимуществ инструмента mdadm
-- и потому к этой опции мы возвращаться не будем. А вот опция -C
этот суперблок учреждает -- и ею определяется вся сила программы mdadm
.
Итак, опция -C
. Элементарная логика подсказывает, что она, будучи основной, требует аргумента -- имени файла устройства, соответствующего создаваемому массиву (например, /dev/md0
), а также указания некоторых дополнительных данных, как то: его уровня (режима), количества устройств в нем и, наконец, имен файлов устройств, массив составляющих. Что и достигается указанием опций –level=#
(или, сокращенно, -l #
) и –raid-devices=##
(в краткой форме -n ##
), после которой перечисляются имена файлов, вроде /dev/hda3
, /dev/hdb3)
. В итоге простейший случай создания RAID’а параллельного режима выглядит следующим образом:
$ mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/hd[a,b]3
Для массива нулевого уровня допустимые значения опции –level
также raid0
или stripe
. А для массива линейного режима она примет значение linear
(то есть -l linear
).
Для параллельного режима дополнительно можно задать еще один параметр -- размер блока “распараллеливаемых” данных, т.н. chunk
, в виде одноименной опции -- chunk=значение_в_килобайтах
(в краткой форме -c ##
).
Теоретически рассуждая, чем больше величина chunk
’а (давайте не будем подбирать к нему русского эквивалента), тем выше должно быть быстродействие массива. Однако практические измерения этого не подтверждают. И потому вполне можно опустить данную опцию -- при этом умолчальное значение составит 64 Кбайт. Впрочем, если кто путем количественного тестирования опровергнет мое утверждение -- буду признателен за информацию. Очевидно, что для массива в линейном режиме опция -c
физического смысла не имеет.
В любом случае после указанной выше команды RAID создан, в чем легко убедиться командой
$ less /proc/mdstat
Более того, он сразу же готов к использованию -- командой типа mkefs
(или, в зависимости от предпочтений, mkreiserfs
, mkxfs
и т.д.) на нем можно создать ту или иную файловую систему. Хотя, с другой стороны, никто не запрещает поделить его программой fdisk
на разделы (по моим наблюдениям, cfdisk
на это не способен). Однако повторяю, если мы создавали RAID под единственную файловую систему типа /home
, в каких либо действиях по организации раздела необходимости нет.
Создав файловую систему на новообразованном массиве, ее нужно смонтировать в желаемый каталог, увековечив это в файле /etc/fstab
строкой типа
/dev/md/0 /home reiserfs noatime,notail 0 0
Не забыв, разумеется, перенести содержимое прежнего каталога /home
в какое-либо временное хранилище для последующего размещения по новому месту прописки. И теперь можно перезагрузиться и убедиться в том, что наш домашний каталог волшебным образом расширился.
Внимательный читатель, особенно знакомый с документацией по raidtools
, спросит: пардон, а где же тут конфиг, описывающий RAID-массив. Отвечаю: при использовании mdadm
, установке соответствующих идентификаторов на составляющих массив разделах (вспомним добрым словом RAID Auto detection), и, наконец, создании массива с собственным суперблоком необходимости ни в каком конфиге не возникает.
Однако при желании почему бы и не создать конфигурационный файл для массива -- в некоторых случаях это может упростить дальнейшее им управление. Для чего опять обращаемся к команде mdadm
. Кроме упомянутых выше основных опций, она имеет еще несколько дополнительных. И в форме
$ mdadm --detail --scan
способна вывести информацию о существующем массиве. Достаточно перенаправить ее вывод в файл (таковым традиционно будет /etc/mdadm.conf
) -- и соответствующий конфигурационный файл будет создан.
Теперь самое время вспомнить о других опциях команды mdadm
. С одной из них мы познакомились раньше - это –help
для получения подсказки. Каковую, кстати, можно конкретизировать, указав эту опцию совместно с какой либо из других основных опций. Например, команда
$ mdadm --create --help
распишет нам процесс создания массива в деталях.
С другой опцией (–detail
, или -D
- все опции, отнесенные к числу основных, в сокращенной форме даются в верхнем регистре) мы столкнулись в предыдущем разделе: она призвана выводить информацию о существующих массивах. Близкий смысл имеют и опции –queryc
и –examine
(в сокращенной форме, соответственно, -Q
и -E
) - за деталями можно обратиться к man-странице.
А вот опции –assemble
(-A
) и –monitor
, или –follow
(-F
) предназначены для управления существующим массивом. В частности, они позволяют добавить к нему новое устройство или удалить существующее. Правда, при выполнении некоторых условий. Впрочем, и об этом подробно расскажет тетя Маня, если попросить ее должным образом.
В общем, создание RAID-массива средствами mdadm
- процесс очень простой (а управление им пользователю на десктопе, скорее всего, не понадобится). Так что, если нет необходимости в дополнительных возможностях, предоставляемых LVM, при наличии двух дисков есть резон им и ограничится. Тем более, что и логические тома никто не запрещает расположить на программном RAID’е.
- Программные RAID-массивы в FOSS-системах
- Немного о RAID вообще
- RAID-контроллеры для FOSS: аппаратные и не очень
- Нужен ли RAID народу?
- Soft RAID в Linux: подготовительный этап
- Soft RAID в Linux: процесс созидания
- Soft RAID в Linux: альтернатива
- Mdadm vs raidtools
- Fedora: программный RAID при инсталляции
Теги: kernel, linux, mdadm, soft raid