Иногда нужно повысить надежность хранения данных. В этом случае
возможно воспользоваться RAID 1, то есть полным зеркалирование
информации на другой жесткий диск. Рассказывать о типах RAID не вижу
смысла, скорее всего вы уже владеете необходимой информацией. Если нет,
то ознакомиться с типами RAID можно, например, здесь.
Итак решено. Будем строить програмный RAID 1 с помощью gmirror.
Разоряться на дорогие рейд-контроллеры не будем, а потратим немножко
аппаратных ресурсов сервера для повышения отказоустойчивости ;)
Есть сервер с двумя хардами, которые определились как ad4 и ad6.
ad4: 476940MB <SAMSUNG HD501LJ CR100-10> at ata2-master SATA300
ad6: 476940MB <SAMSUNG HD501LJ CR100-11> at ata3-master SATA300 |
На ad4 стоит FreeBSD. Соответственно ad6 необходимо сделать клоном ad4.
Перед созданием зеркала необходимо вывести жесткий диск из режима
записи (иначе на наши команды система ругнется нехорошими
сообщениями). После перезагрузки сервера даный параметр вернется в
исходное значение, так что сильно не заморачиваемся по этому поводу .
# sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16
|
Создаем зеркало следующей командой:
# gmirror label -v -b round-robin gm0 /dev/ad4
Metadata value stored on /dev/ad4.
Done.
|
Немного о опциях:
gmirror label - собственно создание зеркала;
-v - включение режима отладки;
-b round-robin - режим балансировки;
gm0 - имя первого зеркала;
/dev/ad4 - диск, с которого будем брать данные для зеркалирования.
Поздравляю, теперь у нас есть RAID 1. Однако это еще не все. Для
того, чтобы после перезагрузки сервера все заработало, включаем загрузку
модуля geom_mirror:
# echo 'geom_mirror_load="YES"' >> /boot/loader.conf |
Необходимо также внести изменения в /etc/fstab. Если вы еще не "подружились" с данным файлом, то вам сюда.
В даном файле необходимо каждый ad заменить на gm и добавить mirror
после /dev, обращая внимание на статическую нумерацию дисков и разделов.
Для примера, у меня /dev/ad4s1a превратится в /dev/mirror/gm0s1a.
Необходимо отредактировать каждую строку. Вот как выглядит /etc/fstab
после редактирования в моем случае:
# cat /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1d /home ufs rw 2 2
/dev/mirror/gm0s1f /tmp ufs rw 2 2
/dev/mirror/gm0s1g /usr ufs rw 2 2
/dev/mirror/gm0s1e /var ufs rw 2 2 |
Пожалуйста, будьте внимательны при редактировании данного файла.
Будет досадно, когда система не загрузится из-за допущеной опечатки.
Проверили? Отлично, продолжим.
Отправляем сервер на перезагрузку:
Смотрим, что у нас получилось:
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/mirror/gm0s1a 1.9G 232M 1.6G 13% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/mirror/gm0s1d 3.9G 52K 3.6G 0% /home
/dev/mirror/gm0s1f 1.9G 52K 1.8G 0% /tmp
/dev/mirror/gm0s1g 383G 2.9G 350G 1% /usr
/dev/mirror/gm0s1e 58G 387M 53G 1% /var |
Кстати, утилита df не показывает состояние раздела подкачки. Для просмотра его состояния воспользуемся следующей командой:
# swapinfo
Device 1K-blocks Used Avail Capacity
/dev/mirror/gm0s1b 2097152 0 2097152 0% |
Остался последний шаг - синхронизация дисков. Синхронизация начнется, как только мы добавим в зеркало второй диск:
# gmirror insert gm0 /dev/ad6 |
Проверим состояние зеркала:
# gmirror list
Geom name: gm0
State: DEGRADED
Components: 2
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 996585426
Providers:
1. Name: mirror/gm0
Mediasize: 500107861504 (466G)
Sectorsize: 512
Mode: r7w6e7
Consumers:
1. Name: ad4
Mediasize: 500107862016 (466G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: NONE
GenID: 0
SyncID: 1
ID: 2655687235
2. Name: ad6
Mediasize: 500107862016 (466G)
Sectorsize: 512
Mode: r1w1e1
State: SYNCHRONIZING
Priority: 0
Flags: DIRTY, SYNCHRONIZING
GenID: 0
SyncID: 1
Synchronized: 2%
ID: 411127952 |
Обратите внимание на общее состояние зеркала - DEGRADED, а также на
флаг SYNCHRONIZING. Для синхронизации дисков потребуется некоторое
время, а в настоящее время синхронизировано 2% данных.
Подождите некоторое время, и снова выполните gmirror list.
Значение в строке State изменилось с DEGRADED на COMPLETE. Не
волнуйтесь, увидев в строке Flags состояние DIRTY, это означает, что
система сделала запись на диск, но еще не синхронизировала данные между
дисками, если потождать несколько секунд, не производя никаких дисковых
операций, то можно увидеть, как состояние изменится на NONE.
Поздравляю. Настройка програмного RAID 1 с помощью утилиты gmirror завершена.
|