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