Категории

среда, 4 апреля 2012 г.

FreeBSD 9.0 GPT + gmirror

Столкнулся с проблемой реализации подобной связки GPT и gmirror на FreeBSD 9.0. Методом проб и ошибок получилась вот такая пошаговая инструкция:
0. Загружаемся с диска FreeBSD 9.0 amd64 в режиме LiveCD, система спросит логин, вводим root, а вместо пароля просто жмем Enter.
1. Удаляем все GPT данные с дисков:
FreeBSD# gpart destroy -F ada0
FreeBSD# gpart destroy -F ada1
2. Создаем GPT на 1 диске:
FreeBSD# gpart create -s gpt ada0
3. Создаем GPT разметку на 1 диске:
3.1 Загрузочный раздел
FreeBSD# gpart add -b 34 -s 94 -t freebsd-boot ada0
3.2 Раздел подкачки
FreeBSD# gpart add -s 5G -t freebsd-swap ada0
3.3 Файловую систему UFS
FreeBSD# gpart add -t freebsd-ufs ada0
3.4 Проверяем все ли так, как мы задумали
FreeBSD# gpart show
=>        34  2930277101  ada0  GPT  (1.4T)
          34          94     1  freebsd-boot  (47k)
         128     2097152     2  freebsd-swap  (1.0G)
     2097280  2928179855     3  freebsd-ufs  (1.4T)
3.5 Записываем загрузчик
FreeBSD# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0
3.6 Копируем разметку GTP с 1 диска на 2 диск
FreeBSD# gpart backup ada0 | gpart restore -F ada1
3.7. Проверяем что теперь получилось:
FreeBSD# gpart show
=>        34  2930277101  ada0  GPT  (1.4T)
          34          94     1  freebsd-boot  (47k)
         128     2097152     2  freebsd-swap  (1.0G)
     2097280  2928179855     3  freebsd-ufs  (1.4T)

=>        34  2930277101  ada1  GPT  (1.4T)
          34          94     1  freebsd-boot  (47k)
         128     2097152     2  freebsd-swap  (1.0G)
     2097280  2928179855     3  freebsd-ufs  (1.4T)
4. загружаем gmirror:
FreeBSD# gmirror load
4.1 Создаем RAID1 для SWAP раздела
FreeBSD# gmirror label -v -b round-robin swap /dev/ada0p2
4.2 Добавляем 2-ой диск в зеркало:
FreeBSD# gmirror insert swap /dev/ada1p2
4.3 Создаем RAID1 для UFS раздела:
FreeBSD# gmirror label -v -b round-robin rootfs ada0p3
4.4 Добавляем 2-ой диск в зеркало:
FreeBSD# gmirror insert rootfs /dev/ada1p3
4.5 Удалить случайно созданные RAID1 разделы(если вдруг чего-то напутали выше)
FreeBSD# gmirror remove swap ada0p2 ada1p2
5. Создаем файловые системы на RAID1 разделах
FreeBSD# newfs -m 1 -U /dev/mirror/rootfs
6. УСТАНОВКА FreeBSD:
6.1 Монтируем созданную файловую систему в /mnt
FreeBSD# mount /dev/mirror/rootfs /mnt
6.2 Устанавливаем FreeBSD 9.0
FreeBSD# cd /usr/freebsd-dist
FreeBSD# sh
FreeBSD# export DESTDIR=/mnt
FreeBSD# for file in base.txz kernel.txz lib32.txz;
>do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done
6.3 Создаем /etc/fstab для установленной системы:
FreeBSD# cat >/mnt/etc/fstab << __EOF__
> #dev   #mount #fs #opts #dump #pass
> /dev/mirror/rootfs / ufs rw 1 1
> /dev/mirror/swap none swap sw 0 0
> __EOF__
6.4 Создаем /boot/loader.conf
FreeBSD# cat > /mnt/boot/loader.conf << __EOF__
> geom_mirror_load="YES"
> __EOF__
7. Отмонтируем зеркало
FreeBSD# umount /mnt
10. все готово, теперь можно перезагружаться и смотреть на результат

Ссылки по теме:
  1. HOWTO: Install FreeBSD 9.0 RELEASE (Root on UFS + ZFS, RAID1)
  2. Варианты загрузки FreeBSD: gmirror + GPT + UFS
  3. Использование gmirror для создания программного зеркалирования дисков
  4. [Solved] No gmirror in 9.0, now what?
  5. gmirror With Disk Partitions
  6. mirroring FreeBSD-9 disks with GPT