Меняем HDD Freebsd

Имеем рабочий диск:

# uname -a
 FreeBSD 8.2-RELEASE FreeBSD 8.2-RELEASE #0 r219081M: Wed Mar  2 08:29:52 CET 2011
 root@www4:/usr/obj/usr/src/sys/GENERIC  amd64# gpart show
 =>       34  976773101  ada0  GPT  (466G)
 34        128    1  freebsd-boot  (64K)
 162    8388608    2  freebsd-swap  (4.0G)
 8388770  104857600    3  freebsd-zfs   (50G)
 113246370  863526765           - free -  (412G)

системный пул myboot находится на 3-ей партиции

# zfs list
 myboot           4.33G  44.6G    21K  none
 myboot/root      4.33G  44.6G  3.93G  /
 myboot/root/tmp   228K  44.6G   228K  /tmp
 myboot/root/var   344M  44.6G   301M  /var

1) У меня был новый 2.5′ HDD 60gb, в системе отбился как ad1
Создаем GPT разметку:

# gpart create -s GPT ad1
 ad1 created

2) создаем загрузочный партишн:

# gpart add -s 128k -t freebsd-boot -l boot ad1
 ad1p1 added

3) 4Gb партишн для swap:

# gpart add -b 290 -s 4g -t freebsd-swap -l swap ad1
 ad1p2 added

4) и партишн для системы:

# gpart add -t freebsd-zfs -l data ad1
 ad1p3 added# gpart show
 =>       34  117208060  ad1  GPT  (56G)
 34        256    1  freebsd-boot  (128K)
 290    8388608    2  freebsd-swap  (4.0G)
 8388898  108815100    3  freebsd-zfs   (52G)

5) в boot записал gptzfsboot-загрузчик и protective MBR:

# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ad1
 boot added ad1

6) создал пул zroot для системы на новом HDD:

# zpool create -m /mnt zroot /dev/gpt/data

7) делаем снимок старой системы:

# zfs snapshot -r myboot@2013-01-14

(ключ -r — рекурсивный снимок всех дочерних FS)

# zfs list -t snapshot
 NAME                         USED  AVAIL  REFER  MOUNTPOINT
 myboot@2013-01-14               0      -    21K  -
 myboot/root@2013-01-14      59,1M      -  3,93G  -
 myboot/root/tmp@2013-01-14    53K      -   228K  -
 myboot/root/var@2013-01-14  42,8M      -   297M  -

8 ) передаем данные со старого пула в новый на этой же машине:

# zfs send -vR myboot@2013-01-14 | zfs receive -vFd zroot

либо подключаем новый HDD на другой машине,
предварительно загрузившись с LiveCD и на старой системе выполняем:

# zfs send -vR myboot@2013-01-14 | ssh 192.168.x.x zfs receive -vFd zroot

где 192.168.x.x — IP 2-ой машины
9) теперь, либо выключаем 1-ый комп и меняем старый HDD на новый, либо
продолжаем на 2-ой машине.
Грузимся с LiveCD, затем
10) монтируем пул в /mnt и прописываем кэш файл:

# zpool import -o cachefile=/tmp/zpool.cache -o altroot=/mnt zroot
# cp /tmp/zpool.cache /mnt/boot/zfs# zfs list
 NAME              USED  AVAIL  REFER  MOUNTPOINT
 zroot           4.33G  44.6G    21K  none
 zroot/root      4.33G  44.6G  3.93G  /mnt
 zroot/root/tmp   228K  44.6G   228K  /mnt/tmp
 zroot/root/var   344M  44.6G   301M  /mnt/var

# echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf
# echo 'zfs_load="YES"' >> /mnt/boot/loader.conf
# echo 'vfs.root.mountfrom="zfs:/zroot/root"' >> /mnt/boot/loader.conf

либо проверяем их наличие

# cat /mnt/boot/loader.conf | more
 # cat /mnt/etc/rc.conf | more

11) перемонтируем FS

# zfs unmount -a
 # zpool set cachefile='' zroot
 # zfs set mountpoint=legacy zroot/root
 # zfs set mountpoint=/var zroot/root/var
 # zfs set mountpoint=/tmp zroot/root/tmp
 # zpool set bootfs=zroot/root zroot
 # reboot

Все, после ребута система нормально прогрузилась с нового HDD.

Оставьте ответ

Ваш адрес email не будет опубликован.