RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Программный RAID1 на FreeBSD постредством утилиты gmirror [2009]
Однажды в моей компании появились два двольно мощных сервера
(назначение которым было хостингг и биллинг в основном). Осмотрев новые
"игрушки" сразу стало очевидно что не смотря на свою навороченность эти
два монстра совершенно не умели работать с RAID. Конечно же, была
возможность купить аппаратные RAID контроллеры, но, я решил все же
пойти по другому пути - программному, ибо он гораздо надежние,
синхронизация томов размеро 320 гб прошла ~30мин.
Итак, начнем. В корпусе стоят два винта ёмостью 320 гб. Определились
они при установке системы как ad4 и ad6. При установке системы
форматируем оба винта под UFS, загрузчик оставляем стандартный и
устанавливаем его на ad4. Далее ad4 разбиваем на слайсы и далее
согласно идивидуальным требованиям производим установку ОС. После
установки делаем необходимые постнастройки и перезагружаемся.
После перезагрузки системы, с правами root заваливаемся в систему, в консоли набираем команду:
sysctl.geom.debugflags=16
Далее создаем устройство gm0 которое собственно и буде являться RAID1-массивом и подключаем к нему жесткий диск ad4:
gmirror -v -b round-robin gm0 /dev/ad4
Добавляем модуль ядра gmirro в автозагрузку:
echo geom_mirror_load=YES >> /boot/loader.conf
Следующий этап настройки требует ОСОБОГО ВНИМАНИЯ!!!:
в /etc/fstab меняем все устройтва начинающиеся с /dev/ad4XXX на
/dev/mirror/gm0XXX, будьте крайне внимательны, не повторяйте самой
распространенной ошибки, которая меня тоже не обошла стороной, я забыл
после /dev/ указать mirror!
Далее набираем reboot и смотрим на поведение загрузки. Если все
нормально прошло переходим к следующему этапу. Включаем в зеркало
второй жесткий диск равного объема, /dev/ad6.
Так же, с правами root набираем команду:
gmirror insert gm0 /dev/ad6
Тут есть ряд замечаний, во первых, этот диск не должен быть разделен на
слайсы, во вторых, его размер должен точно соответствовать главному
диску, допустимо чтобы он был немного больше, но не меньше! В противном
случае команда включения этого диска не отработает и выдаст сообщение о
тот что диск слишком мал по отношению к основному диску. В случае если
второй диск, подключаемый к зеркалу будет немного или на много больше,
диск являющийся основным и имеющий меньший размер будет приоритетным.
Т.е. на втором диске будет занят под зеркало размер равный объему
первого диска, все остальное пространство будет бессмысленно пуствать.
Именно по этому рационально все же ставить диски одинакового размера.
Предположим что с объемами дисков у вас все в порядке и комаднда
gmirror insert отработала нормально, для наблюдением за процессом
синхронизации томов периодически набирайте команду:
gmirror status или gmirror list
После того как синхранизация томов успешна завершена, можете проверить
работоспособность вашего RAID1. Для этого выключаете машину, отключаете
один из дисков, затем пробуете не меняя при этом никаких настроек в
BIOS загрузиться, если все прошло нормально, снова выключаете машину,
возвращаете тключенный диск на место и отключаете второй, в случае
успешной загрузки считаем настройку аппаратного RAID1 оконченной.
И на последок. В случае выхода одного из дисков в зеркале, например ad6
извлекаем его (при выключенной машине) заменяем на новый,
соответствующего размера или больший и выполняем следующие команды: