Не всегда имеется возможность установить аппаратный RAID, да и не всегда он нужен. Особенно псевдо аппаратные рейды, которых сейчас полно, эти RAID контроллеры зарекомендовали себя самым худшим образом. А вот полностью программный RAID gmirror показал себя наилучшим образом. И везде где нет необходимости или возможности установить аппаратный RAID я использую gmirror.
Настройка его довольно проста, рекомендую только делать настройку, до того как на сервер попадут данные, лучше всего настраивать gmirror сразу после установки FreeBSD.
В первую очередь нужно установить переменную sysctl:
sysctl kern.geom.debugflags=17
После этого, ядро FreeBSD разрешит выполнять операции geom с дисками.
Теперь выполним пометку диска для использования в gmirror. У меня на сервере 2 диска ad4 и ad6, FreeBSD естественно установлена на ad4.
gmirror label -vb round-robin gm0 /dev/ad4
Эта команда создает RAID gm0, при этом -vb round-robin устанавливает режим распределения нагрузки между жесткими дисками включенными в RAID. Еще доступны режимы load – в этом режиме чтение происходит с жесткого диска с наименьшей загрузкой. prefer – установка приоритетов чтения/записи осуществляется вручную. split – разбивает запросы чтения на разные устройства(жесткие диски), для ускорения работы.
Я использую round-robin.
Теперь, если в ядре отсутствует поддержка gmirror, необходимо выполнить такие команды:
Эта команда загрузит модуль ядра, отвечающий за поддержку программного RAID.
Для того, что бы модуль подгружался каждый раз, необходимо включить загрузку модуля в loader.conf:
echo 'geom_mirror_load="YES"' >> /boot/loader.conf
Поддержку в ядре можно включить, добавив в конфигурацию ядра:
затем пересобрав ядро и перезагрузившись.
Теперь необходимо сменить монтирование дисков в /etc/fstab, изначально вид fstab имел такой вид:
# Device Mountpoint FStype Options Dump Pass#
/dev/ad4s1b none swap sw 0 0
/dev/ad4s1a / ufs rw 1 1
/dev/ad4s1e /tmp ufs rw 2 2
/dev/ad4s1f /usr ufs rw 2 2
/dev/ad4s1d /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
Теперь его надо изменить, заменив /dev/ad4 на /dev/mirror/gm0, то есть у меня получилось такой fstab:
# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1e /tmp ufs rw 2 2
/dev/mirror/gm0s1f /usr ufs rw 2 2
/dev/mirror/gm0s1d /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
Теперь можно перезагрузиться.
После перезагрузки введем команду mount и увидим, что же у нас получилось:
mount
/dev/mirror/gm0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/mirror/gm0s1e on /tmp (ufs, local, soft-updates)
/dev/mirror/gm0s1f on /usr (ufs, local, soft-updates)
/dev/mirror/gm0s1d on /var (ufs, local, soft-updates)
И с помощью просмотрим состояние RAID1:
Name Status Components
mirror/gm0 COMPLETE ad4
Наш рейд состоит из одного диска.
Добавим второй диск:
gmirror insert gm0 /dev/ad6
После этого, проверяем статус:
gmirror status
Name Status Components
mirror/gm0 DEGRADED ad4
ad6 (0%)
В данный момент, рейд собирается. То есть осуществляется зеркалирование содержимого диска ad4 на диск ad6
Через некоторый промежуток времени(он зависит от объема диска):
gmirror status
Name Status Components
mirror/gm0 COMPLETE ad4
ad6
Все рейд собран и функционирует.
За все время работы с этими RAIDами, серъезных проблем не возникало. При вылете одного диска, приходилось делать
И снова
И напоследок хочу заметить, что каким бы хорошим не был рейд, как бы надежно он не работал онникогда не заменит регулярных бекапов. Обязательно бекаптесь!