суббота, 7 апреля 2012 г.

Зеркалирование дисков на FreeBSD

Во 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 наш первичный диск.
Теперь сбой жёсткого диска нам не страшен.

Комментариев нет:

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