Создание программного RAID 1 в ОС FreeBSD 8

Операционная система FreeBSD при корректной настройке обеспечивает надежную и стабильную работу приложений и сетевых инструментов. Однако при соблюдении всех правил эксплуатации данной системы существует риск выхода из строя накопителя, на котором она установлена и функционирует. Чтобы повысить отказоустойчивость системы в ОС FreeBSD, впрочем как и в любой другой, необходимо создать избыточный массив на основе физических накопителей — RAID (redundant array of independent disks).

Есть плюсы и минусы использования программного RAID-массива. Тут решать вам, целесообразно ли использовать такой метод повышения надёжности системы.

Лично мой выбор — это аппаратное решение, но при установке FreeBSD 8.3 на один из серверов установщик ОС наотрез отказался видеть RAID, построенный интегрированными в материнскую плату средствами. Как оказалось, есть так называемые фэйк-рэйды, работающие только через ОС при помощи определенного драйвера. Этот недо-рэйд никак не определился во FreeBSD, а использование RAID’а все же необходимо для страховки от внезапного выхода из строя жесткого диска и быстрейшего восстановления работоспособности сервера. И тогда было принято решение именно в пользу программных решений для создания отказоустойчивого массива и поддержки его.

Выбор пал на использование RAID 1, так как шансы на восстановление всех данных приближаются к 100%, да и контейнеров для HDD на сервере было всего два.

В данной операционной системе есть несколько программных решений, такие как raw ata, ccd, классический vinum, GEOM Vinum и GEOM gmirror. Предпочтение отдал GEOM mirror для создания зеркального массива, так как этот инструмент достаточно проработан и обладает гибкостью в использовании.

В данном материале будет описано создание зеркала GEOM на разделах (слайсах) диска. В отличие от создания GEOM зеркала на всем физическом диске данный метод обеспечивает гораздо большую гибкость и позволяет использовать жесткие диски разных размеров с возможностью разбиения оставшегося пространства.

Итак, приступим к созданию самого RAID’а.

Жесткие диски должны быть одинакового размера, желательно одной фирмы и одной марки. Правда, в данном случае для GEOM, построенном на слайсах, один может отличаться по размеру от другого, тогда необходимо жесткий диск с меньшим объемом подключать к порту с меньшим номером чем у второго.

1. При установке FreeBSD смотрим как называются диски внутри системы. В моем случае первый определился как ad4, второй как ad6.
Форматируем оба диска. На первом создаем загрузочную запись и делаем разбиение на разделы. Второй диск не разбиваем и не устанавливаем загрузчик, иначе потом не удастся собрать зеркало.

2. Когда действия по установке основной системы будут закончены, перезагружаемся.

3. Устанавливаем значение переменной ядра для разрешения записи в таблицу партиций:

sysctl kern.geom.debugflags=16

4. Далее создаем устройство gm0, которое собственно и будет являться массивом RAID 1 и подключаем к нему жесткий диск ad4:

gmirror label -v -b round-robin gm0 /dev/ad4

где ad4 — первый диск с установленной системой, а gm0 — адрес создаваемого RAID-массива

5. Настраиваем новую загрузочную таблицу разделов для зеркала на GEOM.
Сначала делаем копию существующей таблицы разделов:

cp /etc/fstab /etc/fstab.copy

Меняем в файле /etc/fstab все устройства с обозначениями /dev/ad**** на /dev/mirror/gm0*** следующей командой:

sed -e 's/dev\/ad4s1/dev\/mirror\/gm0s1/g' < /etc/fstab.copy > /etc/fstab

Проверяем содержимое /etc/fstab:

vi /etc/fstab

Вывод этой команды должен быть похож на следующее:

# Device Mountpoint Fstype Options Dump Pass#
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1e /tmp ufs rw 2 2
/dev/mirror/gm0s1f /usr ufs rw 2 2
/dev/mirror/gm0s1d /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0

Чтобы выйти из редактора набираем на клавиатуре :q и нажимаем клавишу Enter.

6. Добавляем модуль ядра gmirror в автозагрузку:

echo geom_mirror_load=\"YES\" >> /boot/loader.conf

7. Осуществляем перезагрузку системы:

shutdown -r now

Заодно проверяем корректность загрузки по выдаваемым сведениям на экран. Если система не загрузится, то пробуем подкорректировать файл fstab.

8. Подключаем второй диск в наш программный массив данных.
Заходим в систему под пользователем root.
Проверяем названия подключенных носителей:

ls /dev/ad*

Если все верно и кроме названия уже подключенного диска ad4 присутствует ad6 (или другой), подключаем второй носитель к зеркальному массиву:

gmirror insert gm0 /dev/ad6

Если появилось сообщение:

GEOM-MIRROR: Device gm0: rebuilding provider ad6.

Тогда команда отработала нормально. Переходим к следующему пункту.

Если же такое сообщение:

GEOM-MIRROR: Device gm0: provider ad6 is stale.

Такое может быть из-за присутствующего на втором диске загрузчика и определенного разбиения на разделы.

Чтобы попробовать исправить ситуацию, можно очистить загрузочную запись на втором носителе:

dd if=/dev/zero of=/dev/ad6 bs=512 count=79

Лучше конечно изначально следовать инструкции, чтобы не совершать лишних движений.
Команда подключения накопителя к массиву может не пройти еще потому, что у подключаемого накопителя меньше объем чем у подключенного. Что должно было быть проверено еще в начале данной инструкции.

9. Проверяем статус зеркального RAID-массива:

gmirror status

Он должен быть в состоянии DEGRATED, а второй диск ad6 находиться в режиме SYNCHRONIZING с указанием процента выполненной работы по синхронизации дисков.

Также в конце успешного присоединения второго диска к зеркалу будет показано соответствующее сообщение. Данная операция может проходить по времени около часа.

Можно проверить работоспособность построенного массива RAID 1 путем физического отключения одного из жестких дисков от вашей системы, находящейся в выключенном состоянии. Современные BIOS на материнских платах при недоступности первого накопителя будут загружаться автоматически со второго.
После уже проделанного эксперимента любой из дисков в данном массиве загружался без проблем.

10. Для подключения нового диска к существующему RAID’у при выходе из строя одного из жестких дисков необходимо в порт неисправного накопителя вставить исправный носитель информации. Затем последовательно выполнить команды:

gmirror forget gm0
gmirror insert gm0 /dev/ad6

Последняя команда синхронизирует данные между дисками и можно будет продолжать работу с данной ОС, не боясь потерять все конфигурации одним разом при внезапном выходе из строя физического накопителя.

Оставить комментарий