Soft RAID в Linux: процесс созидания

Теперь можно приступать к созданию RAID-массива. Для чего потребуется соответствующий программный инструментарий. И тут возникает та самая альтернатива, о которой я упоминал ранее: существует два набора подходящих для этого инструментов -- традиционный raidtools и более новый mdadm.

По крайней мере, один из этих пактов в любом полнофункциональном дистрибутиве найдется: в последнее время это скорее будет mdadm, хотя ещё несколько лет назад raidtools применялся чаще. Так что на первом мы и остановимся, а второй рассмотрим кратко на одной из последующих страниц.

Итак, mdadm. Если его случайно не оказалось в вашем дистрибутиве -- не беда, его всегда можно скачать -- либо с авторского сайта, либо с канонической Linux-локации в виде тарбалла исходников (для текущей версии -- mdadm-1.3.0.tgz). Обращение с которым, после обычной распаковки

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’е.


Теги: , , ,