FreeBSD & RAID-1 (gmirror)

Программный RAID-массив. Зеркалирование жестких дисков.

В состав FreeBSD входит утилита gmirror, которая позволяет создавать RAID-массив первого уровня. То есть вы ставите на сервер начального уровня, либо просто на компьютер 2 жестких диска и делаете зеркалирование.

Здесь будет описано, как это делалось в частном случае. И что из этого получилось.

Я взял 2 одинаковых жестких диска SATA. Они определились у меня как:

SATA /dev/ad4
SATA /dev/ad6

Начал установку FreeBSD. В меню Select Drives, я увидел ad4 и ad6. Выбрал ad4, т.е. просто первый диск.

С помощью утилиты fdisk удалил существующие разделы и выбрал Use entire disk. Выбрал Standard MBR.

В редакторе меток диска я выбрал автоматический режим. Когда установка завершилась, установив часовой пояс, создал учетную запись пользователя, установил пароль root, и так далее.

После настройки этих параметров не перезагружаясь. Нажал Alt-F4 для перехода в режим командной строки.

Создание зеркалирования осуществляется вводом следующей команды:

# gmirror label -v -b round-robin gm0 /dev/ad4
Can’t store metadata on /dev/ad4: Operation not permitted

Получил ошибку. Так как это особенность защиты, которая указывает, что диск в настоящее время установлен для записи и поэтому недоступен. Чтобы обойти эту проблему и на время позволить gmirror обойти эту меру, чтобы создать зеркалирование выполняем:
# sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16

# gmirror label -v -b round-robin gm0 /dev/ad4
Metadata value stored on /dev/ad4

Теперь мы создали RAID-1. Далее редактируем файл /boot/loader.conf.

ee /boot/loader.conf
geom_mirror_load=»YES»

# ee /etc/fstab
Измените каждый ad на gm и вставьте mirror после /dev. Для примера, /dev/ad0s1a трансформируется в /dev/mirror/gm0s1a. Если вы не делали дополнительные разделы, то у вас будут устройства ad0s1, оканчивающиеся на a, b, d, e и f. Необходимо отредактировать каждую строку.

#shutdown -r now
# gmirror insert gm0 /dev/ad6
GEOM_MIRROR: Device gm0: provider ad6 detected.
GEOM_MIRROR: Device gm0: rebuilding provider ad6.

# gmirror status
Name Status Components
mirror/gm0 DEGRADED ad4
ad6 (2%)

Когда синхронизация закончится, вы увидите следующее сообщение:

GEOM_MIRROR: Device gm0: rebuilding provider ad6 finished.
GEOM_MIRROR: Device gm0: provider ad6 activated.

Если вы повторно выполните команду gmirror list, то увидите, что в строке State значение DEGRADED изменилось на COMPLETE. Не волнуйтесь, увидев в строке Flags состояние DIRTY, это означает, что система сделала запись на диск, но еще не синхронизировала данные между дисками, если потождать несколько секунд, не производя никаких дисковых операций, то можно увидеть, как состояние изменится наNONE.

Затем, перезагрузил систему. И все ОК!

май, 2009