Не всегда имеется возможность установить аппаратный 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, необходимо выполнить такие команды:
gmirror load
Эта команда загрузит модуль ядра, отвечающий за поддержку программного RAID.
Для того, что бы модуль подгружался каждый раз, необходимо включить загрузку модуля в loader.conf:
echo 'geom_mirror_load="YES"' >> /boot/loader.conf
Поддержку в ядре можно включить, добавив в конфигурацию ядра:
options GEOM_MIRROR
затем пересобрав ядро и перезагрузившись.
Теперь необходимо сменить монтирование дисков в /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)
И с помощью gmirror insert gm0 /dev/ad6 просмотрим состояние 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ами, серъезных проблем не возникало.
При вылете одного диска, приходилось делать
gmirror forget gm0
И снова
gmirror insert /dev/ad6
И напоследок хочу заметить, что каким бы хорошим не был рейд, как бы надежно он не работал он никогда не заменит регулярных бекапов. Обязательно бекаптесь!
Originally published at
О, мой блох!. You can comment here or
there.