Создание программного RAID 1 в ОС FreeBSD 9 с GPT

В релизе FreeBSD 9 инсталлятор по умолчанию предполагает использование формат разделов жестких дисков GPT.

GPT (таблица разделов GUID) — новый стандарт, пришедший на смену MBR. Каждому разделу на диске присваивается уникальный глобальный идентификатор. У этой системы нет ограничений по объему дисков. Она позволяет создавать неограниченное количество разделов. GPT в отличие от MBR хранит несколько копий данных о разделах и загрузочной информации по всему жесткому диску, работает гораздо быстрее и позволяет восстанавливать поврежденную информацию. Такая таблица разделов хранит значения CRC, по которым находит поврежденные данные и пытается восстановить их с другого места на диске.

Однако в связи с переходом на GPT-разметку дисков возникают и некоторые сложности. О способе их решения при создании RAID-массива во FreeBSD мы и поговорим.

Рекомендуется, чтобы оба жестких диска были одинаковыми по всем характеристикам: объему, скорости вращения шпинделей, размеру буфера памяти и т.д. В случае использования различных дисков характеристики зеркала будут определяться худшим диском. Так что если есть два разных по объему диска, тогда инсталлируем систему с ОС FreeBSD на меньший по размеру из них.

Загружаем свежеустановленную систему и попадаем в консоль.

При помощи команды:

# dmesg | less

выясняем под какими именами определились диски.
У меня они определились как ada0 и ada1. На первый была проинсталлиррована операционная система FreeBSD 9.3.

Итак, приступим к объединению имеющихся дисков в программное зеркало (RAID 1), используя модуль gmirror.

Разметка диска /dev/ada0 стандартная, по умолчанию:

ada0p1 freebsd-boot
ada0p2 freebsd-ufs /
ada0p3 freebsd-swap

Первое что нужно сделать для работы с gmirror, загрузить соответствующий модуль ядра:

# kldload geom_mirror.ko

Проверяем загрузился ли он:

# kldstat

Id Refs Address Size Name
1 3 0xffffffff80200000 1323388 kernel
2 1 0xffffffff81612000 d26f geom_mirror.ko

Создаем устройство зеркальный массив gm0, включив в него диск /dev/ada1:

# gmirror label -v -b round-robin gm0 /dev/ada1

Metadata value stored on /dev/ada1.
Done.

Теперь нужно создать разметку диска на только что созданном массиве.

Сохраним таблицу разделов GPT с диска /dev/ada0 и восстановим ее на gmirror диске:

# gpart backup ada0 > /tmp/ada0.gpt
# gpart restore -F mirror/gm0 < /tmp/ada0.gpt

Проверим разметку дисков:

# gpart show

После этого делаем программный массив загрузочным:

# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 mirror/gm0

Создаем файловую систему для корневого раздела /dev/mirror/gm0p2:

# newfs -U /dev/mirror/gm0p2

Монтируем вновь созданную ФС для gmirror в папку /mnt:

# mount /dev/mirror/gm0p2 /mnt

Далее копируем содержимое корневого раздела диска /dev/ada0 в корневой раздел gmirror:

# cd /
# tar --one-file-system -cpf - . | (cd /mnt; tar -xvpf -)

Отредактируем файл fstab в соответствии с именованием разделов программного зеркала:

# sed -i -e 's/dev\/ada0/dev\/mirror\/gm0/g' /mnt/etc/fstab

Проверяем содержимое измененного файла fstab:

# cat /mnt/etc/fstab

Вывод на экране должен быть таким:

# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0p2 / ufs rw 1 1
/dev/mirror/gm0p3 none swap sw 0 0

Теперь добавляем модуль gmirror в файл loader.conf для автоматической загрузки модуля при запуске системы:

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

Размонтируем раздел gmirror’а:

# umount /mnt

И перезагрузимся:

# shutdown -r now

Загрузиться необходимо со второго диска ada1, который мы включили в зеркало. Для этого можно изменить приоритет загрузки жестких дисков в настройках BIOS, а можно использовать загрузочный диск Hirens Boot CD с выбором нужного диска.

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

# mount

/dev/mirror/gm0p2 on / (ufs, local, soft-updates)
devfs on /dev (devfs, local, multilabel)

# swapinfo

Device 1K-blocks Used Avail Capacity
/dev/mirror/gm0p3 314368 0 314368 0%

Подключаем диск /dev/ada0 к зеркальному массиву:

# gmirror insert gm0 /dev/ada0

GEOM-MIRROR: Device gm0: rebuilding provider ada0

Начнется процедура зеркалирования, длительность которой зависит от объема данных и характеристик жестких дисков.

Проверить статус данного процесса можно командой:

# gmirror status

Name Status Components
mirror/gm0 DEGRADED ada1 (ACTIVE)
ada0 (SYNCHRONIZING, 12%)

Вывод показывает, что идет синхронизация дисков в зеркале, статус DEGRATED, а второй диск ada0 находится в режиме SYNCHRONIZING с указанием процента выполненной работы по синхронизации дисков.
В конце успешного завершения процесса будет показано соответствующее сообщение.

После окончания синхронизации зеркал, можно отключать от сервера любой диск. При замене или возвращении диска в RAID, автоматически запустится процесс синхронизации.

Всем удачи!

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