FreeBSD - cоздание RAID1 - Mirroring - зеркалирование


Материал из Wiki - Iphoster - 'the best ever hosting and support

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

Создание RAID1 - Mirroring - зеркалирование


В системе установлено два диска SATA ad4 и ad5. Важно, чтобы диски были одинакового размера.

# atacontrol list
ATA channel 0:
    Master: acd0 <HL-DT-ST DVDRAM GSA-4167B/DL12> ATA/ATAPI revision 5
    Slave:       no device present
ATA channel 2:
    Master:  ad4 <SAMSUNG HD501LJ/CR100-11> SATA revision 2.x
    Slave:   ad5 <SAMSUNG HD501LJ/CR100-11> SATA revision 2.x
ATA channel 3:
    Master:      no device present
    Slave:       no device present


Перед построением зеркала включите дополнительную откладочную информацию и откройте доступ к устройству установив:

# sysctl kern.geom.debugflags=17
kern.geom.debugflags: 0 -> 17


Создаем зеркало:

# gmirror label -vb round-robin gm0 /dev/ad4
Metadata value stored on /dev/ad4.
Done.

Опции gmirror:

gmirror label - создание зеркала;
-v - режим verbose;
-b round-robin - режим балансировки;
gm0 - имя первого зеркала;
/dev/ad4 - диск, с которого будут браться данные для зеркалирования.

!!! Создание зеркала может привести к потере данных, если какие-либо данные хранились на последнем секторе диска. Этот риск уменьшен, если создание зеркала сделано сразу после новой установки FreeBSD.


Инициализируем модуль GEOM - загружается /boot/kernel/geom_mirror.ko

# gmirror load
# kldstat | grep geom
16    1 0xcae79000 15000    geom_mirror.ko

Создастся gm0 устройство в /dev/mirror

Добавляем загрузку GEOM модуля при старте:

# echo 'geom_mirror_load="YES"' >> /boot/loader.conf


Также поддержку GEOM можно включить в ядро добавив опцию:

options    GEOM_MIRROR


Делаем бекап fstab файла:

# cp /etc/fstab /etc/fstab-backup

Редактируем fstab - заменяем ad на /mirror/gm:

# vi /etc/fstab
:%s/ad4/mirror\/gm0/g
:wq

Смотрим что, получилось:

# more /etc/fstab
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/mirror/gm0s1b              none            swap    sw              0       0
/dev/mirror/gm0s1a              /               ufs     rw              1       1
/dev/mirror/gm0s1f              /tmp            ufs     rw              2       2
/dev/mirror/gm0s1d              /usr            ufs     rw              2       2
/dev/mirror/gm0s1e              /var            ufs     rw              2       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0
linproc                 /usr/compat/linux/proc  linprocfs       rw      0       0
linsys                  /usr/compat/linux/sys           linsysfs        rw      0       0


Перезагружаем машину:

# shutdown -r now


После перезагрузки:

# mount
/dev/mirror/gm0s1a on / (ufs, local)
devfs on /dev (devfs, local, multilabel)
/dev/mirror/gm0s1f on /tmp (ufs, local, soft-updates)
/dev/mirror/gm0s1d on /usr (ufs, local, soft-updates)
/dev/mirror/gm0s1e on /var (ufs, local, soft-updates)
linprocfs on /usr/compat/linux/proc (linprocfs, local)


Виртуальная память:

# swapinfo 
Device          1K-blocks     Used    Avail Capacity
/dev/mirror/gm0s1b   4194304        0  4194304     0%


!!!!! Если вы допустили ошибку в /etc/fstab то появится ошибка похожая на эту:

.......................
Manual root filesystem specification:
 :  Mount  using filesystem
           e.g. ufs:da0s1a
 ?             List valid disk boot devices
        Abort manual input
mountroot>

Решение - смонтировать правильные разделы и отредактировать fstab

Доступные дисковые устройства:

mountroot> ? 
List of GEOM managed disk devices: mirror/gm0s1f mirror/gm0s1e mirror/gm0s1d mirror/gm0s1c mirror/gm0s1b mirror/gm0s1a mirror/gm0s1 mirror/gm0 ad4 acd0 ad5

Смонтировать корневую ФС:

mountroot> ufs:/dev/mirror/gm0s1a
Mounting root from /dev/mirror/gm0s1a

И остальные:

# mount -u /
# mount -a -t ufs
# vi /etc/fstab
# swapon -a


Добавляем второй диск в зеркало:

# gmirror insert gm0 /dev/ad5

Просмотр статуса зеркала:

# gmirror status
      Name    Status  Components
mirror/gm0  DEGRADED  ad4
                      ad5 (1%)


# gmirror list
Geom name: gm0
State: DEGRADED
Components: 2
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 348777149
Providers:
1. Name: mirror/gm0
   Mediasize: 500107861504 (466G)
   Sectorsize: 512
   Mode: r6w5e14
Consumers:
1. Name: ad4
   Mediasize: 500107862016 (466G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: DIRTY
   GenID: 0
   SyncID: 1
   ID: 1798440092
2. Name: ad5
   Mediasize: 500107862016 (466G)
   Sectorsize: 512
   Mode: r1w1e1
   State: SYNCHRONIZING
   Priority: 0
   Flags: DIRTY, SYNCHRONIZING
   GenID: 0
   SyncID: 1
   Synchronized: 2%
   ID: 1119914319 

Видим что началось выполнение синхронизации между дисками. Ждем когда зеркало поменяет статус с DEGRADED на COMPLETE.


# gmirror status
      Name    Status  Components
mirror/gm0  COMPLETE  ad4
                      ad5

RAID1 готов!


Востановление данных когда диск стал неисправным

Допустим у нас полетел диск ad5, выключаем сервер, вставляем новый диск (определился как ad6) и перестраиваем зеркало с помощью команд:

# gmirror forget gm0
# gmirror insert gm0 /dev/ad6
# gmirror status



Как удалить диск из RAID1 и вернуть все обратно?

1) Удаляем из /boot/loader.conf:

 geom_mirror_load="YES"

2) Выводим диск из зеркала:

# gmirror remove gm0 ad5

3) Восстанавливаем fstab на нужный (+ бекапим старый):

# cp /etc/fstab /etc/fstab-backup1 
# mv /etc/fstab-backup /etc/fstab

4) Ребут

Индекс цитирования