Отправить заявку

FreeBSD - полный raid или зеркалирование дисков

Во FreeBSD есть очень удобный способ зеркалирования дисков с помощью GEOM. Что интересно, зеркалирование происходит полностью, тоесть устройство зеркалируется целиком, включая mbr и все разделы, а не как в Linux или Windows только выбранная партиция. Да и лёгкость создания такого массива поражает.Устанавливаем FreeBSD на один из дисков в обычном режиме и перезагружаемся в свежеустановленную систему. Ну или используем уже имеющуюся работающую систему.Сразу хочу отметить, что что при установки системы зеркалирование у меня заработало только когда я при разметки диска использовал формат разделов bsd. Возможно оно работает и с mbr, но с gpt у меня ничего не получилось.

Для начала включим отладку и откроем тем самым доступ к устройству.
# sysctl kern.geom.debugflags=17
(Если этого не сделать, тол создать массив не удастся)

Теперь создадим зеркало:
# gmirror label -vb round-robin gm0 /dev/da0

Система должна сообщить нам об успешном сохранении метаданных
Metadata value stored on /dev/da0.
Done.

Загрузим драйвер gmirror
# gmirror load

И сделаем так, чтобы loader загружал драйвер при старте системы
# echo 'geom_mirror_load="YES"' >> /boot/loader.conf

Теперь переходим к правке /etc/fstab, для того, чтобы наши файловые системы монтировались не с диска, а с устройства gm0.
# vi /etc/fstab

Приводим его к следующему виду:
# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0p1 none swap sw 0 0
/dev/mirror/gm0p2 / ufs rw 1 1
/dev/acd0 /cdrom cd9660 ro,noauto 0 0

То есть нужно заменить строки содержащие "/dev/da0" на "/dev/mirror/gm0".
Так же нужно помнить, какой тип разделов используется на диске. Мой /etc/fstab для bsd.

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

И так, мы загрузились. Вставляем второй диск в зеркало, командой:
# gmirror insert gm0 /dev/da1

И тут же можем наблюдать процесс синхронизации зеркал командой
# gmirror status

По завершению синхронизации мы должны увидеть вот такую картину
Name Status Components
mirror/gm0 COMPLETE da0
da1

Теперь можно смоделировать сбой одного из дисков. Выключаем систему, и вынимаем один из дисков и ставим чистый или же затираем его начало нулями или дампом из /dev/urandom.
# dd if=/dev/zero of=/dev/da0

После этого система система не загрузится. Выбираем в BIOS, загрузку со второго диска, загружаем систему и выбрасываем сбойный диск из массива командой:
# gmirror forget gm0

И добавляем новый диск в массив:
# gmirror insert gm0 /dev/da0

Дожидаемся окончания процесса синхронизации, перезагружаемся и выбираем в BIOS наш первичный диск.
Теперь сбой жёсткого диска нам не страшен.

Другие публикации