Программное зеркало gmirror (raid1)

Описано создание программного (программного зеркала) RAID1 под FreeBSD 8.X (в версии 9 там всё совершенно по другому, будет рассмотрено в новой статье) c использованием gmirror

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

# gmirror label -v -b round-robin gm0 /dev/ad0 

Где gmirror label создает зеркало, функция -v включает режим отладки, -b round-robin выбирает алгоритм балансировки (в настоящее время это наиболее быстродействующий алгоритм), gm0 – имя первого зеркала GEOM и /dev/ad0 указывает на диск, содержащий данные для зеркалирования.

Однако, если вы попробуете выполнить эту команду сейчас, то будете разочарованы:

# gmirror label -v -b round-robin gm0 /dev/ad0

Can't store metadata on /dev/ad0: Operation not permitted

Это особенность защиты, которая указывает, что диск в настоящее время установлен для записи и поэтому недоступен. Однако, можно обойти эту проблему и временно вынудить gmirror обойти эту меру, чтобы создать зеркалирование/дуплекс, устанавливая sysctl MIB:

# sysctl kern.geom.debugflags=16

kern.geom.debugflags: 0 -> 16

После перезагрузки этот параметр снова примет значение “0?. А теперь выполним:

# gmirror label -v -b round-robin gm0 /dev/ad0

Metadata value stored on /dev/ad0

# gmirror load

 

# gmirror status
Name Status Components
mirror/gm0 COMPLETE ad0 (ACTIVE)

Теперь у нас есть RAID 1.

Теперь необходимо отредактировать два файла. Первый из них в настоящее время пуст, используем утилиту echo для того, чтобы внести в него необходимый параметр:

# echo geom_mirror_load="YES" > /boot/loader.conf

Поскольку в файле /etc/fstab у нас уже содержатся некие данные, то лучше сделать его резервную копию.

# cp /etc/fstab /etc/fstab.orig

# vi /etc/fstab

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

Синхронизация дисков

Это случится автоматически, как только вы вставите второй диск в зеркало:

# gmirror insert gm0 /dev/ad2

GEOM_MIRROR: Device gm0: provider ad2 detected.

GEOM_MIRROR: Device gm0: rebuilding provider ad2.

В итоге имеем:

# gmirror status

Name Status Components

mirror/gm0 DEGRADED ad0

ad2 (2%)

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

GEOM_MIRROR: Device gm0: rebuilding provider ad2 finished.

GEOM_MIRROR: Device gm0: provider ad2 activated.

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

В финале перезагрузите систему.

 

unix-way