Сборка gmirror без перезагрузки

В сети есть достаточное количество описаний, как на FreeBSD собрать программный RAID-1, он же gmirror. Все они требуют в определенный момент перезагрузки сервера между включением в зеркало первого диска и остальных. Однако, бывают ситуации, когда она нежелательна либо невозможна. Прямо сейчас строю такую машинку, соответственно, пришлось выкручиваться. Итак, начнем:

Включаем в ядро поддержку gmirror после перезагрузки:
# echo 'geom_mirror_load=YES' >> /boot/loader.conf

Даем системе доступ для изменения конфигурации дисков:
# 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.
Done.

Правим /etc/fstab. В нем меняем все вхождения /dev/ad4 на /dev/mirror/gm0, например, /dev/ad4s1a станет /dev/mirror/gm0s1a и т.п.

Дальше самая хитрость — вместо перезагрузки подгружаем ядру модуль gmirror и вставляем второй диск:
# kldload geom_mirror
# gmirror insert gm0 /dev/ad6

Проверяем:
# gmirror list
Geom name: gm0
State: DEGRADED
Components: 2
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 1867633513
Providers:
1. Name: mirror/gm0
Mediasize: 750156373504 (699G)
Sectorsize: 512
Mode: r1w0e0
Consumers:
1. Name: ad4
Mediasize: 750156374016 (699G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: NONE
GenID: 0
SyncID: 1
ID: 129648194
2. Name: ad6
Mediasize: 750156374016 (699G)
Sectorsize: 512
Mode: r1w1e1
State: SYNCHRONIZING
Priority: 0
Flags: DIRTY, SYNCHRONIZING
GenID: 0
SyncID: 1
Synchronized: 0%
ID: 3539837274

Видим, что зеркало соорудилось и пошла синхронизация. Далее остается периодически поглядывать за ее ходом:
# gmirror status
Name Status Components
mirror/gm0 DEGRADED ad4
ad6 (22%)

По окончании процесса можно и перегрузиться с собранным зеркалом.

Вам также может понравиться

Об авторе jared

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *