По умолчанию FreeBSD 9 использует таблицу разделов GPT.
Еще раз проверенная и исправленная инструкция (15.02.2014)
GPT+gmirror
Суть в том, что зеркалируется не полностью диск, а его отдельные его разделы.
Посмотреть, какая таблица разделов используется (mbr или GPT) можно так
# gpart show
Понадобится:
- Установленная FreeBSD на один из дисков.
- Пустой второй диск такого же размера.
- KVM для доступа к серверу в Single User Mode или загрузка сервера в режим восстановления (rescue/LiveCD)
Копируем таблицу раздела исходного диска на второй.
# gpart backup ada0 | gpart restore -F /dev/ada1
Сверяем таблицу через
# gpart show
Записи для обоих дисков должны быть одинаковыми. Примерно так:
free# gpart show => 34 20971453 ada0 GPT (10G) 34 128 1 freebsd-boot (64k) 162 19920768 2 freebsd-ufs (9.5G) 19920930 1048576 3 freebsd-swap (512M) 20969506 1981 - free - (990k) => 34 20971453 ada1 GPT (10G) 34 128 1 freebsd-boot (64k) 162 19920768 2 freebsd-ufs (9.5G) 19920930 1048576 3 freebsd-swap (512M) 20969506 1981 - free - (990k)
Важно не забыть сделать диск ada1 загрузочным, ведь мы зеркалируем не весь
диск целиком, а только его разделы. Иначе с выходом из строя ada0, система не
сможет загрузится с ada1. Поэтому:
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada1
Далее создаем зеркало.
Эта последовательность команд создаст три устройства (boot/root/swap).
# gmirror label -vb round-robin boot /dev/ada0p1 # gmirror label -vb round-robin root /dev/ada0p2 # gmirror label -vb round-robin swap /dev/ada0p3 #gmirror load
#gmirror status
Перезагружаемся в Single User Mode Или в режим восстановления (в таком случае придется выполнить gmirror load, чтобы загрузить GEOM).
После, нужно поправить fstab, который находится «в корне». В нашем случае — это /dev/mirror/root
# mount -rw /dev/mirror/root /mnt # cp /mnt/etc/fstab /mnt/etc/fstab_orig # ee /mnt/etc/fstab
# Device Mountpoint Fstype Options Dump Pass# /dev/ada0p2 / ufs rw 1 1 /dev/ada0p3 none swap sw 0 0
меняем на
# Device Mountpoint Fstype Options Dump Pass# /dev/mirror/root / ufs rw 1 1 /dev/mirror/swap none swap sw 0 0
Добавим загрузку GEOM в файл /boot/loader.conf:
# echo 'geom_mirror_load="YES"' » /mnt/boot/loader.conf
отмонтируем устройство
# umount /mnt
Перезагружаемся
# reboot
Сервер должен загрузиться с зеркала, которое мы только что создали.
Этими командами мы добавляем второй диск в каждое из зеркалирующих устройств GEOM. Теперь необходимо дождаться окончания синхронизации.
# gmirror insert boot /dev/ada1p1 # gmirror insert root /dev/ada1p2 # gmirror insert swap /dev/ada1p3
Проверяем зеркало через
# gmirror status Name Status Components mirror/boot COMPLETE ada0p1 (ACTIVE) ada1p1 (ACTIVE) mirror/root COMPLETE ada0p2 (ACTIVE) ada1p2 (ACTIVE) mirror/swap COMPLETE ada0p3 (ACTIVE) ada1p3 (ACTIVE)
Проверяем статус выполнения командой:
# gmirror status
Примечание (важно):
Если вы уже делали попытки создать зеркалирование дисков посредством программного RAID-1, то в конце диска остается запись, о том что диск был в зеркале. ОБЯЗАТЕЛЬНО необходимо обнулить эту область.
Ниже инструкция, у меня в конце не вышло, видимо я чего то не понял, но суть в том, что любой утилитой записать на диск нули, т.е. уничтожить все.
Если до этого оставались какие-то хвосты от предыдущих попыток запустить gmirror, то делаем gpart destroy -F ada1 — на ada0 оно было всё стёрто в процессе установки.
Далее следуем инструкциям из FreeBSD HandBook 20.4.3
# gmirror load
# diskinfo -v ada0 |head -n3
ada0
512 # sectorsize
1000204886016 # mediasize in bytes (931G)
# diskinfo -v ada1 | head -n3
ada1
512 # sectorsize
1000204886016 # mediasize in bytes (931G)
# geom zero load
# gnop create -s 1000204886016 gzero
Это число взято из предыдущей команды.
# gmirror label -v gm0 gzero.nop ada1
Metadata value stored on gzero.nop.
Metadata value stored on ada1.
Done.
# gmirror forget gm0
FreeBSD & RAID-1 (gmirror) MBR
Полезные ссылки, советую почитать:
http://www.ateamsystems.com/tech-blog/installing-freebsd-9-gmirror-gpt-partitions-raid-1/
http://www.fbsd.su/11-freebsd-9-1-raid1-mirroring
http://metajiji.blogspot.ru/2012/04/freebsd-90-gpt-gmirror.html
FreeBSD 9.1+ GEOM mirror with GPT and partitions (instead of a whole disk mirroring)
Диск на серваке:
ada0 s/n WCC4J1202431 mdl: WD10EFRX-68PJCNO
Полезные ссылки: