RAID-1 с GPT

Материал из megapuper
Перейти к: навигация, поиск

Проверялось на 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.