понедельник, 28 мая 2012 г.

Программный RAID1 с помощью gmirror

Цель: организовать возможность backup'a на 2 SATA HDD 250Gb в программном рейде
Инструменты: FreeBSD 8.3, gmirror, sysinstall
Решение: на сервере уже есть HDD на котором установлена система. есть 2 жестких диска WDC WD2500AAJS-60M0A0.
Перед их подключением выполним команду:
#atacontrol list

ATA channel 0:
    Master:      no device present
    Slave:       no device present
ATA channel 2:
    Master:  ad4 <SAMSUNG HD161GJ/1AC01113> SATA revision 2.x
    Slave:     no device present
ATA channel 3:
    Master:   no device present
    Slave:     no device present
Сделал я это для наглядности, способов проверки установленных в системе HDD предостаточно. Мне проще и привычнее делать так.
Теперь выключаем сервер и инсталлируем жесткие диски для зеркалирования:
#shutdown -h now
при следующем запуске снова выполняем:
#atacontrol list
ATA channel 0:
    Master:      no device present
    Slave:       no device present
ATA channel 2:
    Master:  ad4 <SAMSUNG HD161GJ/1AC01113> SATA revision 2.x
    Slave:   ad5 <WDC WD2500AAJS-60M0A0/02.03E02> SATA revision 2.x
ATA channel 3:
    Master:  ad6 <WDC WD2500AAJS-60M0A0/02.03E02> SATA revision 2.x
    Slave:       no device present
Как видно, в системе теперь два новых диска ad5 и ad6. В моем случае они полностью идентичны. Если ваша конфигурация будущего зеркала отличается, то предупрежу, что первым в зеркало нужно заводить диск меньшего объема, иначе не взлетит.
Для возможности работы с зеркалом требуется либо модуль geom_mirror_load, либо собрать собрать ядро с поддержкой options GEOM_MIRROR. Собирать ядро у меня не было ни времени ни желания, поэтому просто подключил модуль:
#ee /boot/loader.conf
Дописываем geom_mirror_load="YES"
Выходим с сохранением.
Создаем папку в которую будет монтироваться зеркало (я выбрал так):
#mkdir /home/backup
Теперь, чтобы можно было создать разделы (слайсы) и вообще работать с новыми дисками, необходимо включить дополнительную отладочную информацию. На этом этапе handbook говорит одно, fdisk другое...а именно выполнить sysctl kern.geom.debugflags=17 либо sysctl kern.geom.debugflags=16 соответственно. Искать правду не стал. Выполнил то, что хотел fdisk..
Теперь размечаем ad5, поскольку ad6 будет зеркалом ad5 то и трогать его нет смысла.
#sysinstall
Configure
Fdisk
[X] ad5
я использовал весь диск как один слайс (A/W/Q = весь диск/записать изменения/выйти)
После этого:
Label в меню Configure
Используем весь доступный объем (С)
В качестве точки монтирования указываем /home/backup
Не забываем записать изменения. Выходим из sysinstall.
Создаем зеркало:
#gmirror label -v -b round-robin gm0 /dev/ad5
Metadata value stored on /dev/ad5.
Done.
Чтобы вручную постоянно не монтировать пропишем это зеркало в /etc/fstab, а фактически просто удалим /dev/ad5s1d и вместо запишем /dev/mirror/gm0s1d
#ee /etc/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/mirror/gm0s1d      /home/backup    ufs     rw             2       2
/dev/acd0               /cdrom          cd9660  ro,noauto           0       0
Выходим с сохранением. Перезагружаемся:
#reboot
Если все поднялось, то радуемся жизни...иначе попадаем в single mode, где необходимо отредактировать ee /etc/fstab и за комментировать в этом файле ошибочную запись. Для этого последовательно вводим:
#mount -u /
#mount -a
#ee /etc/fstab
убираем ошибочную строку и выходим с сохранением
#return
ищем ошибки.
Когда все завелось нормально и подмонтировалось, добавляем в рейд второй жесткий диск:
#gmirror insert gm0 /dev/ad6
За процессом синхронизации дисков удобно наблюдать введя:
#gmirror status
      Name    Status  Components
mirror/gm0  DEGRADED  ad5 (ACTIVE)
                                          ad6 (SYNCHRONIZING, 27%)
Если все верно, то в итоге предыдущая команда выдаст:
#gmirror status
      Name    Status  Components
mirror/gm0  COMPLETE  ad5 (ACTIVE)
                                         ad6 (ACTIVE)
Все, можно работать с директорией /home/backup.
Для особо недоверчивых можно провести эксперимент. Выключить систему, извлечь ad6 запустить систему, выключить, вставить ad6. Запустить, дождаться синхронизации и повторить извлечение для ad5.


Комментариев нет:

Отправить комментарий