Настройка программного RAID-массива

Данная методика начала применяться нами недавно, поэтому будьте внимательны: возможно, еще не все грабли тут собраны. Учтите:

Я НЕ ПРЕДОСТАВЛЯЮ НИКАКИХ ГАРАНТИЙ НА ИЗЛОЖЕННУЮ МЕТОДИКУ - ПРИМЕНЯЙТЕ ЕЕ НА СВОЙ СОБСТВЕННЫЙ СТРАХ И РИСК.

Если же у вас появятся какие-либо интересные соображения или какой-то опыт ее применения - сообщите мне по указанному в конце страницы адресу.

Общая информация.

Прежде всего я рекомендую ознакомиться с документом Software-RAID.HOWTO, чтобы представлять себе - что такое программный RAID и какой инструментарий для управления ним существует в современном Linux'е.

В нашем случае создается RAID-массив уровня 1, который называется также зеркалированием, что и отражает его суть. В массив включаются 2 жестких диска, являющихся копией друг друга. При его работе запись выполняется на оба входящих диска одновременно (ну или почти одновременно), а чтение производится с того из дисков, обращение к которому в данный момент наиболее оптимально (с точки зрения драйвера). В результате (по сравнению с работой без RAID) запись на диск замедляется, а чтение - ускоряется. Но основное предназначение такой конструкции - отнюдь не повышение производительности, а повышение надежности: в случае аппаратного выхода из строя одного из дисков система будет продолжать функционировать на оставшемся, а при установке нового винчестера можно будет достаточно просто включить его в массив.

Современные дистрибутивы позволяют при установке системы выбирать режим RAID. Однако механизм, имеющийся в инсталляторе используемого мной дистрибутива (ALT Master 2.4) для этих целей, меня не устроил по причинам отсутствия следующих возможностей:

  1. создания массива для боле чем 9 логических разделов;
  2. включения в RAID swap-раздела;
  3. создания RAID-массива для уже установленной системы;
  4. мониторинг состояния массива;
  5. механизм для простого включения нового диска в массив.

Предлагаемая методика базируется на двух скриптах:

Применение методики сводится к следующим шагам:

  1. установка ОС выполняется на один диск (будем называть его диск1) как обычно, без использования RAID (или используется уже установленная система). При установке учтите следующие моменты:
  2. на всякий случай сохраните наиболее важные данные на каком-либо внешнем носителе. В частности, полезно сохранить запись MBR диска1:
           dd if=<диск1> of=disk1.mbr bs=1024 count=1
           
    Это поможет в случае аварии быстро восстановить таблицу разделов и состояние загрузчика, существующее на данный момент.
  3. исключите (закомментируйте) в /etc/fstab записи, определяющие "не-linux" разделы и разделы на дисках, отличных от диск1. Выполните аналогичные правки в /etc/lilo.conf.
  4. в системный блок устанавливается второй диск (будем называть его диск2). В случае использования IDE необходимо подключать разные диски - на разные контроллеры.
  5. отредактируйте скрипт createraid (комментарии в нем достаточно понятны), установив значения параметров в соответствии со своими реалиями. Особое внимание обратите на то, что в перечне номеров логических разделов, подлежащих зеркалированию, номер корневого (root) раздела следует указывать ПОСЛЕДНИМ.
  6. запускается скрипт createraid, который выполняет:
  7. выполняется перезагрузка компьютера
  8. при запуске сервиса mdadm обнаруживается факт "выхода из строя" диска1 и предлагается его заменить
  9. процедура замены диска1 приводит к тому, что:

Что делать, если по каким-либо причинам у вас что-то пошло не так, и система не загружается вообще ?

  1. загрузившись с инсталляционного диска в режиме resque, восстановите сохраненную ранее запись MBR
  2. восстановите автоматически сохраненный на корневом разделе диска1 файл описания файловых систем /etc/fstab. Если корневой раздел подмонтирован в директорию /mnt - выполните:
           cd /mnt/etc
           rm fstab
           ln -s fstab.orig fstab
           
  3. отмонтируйте корневой раздел и перезагрузитесь.

Если же у вас все получилось - после завершения синхронизации вы получите работающий RAID-массив. Сервис mdadm будет отслеживать состояние винчестеров. Параметры данного сервиса устанавливаются в файле /etc/sysconfig/mdadm:

Если же отказ диска будет обнаружен при старте сервиса mdadm - вам будет предложено заменить его.

ВОЗМОЖНЫЕ ПРОБЛЕМЫ.

Не все BIOSы позволяют загрузиться с сохранившегося диска, если второй вышел из строя (наиболее часто это может наблюдаться при отказе диска hda в паре hda/hdc). Поэтому после того как RAID сформирован - создайте загрузочную дискету с помощью утилиты mkbootdisk - с нее вы сможете загрузиться всегда.
Вто Июн 28 10:02:45 EEST 2005		yuk at iceb vinnitsa com