В релизе 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, автоматически запустится процесс синхронизации.
Всем удачи!
Оставить комментарий