FreeBSD - cоздание RAID1 - Mirroring - зеркалирование
Создание 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) Ребут