RAID-1 с GPT
Проверялось на FreeBSD 9.1 с двумя винтами одинаковой ёмкости(ada0 ada1)
1. Грузимся с болванки
2. Заходим в Shell
3. Изменяем переменную ядра kern.geom.debugflags:
# sysctl kern.geom.debugflags=16
4. Загружаем модуль ядра geom_mirror.ko:
# kldload /boot/kernel/geom_mirror.ko
5. С помощью утилиты gmirror создаем зеркало и включаем в него оба диска:
# gmirror label -v -b round-robin gm0 /dev/ada0 # gmirror insert gm0 /dev/ada1
- gmirror label - собственно создание зеркала;
- gmirror insert - добавление диска в зеркало;
- -v - включение режима отладки;
- -b round-robin - режим балансировки;
- gm0 - имя зеркала;
- /dev/ada0 - диск, с которого будем брать данные для зеркалирования;
- /dev/ada1 - диск на который будем выполнять синхронизацию
6. Ждём пока пройдёт синхронизация и проверяем командой:
# gmirror list Geom name: gm0 State: COMPLETE Components: 2 Balance: round-robin Slice: 4096 Flags: NONE GenID: 0 SyncID: 1 ID: 1919338681 Providers: 1. Name: mirror/gm0 Mediasize: 21474835968 (20G) Sectorsize: 512 Mode: r1w1e2 Consumers: 1. Name: ada0 Mediasize: 21474836480 (20G) Sectorsize: 512 Mode: r1w1e1 State: ACTIVE Priority: 0 Flags: NONE GenID: 0 SyncID: 1 ID: 3043185693 2. Name: ada1 Mediasize: 21474836480 (20G) Sectorsize: 512 Mode: r1w1e1 State: ACTIVE Priority: 0 Flags: NONE GenID: 0 SyncID: 1 ID: 2878633727
7. Выходим из Shell обратно в Bsdinstall
8. Создаем раздел GPT на gm0 и необходимые партиции
9. Ставим FreeBSD
10. По окончании установки, установщик предлагает произвести редактирование системных файлов. Добавляем загрузку модуля GEOM в loader.conf:
# echo 'geom_mirror_load="YES"' > /boot/loader.conf
11. Проверяем, что в fstab прописаны партиции с gm0(у нас /dev/mirror/gm0p2)
12. Ребутимся. Готово
Предположим второй винт сдох. Бежим в магаз покупаем новый(желательно такой же модели и объёма)
1. Включаем систему, видим примерно следующее:
Root mount waiting for: GMIRROR Root mount waiting for: GMIRROR Root mount waiting for: GMIRROR Root mount waiting for: GMIRROR GEOM_MIRROR: Force device gm0 start due to timeout. Root mount waiting for: GMIRROR GEOM_MIRROR: Device mirror/gm0 launched (1/2). Trying to mount root from ufs:/dev/mirror/gm0p2 [rw]...
2. Смотрим миррор:
# gmirror status Name Status Components mirror/gm0 DEGRADED ada0 (ACTIVE)
или так:
# gmirror list Geom name: gm0 State: DEGRADED Components: 2 Balance: round-robin Slice: 4096 Flags: NONE GenID: 0 SyncID: 3 ID: 1919338681 Providers: 1. Name: mirror/gm0 Mediasize: 21474835968 (20G) Sectorsize: 512 Mode: r1w1e2 Consumers: 1. Name: ada0 Mediasize: 21474836480 (20G) Sectorsize: 512 Mode: r1w1e1 State: ACTIVE Priority: 0 Flags: DIRTY GenID: 0 SyncID: 3 ID: 3043185693
Видим статус DEGRADED, значит не всё в порядке в датском королевстве. Начинаем чинить.
3. Выключаем машину, подключаем новый винт и грузимся.
4. Делаем:
# gmirror forget gm0
5. И вводим новый диск в зеркало:
# gmirror insert gm0 /dev/ada1
6. Смотрим:
# gmirror status Name Status Components mirror/gm0 DEGRADED ada0 (ACTIVE) ada1 (SYNCHRONIZING, 3%)
или так:
# gmirror list Geom name: gm0 State: DEGRADED Components: 2 Balance: round-robin Slice: 4096 Flags: NONE GenID: 0 SyncID: 4 ID: 1919338681 Providers: 1. Name: mirror/gm0 Mediasize: 21474835968 (20G) Sectorsize: 512 Mode: r2w1e2 Consumers: 1. Name: ada0 Mediasize: 21474836480 (20G) Sectorsize: 512 Mode: r1w1e1 State: ACTIVE Priority: 0 Flags: DIRTY GenID: 0 SyncID: 4 ID: 3043185693 2. Name: ada1 Mediasize: 21474836480 (20G) Sectorsize: 512 Mode: r1w1e1 State: SYNCHRONIZING Priority: 0 Flags: DIRTY, SYNCHRONIZING GenID: 0 SyncID: 4 Synchronized: 3% ID: 65935283
Новый диск синхронизируется. После окончания синхронизации снова увидим рабочее зеркало:
# gmirror status Name Status Components mirror/gm0 COMPLETE ada0 (ACTIVE) ada1 (ACTIVE)
В dmesg:
GEOM_MIRROR: Device gm0: rebuilding provider ada1. GEOM_MIRROR: Device gm0: rebuilding provider ada1 finished.