Возникла необходимость перенести ZFS систему на другой диск, теории начитался, но ни одного "боевого" решения не нашел. 
За оказанную помощь при решении вопроса большой салам  засылается 
taurus'у c iXBT.
Попытаюсь расписать подробнее, чтобы было меньше вопросов у народа.
Имеем рабочий диск:
Код: Выделить всё
# 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 разметку:
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:
7) делаем снимок старой системы:
(ключ -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.