На деле все оказывается очень просто. Втыкаем в сервер второй винчестер с аналогичной емкостью и запускаем систему. Условимся, что ad0
это системный диск, а ad2
- новый.
Далее от имени суперпользователя:
- Создаем зеркалируемый RAID массив
# gmirror label -v -b round-robin gm0 /dev/ad0
Здесьgmirror label
создает зеркалируемый массив;-v
включает подробный вывод;-b round-robin
задает тип балансировки;gm0
- имя создаваемого массива. В случае, если выдаст ошибкуCan't store metadata on /dev/ad0: Operation not permitted
требуется выполнить# sysctl kern.geom.debugflags=16
и снова попытаться создать массив. - Теперь отредактируем файл
/boot/loader.conf
и разрешим загрузку нужного нам модуляGEOM
при старте системы# echo 'geom_mirror_load="YES"' >> /boot/loader.conf
- Отредактируем записи в
/etc/fstab
, иначе после ребута система не сможет найти созданный нами дисковый массив и продолжить загрузку. Меняемad0
наmirror/gm0
.
Было/dev/ad0s1b none swap sw 0 0
Стало
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1e /tmp ufs rw,nosuid 2 2
/dev/ad0s1f /usr ufs rw 2 2
/dev/ad0s1d /var ufs rw,nosuid 2 2/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1e /tmp ufs rw,nosuid 2 2
/dev/mirror/gm0s1f /usr ufs rw 2 2
/dev/mirror/gm0s1d /var ufs rw,nosuid 2 2 - Рестартуем
# shutdown -r now
- После ребута система при старте выведет такие строки
GEOM_MIRROR: Device gm0 created (id=877665149).
GEOM_MIRROR: Device gm0: provider ad0 detected.
GEOM_MIRROR: Device gm0: provider ad0 activated.
GEOM_MIRROR: Device gm0: provider mirror/gm0 launched.
GEOM_MIRROR: Device gm0 already configured.
Mounting root from ufs:/dev/mirror/gm0s1a - Добавим второй диск в массив
# gmirror insert gm0 /dev/ad2
Смотрим на состояние массива
GEOM_MIRROR: Device gm0: provider ad2 detected.
GEOM_MIRROR: Device gm0: rebuilding provider ad2.# gmirror list | more
Массив перешел в критическое состояние и начал синхронизацию данных.
Geom name: gm0
State: DEGRADED
Components: 2
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 877665149
Providers:
1. Name: mirror/gm0
Mediasize: 40019581952 (37G)
Sectorsize: 512
Mode: r6w5e2
Consumers:
1. Name: ad0
Mediasize: 40019581952 (37G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: DIRTY
GenID: 0
SyncID: 1
ID: 3986018406
2. Name: ad2
Mediasize: 41110142976 (38G)
Sectorsize: 512
Mode: r1w1e1
State: SYNCHRONIZING
Priority: 0
Flags: DIRTY, SYNCHRONIZING
GenID: 0
SyncID: 1
Synchronized: 1%
ID: 1946262342
Посмотреть на текущий статус массива можно так# gmirror status
где в скобках указан процент синхронизированных данных.
Name Status Components
mirror/gm0 DEGRADED ad0
ad2 (17%)
После окончания синхронизации данныхdmesg
выведетGEOM_MIRROR: Device gm0: rebuilding provider ad2 finished.
и статус массива поменяется на рабочий
GEOM_MIRROR: Device gm0: provider ad2 activated.# gmirror status
Name Status Components
mirror/gm0 COMPLETE ad0
ad2
9 комментариев:
Спасибо, очень интерессно :)
Вот меня всегда удивляло: зачем все друг у друга копируют идиотизм с первой попыткой создать массив? Что, совсем нельзя начать сразу с sysctl?
А вы не копируйте :)
В пункте 3 по моему не совсем корректная трактовка "иначе после ребута система не запустится" не не запустится а не сможет найти дисковый массив и продолжить загрузку.
Хотя это умозаключение делаю из собственного опыта создания зеркала, дошло до определения структуры разделов и здрасте приехали, правда 5 минут раздумий и встроенный хелп с прямыми руками разрешили ситуацию безболезненно :)
f_andrey: Спасибо за подсказку, поправил.
Кстати не вникал, почему все инструкции рекомендуют выключать swap? А то вот столкнулся думаю стоит ли.
Видимо в этом есть какой-то сакральный смысл.
Могу предположить предположить, что свап на загруженной машине сильно замедляет софтовый RAID1 из-за интенсивного обмена данными с массивом.
Да вот и я думаю что смысл какой то есть, пока вроде никто не объяснил, но некоторые тупо делают на рейде, ладно на досуге разберусь если не забуду :)
Отправить комментарий