Описано создание программного (программного зеркала) 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 |
Теперь у нас есть 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.
В финале перезагрузите систему.