Migrating zfs root on FreeBSD 9

January 15th, 2013

Чтобы не забыть чего и куда, запишу небольшую инструкцию.

Исходные данные: FreeBSD 9-STABLE, root на ZFS (feature flags), один WD5000BEVT, GPT, Intel D2500CCE (т. е. у нас всего две SATA дырдочки)
Задача: Перенести всю систему на два новых WD5000BPKT, ZFS Mirror, ZFS swap volume.

Понадобятся нам для этого ровно две вещи: Live-CD/USB с ZFS не меньшей версии, чем текущий пул и возможность погасить сервер на время, достаточное, для переноса всех данных. На 300GB у меня ушло чуть больше двух часов. В качестве Live CD выступил mfsBSD (какая-то из бета-версий с ZFS feature flags).

  1. Устанавливаем оба новых диска и загружаемся с Live CD.

  2. # foreach i (0 1)
    foreach? gpart create -s gpt ada$i
    foreach? gpart add -s 512K -b 40 -t freebsd-boot -l boot$i ada$i
    foreach? gpart add -b 2048 -t freebsd-zfs -l disk$i ada$i
    foreach? gnop create -S 4096 /dev/gpt/disk$i
    foreach? end
    # zpool create -o altroot=/mnt system mirror /dev/gpt/disk0.nop /dev/gpt/disk1.nop
    # zpool export system
    # gnop destroy /dev/gpt/disk0.nop /dev/gpt/disk1.nop
    # zpool import -o altroot=/mnt -d /dev/gpt system
    # zfs create -V 4G system/swap
    # zfs set org.freebsd:swap=on system/swap
    # zfs set checksum=off system/swap
    # shutdown -p now
  3. Устанавливаем старый диск как ada1 и снова загружаемся с Live CD.

  4. # mkdir /tmp/old
    # zpool import -f -R /tmp/old zroot old
    # zpool import -f -o altroot=/mnt -o cachefile=/tmp/zpool.cache -d /dev/gpt system
    # zfs snapshot -r old@safe
    # zfs send -v -R old@safe | zfs receive -v -F system
    # zfs destroy -r system@safe
    # zfs set mountpoint=/ system
    # cp /tmp/zpool.cache /mnt/boot/zfs/
    1# sed -i -e 's/zfs:zroot/zfs:system/' /mnt/boot/loader.conf
    # gpart bootcode -b /mnt/boot/pmbr -p /mnt/boot/gptzfsboot -i 1 ada0
    # zfs umount -a
    # zfs set mountpoint=legacy system
    # zpool set bootfs=system system
    # shutdown -p now
    1 Не нужно, если не меняется имя пула.
  5. Устанавливаем второй новый диск обратно в ada1, загружаемся с ada0 и дожидаемся окончания resilvering.

  6. # zfs clear system
    # gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1

И да, опасения по поводу большего шума Black-ов не оправдались. Экспериментов не ставил, но субъективно шуршит так же, как и раньше.

Comments »

No comments yet.

Name (required)
E-mail (required, never shown publicly)
OpenID
Your Comment (smaller size | larger size)