26 ноября 2013 г.

Клонирование FreeBSD ZFS root

Клонирование FreeBSD ZFS root

При миграции сервера FreeBSD 8.2, c корневым разделом на ZFS в VMWare esxi, новый сервер не загружался. Процесс загрузки останавливался на сообщении "unsupported zfs version 28 (should be 15)".
Исходный сервер имел версию ФС 4, пула - 15. LiveCD mfsbsd создавал ФС - версию 5 и пул версии 28.
При создании пула требуется явно указать требуемые версии рабочего пула. В остальном всё скопировано из первоисточника http://www.aisecure.net/2011/03/26/cloning-a-zfs-bootable-system/

Качаем образ mfsbsd http://mfsbsd.vx.sk/ и загружаем с него него целевой сервер.
Настраиваем сетевой интерфейс.

mfsbsd#gpart create -s gpt da0
mfsbsd#gpart add -b 34 -s 64k -t freebsd-boot da0
mfsbsd#gpart add -t freebsd-zfs -l disk0 ad0
mfsbsd#gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
mfsbsd#zpool create -o version=15 -O version=4 -R /a -m legacy zroot /dev/gpt/disk0
mfsbsd#zpool set bootfs=zroot zroot

Делаем актуальный снимок файловой системы на исходном сервере и копируем его.
zfs snapshot -r zroot@bck 
zfs send -R zroot@bck | ssh root@10.10.10.141 zfs recv -Fdv zroot
Монтируем разделы и  перезагружаем новый сервер.
mfsbsd#zfs destroy -r zroot@bck
mfsbsd#zfs set mountpoint=/zroot zroot
mfsbsd#zpool export -f zroot
mfsbsd#zpool import -f zroot
mfsbsd#cp /boot/zfs/zpool.cache /zroot/boot/zfs/zpool.cache
mfsbsd#zfs umount -a
mfsbsd#zfs set mountpoint=legacy zroot
mfsbsd#zfs set mountpoint=/tmp zroot/tmp
mfsbsd#zfs set mountpoint=/usr zroot/usr
mfsbsd#zfs set mountpoint=/var zroot/var

mfsbsd#reboot