FreeBSD 9.2 & RAID-1 (gmirror) GPT

По умолчанию 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)

gmirror11

Важно не забыть сделать диск 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


Полезные ссылки:

Disk Setup On FreeBSD