Создаем Soft RAID 1 под FreeBSD
Для чего может понадобиться создавать програмный зеркальный RAID на сервере — многие RAID контролеры интегрированные в материнские платы попросту не потдерживаются FreeBSD, даже если они и потдерживаются то зачастую не имеют никаких средств мониторинга состояния RAID, тоже касается и аппаратных рэйд контролеров. Например аппаратный RAID-контроллер Intel® SRCSATAWB имеет драйвера и утилиты только под windows и linux, хотя он и потдерживается последними релизами FreeBSD, но не имеет утилит с помощью которых можно было проводить мониторинг состояния дисков. А это обозначает, что мы узнаем о крахе дисков, когда наш сервер выйдет из строя и смысл такого рейда попросту теряется.
Приступим к созданию програмного RAID:
Имеется два одинаковых по размеру диска, будет хорошо если диски будут одинаковой модели.
/dev/ad0 и /dev/ad1
Делаем разбивку на партиции и устанавливаем ОС на первый жесткий диск ad0(названия дисков в вашей системе могут отличаться в зависимости от типа используемых дисков IDE,SATA,SCSI,SAS)
Загружаемся в single user mode нажав на цифру 4 при загрузке и клонируем первый диск на второй:
#dd if=/dev/ad0 of=/dev/ad1 bs=1M
На всякий случай проверим диск на ошибки:
# fsck -y /dev/ad1
Перезагружаемся в обычный multiuser режим и регистриуемся в системе под root.
Создаем устройство /dev/mirror/gm и связываем его с устройством /dev/ad1:
# gmirror label -vnb round-robin gm0 /dev/ad1
В ответ вы должны получить сообщение:
Metadata value stored on /dev/da1.
Done.
Инициализируйте GEOM; эта команда загрузит модуль ядра /boot/kernel/geom_mirror.ko:
# gmirror load
GEOM_MIRROR: Device mirror/gm0 launched (1/1).
Смонтируем корневой раздел на устройстве ad1, которое теперь называется /dev/mirror/gm0
mount /dev/mirror/gm0s1a /mnt/
Исправляем fstab
vi /mnt/etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1d /tmp ufs rw 2 2
/dev/ad0s1e /usr ufs rw 2 2
/dev/ad0s1f /var ufs rw 2 2
В моем случае получилось так:
# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1d /tmp ufs rw 2 2
/dev/mirror/gm0s1e /usr ufs rw 2 2
/dev/mirror/gm0s1f /var ufs rw 2 2
Включите загрузку модуля geom_mirror.ko при старте системы, выполнив следующую команду:
# echo ‘geom_mirror_load=»YES»‘ >> /mnt/boot/loader.conf
Выставляем в BIOS загрузку со второго жесткого диска и загружаемся.
Если все было сделано правильно, система загрузится с gm0s1a.
Теперь добавьте диск ad0 к устройству gm0:
# gmirror configure -a gm0
# gmirror insert gm0 /dev/ad0
Ключ -a даст утилите команду gmirror использовать автоматическую синхронизацию, то есть автоматически дублировать запись на диски.
# gmirror status
Name Status Components
mirror/gm0 DEGRADED ad1
ad0 (4%)
Дождемся полной синхронизации дисков:
dns# gmirror status
Name Status Components
mirror/gm0 COMPLETE ad1
ad0
Выставляем в BIOS загрузку со первого жесткого диска и загружаемся.
Если все прошло удачно, то система должна нормально загрузиться с зеркалированного устройства /dev/mirror/gm0
Статус массива должен быть:
# gmirror status
Name Status Components
mirror/gm0 COMPLETE ad0
ad1