Апр 22 2009

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

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

И с помощью просмотрим состояние 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

И напоследок хочу заметить, что каким бы хорошим не был рейд, как бы надежно он не работал он никогда не заменит регулярных бекапов. Обязательно бекаптесь!

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть