Перенос установленной FreeBSD 9 в зеркало gmirror
Итак, имеется сервер с 2-мя дисками:
Первое что нужно сделать для работы с gmirror, загрузить соответствующий модуль ядра:
/dev/ada0 /dev/ada1на диск /dev/ada0 уже установленная операционная система FreeBSD 9.1. Требуется объединить имеющиеся диски в софтовое зеркало ( RAID 1 ), используя модуль gmirror ( один из модулей geom ), и переместить на него установленную на /dev/ada0 систему. Разметка диска /dev/ada0 стандартная, учитывая дэфолтовую установку FreeBSD, через bsdinstall:
ada0p1 freebsd-boot ada0p2 freebsd-ufs / ada0p3 freebsd-swap
root@server:/ # kldload geom_mirror.ko # загружаем root@server:/ # kldstat # проверяем Id Refs Address Size Name 1 3 0xffffffff80200000 1323388 kernel 2 1 0xffffffff81612000 d26f geom_mirror.ko # модуль загруженчто-бы после окончания настройки и перезагрузки, все работало, нужно прописать загрузку модуля в файл /boot/loader.conf делаем:
root@server:/ # echo 'geom_mirror_load="YES"' >> /boot/loader.confТереь создадим зеркало, включив в него диск /dev/ada1
root@server:/ # gmirror label -v -b round-robin gm0 /dev/ada1 Metadata value stored on /dev/ada1. Done.В данном случае:
gmirror label - собственно создание массива raid1 ( зеркало ) -v - режим отладки, вывод служебных сообщений -b round-robin - алгоритм балансировки ( по умолчанию load ) gm0 - имя нашего raid массива /dev/ada1 - диск который мы сразу включили в gmirrorТеперь нужно создать разметку на только что созданном зеркале. Вданном случае скопируем ее с диска /dev/ada0, на колтором у нас уже установлена рабочая FreeBSD. Делаем дамп таблицы разделов, перенаправив его вывод в файл:
root@server:/ # gpart backup da0 > /tmp/part.txtВосстанавливаем только что созданный дамп на gmirror
root@server:/ # gpart restore mirror/gm0 < /tmp/part.txtЗаписываем загрузочный код
root@server:/ # gpart bootcode -b /boot/pmbr mirror/gm0 bootcode written to mirror/gm0 root@server:/ # gpart bootcode -p /boot/gptboot -i 1 mirror/gm0Создаем файловую систему для раздела /dev/mirror/gm0p2 ( корневая файловая система, по аналогии с димком /dev/ada0 ). Опция -U в команде newfs, включает soft updaes, для файловой системы UFS.
root@server:/ # newfs -U /dev/mirror/gm0p2 /dev/mirror/gm0p2: 5834.9MB (11949952 sectors) block size 32768, fragment size 4096 using 10 cylinder groups of 626.09MB, 20035 blks, 80256 inodes. with soft updates super-block backups (for fsck_ffs -b #) at: 192, 1282432, 2564672, 3846912, 5129152, 6411392, 7693632, 8975872, 10258112, 11540352Монтируем корневой раздел, расположенный в gmirror, в папку /mnt
root@server:/ # mount /dev/mirror/gm0p2 /mntТеперь копируем содержимое корневого раздела диска /dev/ada0 в корневой раздел gmirror
root@server:/ # cd / № если вы не в корневом разделе root@server:/ # tar --one-file-system -cpf - . | (cd /mnt; tar -xvpf -)Редактируем файл /etc/sftab, заменив все вхождения /dev/ada0 на /dev/mirror/gm0, должно получится что-то вроде
# Device Mountpoint FStype Options Dump Pass# /dev/mirror/gm0p2 / ufs rw 1 1 /dev/mirror/gm0p3 none swap sw 0 0Перезагружаемся
root@server:/ # umount /mnt root@server:/ # reboot
Теперь очень важно выбрать в биосе, другой диск в качестве загрузочного, тот который у нас уже в зеркале.При загрузке, будет выдано предупреждение от gptboot, о неверной резервной копии GPT заголовка
gptboot: invalid backup GPT headerэто происходит из-за того, что размер gmirror, на один сектор меньше размера диска, в последнем секторе gmirror зранит свои метаданные, а gptboot ищет там резервную копию GPT заголовка, естественно безуспешно. Это не критично. Проверьте что в данный момент, система действительно работает с gmirror:
root@server: # mount /dev/mirror/gm0p2 on / (ufs, local, soft-updates) devfs on /dev (devfs, local, multilabel) root@server: # swapinfo Device 1K-blocks Used Avail Capacity /dev/mirror/gm0p3 314368 0 314368 0%Теперь нам осталось только включить диск /dev/ada0 в зеркало
root@server: # gmirror insert gm0 da0Проверим статус:
root@server: # gmirror status Name Status Components mirror/gm0 DEGRADED ada1 (ACTIVE) ada0 (SYNCHRONIZING, 26%)В данный момент идет синхронизация дисков в зеркале, статус DEGRADED, диски синхронизированы на 26%, остается дождаться окончания процесса. После завершения синхронизации, статус gmirror выглядит так:
root@server: # gmirror status Name Status Components mirror/gm0 COMPLETE ada1 (ACTIVE) ada0 (ACTIVE)Теперь наша FreeBSD работает с зеркала. Оригинал Вольеый пересказ vds-admin
Комментарии
Не работает! FREEBSD не загружается с ada1 а на ada0 выскакивает mountroot.
День добрый!
У вас ошибка, из-за которой я потерял 2 часа, опыт - сын ошибок трудных ))))
вместо:
Редактируем файл /etc/sftab, заменив все вхождения /dev/ada0 на /dev/mirror/gm0, нужно:
Редактируем файл /mnt/etc/fstab, заменив все вхождения /dev/ada0 на /dev/mirror/gm0, должно получится что-то вроде
За перевод - спасибо, но оригинал лучше ;-)
Отправить комментарий