gmirror - Зеркалирование (Mirroring) - FreeBSD

Установка FreeBSD на RAID1 (gmirror).

Конфигурация маршрутизатора: Два идентичных Что такое IDE интегрированная среда разработки? Список IDE диска на отдельных кабелях и контроллерах, обозначенных как /dev/ad0 и /dev/ad2. Оба винчестера Primary Master для своего контроллера.

  • Установка

Инсталлируем FreeBSD 7.2 Release c CD-ROM в режиме Standard. В меню Select Drives, должны быть видны оба HDD ad0 и ad2. Выбираем ad0, чтобы инсталлировать систему на Primary Master контроллера IDE1. С помощью утилиты Использование fdisk удаляем любые существующие разделы и выбераем "Use entire disk". На вопрос о меню загрузки, выбираем "Standard MBR". В редакторе меток диска (Disklabel Editor) создаем разделы на ad0 (клавиша А - автоматически разбивает диск):

/      1 Гб (1024 MB)
swap   1 Гб  (1024 MB)
/var   30 GB (30720MB)
/tmp   1 Гб (1024 MB)
/usr - 116 GB все остальное 

Выбираем набор Developer, подтверждаем установку набора портов. Выбираем установку с CD/DVD, подтверждаем форматирование HDD и далее устанавливаем систему. После установки пароля для root в обычном случае установка операционной системы закончена - можно перегружаться и настраивать систему далее. Но нам нужно установить RAID1, поэтому на этом этапе НЕ ПЕРЕГРУЖАЕМСЯ.

  • Настройка RAID1 - Зеркалирование

После установки пароля для root НЕ ПЕРЕГРУЖАЕМСЯ. Нажимаем Alt-F4 для перехода в режим командной строки.

# tcsh - можно, например csh - главное чтобы оболочка была предустановлена (см. файл /etc/shells) и  поддерживала историю команд.
ns #

Создаем устройство /dev/mirror/gm и связываем его с устройством, в моем случае /dev/ad0:

ns # gmirror label -v -b round-robin gm0 /dev/ad0

где 
-v включает режим отладки
-b round-robin выбирает алгоритм балансировки (в настоящее время это наиболее быстродействующий алгоритм)
gm0 - имя первого зеркала GEOM
/dev/ad0 - указывает на HDD, содержащий данные для зеркалирования

Однако, если вы попробуете выполнить эту команду сейчас, то будете разочарованы:

     ns # gmirror label -v -b round-robin gm0 /dev/ad0
     Can't store metadata on /dev/ad0: Operation not permitted

Это особенность защиты, которая указывает, что диск в настоящее время установлен для записи и поэтому недоступен. Однако, вы можете обойти эту проблему цыпленка-и-яйца и временно вынудить gmirror обойти эту меру, чтобы создать зеркалирование/дуплекс, устанавливая sysctl MIB:

      ns # sysctl kern.geom.debugflags=16
      kern.geom.debugflags: 0 -> 16

После перезагрузки этот параметр снова примет значение "0". А теперь выполним:

      ns # gmirror label -v -b round-robin gm0 /dev/ad0
      Metadata value stored on /dev/ad0

Все, теперь у нас есть RAID 1.

Редактируем два файла. Первый из них loader.conf в настоящее время пуст:

      ns # echo geom_mirror_load="YES" > /boot/loader.conf

Поскольку в файле /etc/fstab у нас уже содержатся некие данные, то лучше сделать его резервную копию.

      ns # cp /etc/fstab /etc/fstab.orig
      ns # ee /etc/fstab

Необходимо отредактировать каждую строку содержащую ad, заменив ad на gm и вставить mirror после /dev . Например, /dev/ad0s1a трансформируется в /dev/mirror/gm0s1a. Сохраняем файл /etc/fstab. Нажимаем Alt-F1, извлекаем установочный диск и выходим из утилиты установки. Перегружаемся.

Синхронизация дисков

Единственное, что мы еще не сделали, так это не синхронизировали диски. Это случится автоматически, как только вы вставите второй диск в зеркало:

ns # gmirror insert gm0 /dev/ad2
GEOM_MIRROR: Device gm0: provider ad2 detected.
GEOM_MIRROR: Device gm0: rebuilding provider ad2.

Посмотреть на текущий статус массива можно так

ns #  gmirror status
Name    Status  Components
mirror/gm0  DEGRADED  ad0
                      ad2 (3%)

где в скобках указан процент синхронизированных данных. После окончания синхронизации данных dmesg выведет

GEOM_MIRROR: Device gm0: rebuilding provider ad2 finished.
GEOM_MIRROR: Device gm0: provider ad2 activated.

и статус массива поменяется на рабочий

ns # gmirror status
Name    Status  Components
mirror/gm0  COMPLETE  ad0
                      ad2

Мониторинг gmirror

FreeBSD: gmirror (RAID1) - Зеркалирование (Mirroring)

> man 8 gmirror
> ls /dev/mirror/
gm0	gm0s1	gm0s1a	gm0s1b	gm0s1c	gm0s1d	gm0s1e	gm0s1f

/dev/mirror/gm0 - программный RAID, созданный утилитой gmirror

> gmirror status
      Name    Status  Components
mirror/gm0  COMPLETE  ad0
                      ad2

Настроим мониторинг RAID, при помощи скриптов идущих вместе с ОС FreeBSD:

> ls /etc/periodic/daily/

100.clean-disks 150.clean-hoststat 330.news 407.status-graid3 440.status-mailq 500.queuerun 110.clean-tmps 200.backup-passwd 400.status-disks 408.status-gstripe 450.status-security 999.local 120.clean-preserve 210.backup-aliases 404.status-zfs 409.status-gconcat 460.status-mail-rejects 130.clean-msgs 300.calendar 405.status-ata-raid 420.status-network 470.status-named 140.clean-rwho 310.accounting 406.status-gmirror 430.status-rwho 480.status-ntpd

Разрешаем запуск скрипта 406.status-gmirror, установив YES в файле /etc/defaults/periodic.conf или создать новый файл /etc/periodic.conf, который отменит настройки по умолчанию. Теперь один раз в день будет проверяться состояние RAID и высылаться на EMail вместе с остальными отчетами.

> ee /etc/periodic.conf
# 406.status-gmirror
daily_status_gmirror_enable="YES"                       # Check gmirror(8)
PQ VPS сервера в 28+ странах.