Программный RAID1 gmirror FreeBSD

Feb 08, 2011 15:28




Не всегда имеется возможность установить аппаратный 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.

freebsd, raid, mount

Previous post Next post
Up