Monday, December 14, 2009

How to move OpenSolaris onto another (smaller?) disk:

How to move OpenSolaris onto another (smaller?) disk:
(assuming original disk is on c8t0d0):

fdisk -B /dev/rdsk/c8t1d0p0
[format c8t1d0 with one slice s1]
zpool create -f newpool /dev/dsk/c8t1d0s0
zfs set canmount=noauto newpool
zfs create -o mountpoint=legacy -o canmount=off newpool/ROOT
zfs create -o mountpoint=/ -o canmount=noauto newpool/ROOT/opensolaris
zfs snapshot rpool/ROOT/opensolaris@now
zfs send rpool/ROOT/opensolaris@now | zfs receive -F newpool/ROOT/opensolaris
zfs destroy -r rpool/ROOT/opensolaris@now
zfs mount rpool
zfs mount newpool
cp -rp /rpool/. /newpool
vi /newpool/boot/grub/menu.lst
rm /newpool/boot/grub/bootsign/pool_rpool
touch /newpool/boot/grub/bootsign/pool_newpool
echo pool_newpool > /newpool/etc/bootsign
zfs umount rpool
zfs umount newpool
installgrub -m -f /boot/grub/stage[12] /dev/rdsk/c8t1d0s0
init 6

(Then delete the original zfs devices):
swap -d /dev/zvol/dsk/rpool/swap
zfs destroy rpool/swap

(Recreate /export etc)
zfs create -p newpool/export/home/admin
zfs set mountpoint=newpool/export
zfs set mountpoint=legacy rpool/export/home/admin
mount -F zfs rpool/export/home/admin /mnt
cd /mnt
find . -print | cpio -dumpv /export/home/admin
cd /
umount /mnt
zfs destroy -r rpool/export

(create new swap device)
zfs create -V 512M newpool/swap
swap -a /dev/zvol/dsk/newpool/swap
swap -d /dev/zvol/dsk/rpool/swap
zfs destroy rpool/swap
[vi /etc/vfstab, and edit swap device]

(create new dump device)
zfs create -o volblocksize=128k -V 512M newpool/dump
dumpadm -d /dev/zvol/dsk/newpool/dump
zfs destroy rpool/dump

(rename old root pool)
zpool export rpool
zpool import rpool oldpool
mv /oldpool/boot/grub/bootsign/pool_rpool /oldpool/boot/grub/bootsign/pool_oldpool
echo "pool_oldpool" > /oldpool/etc/bootsign
[vi /oldpool/boot/grub/menu.lst]
umount /oldpool

(boot off old root pool to be able to rename new root pool back to "rpool"):