ZFS on Linux resize rpool
In a previous article I setup Ubuntu 13.04 to run off a ZFS root pool. During my setup I used 4G out of an 8G disk for rpool only and mentioned we can just resize later. Turns out ZFS on linux have a bug and to get autoextend to work you need to do an extra step.
Note: Since I could not find a tool (including parted) to resize a ZFS physical partition; and my parition layout on the main disk was simple enough; I just ended up booting a livecd and deleting sda2 and creating it bigger.
Partitions before I started:
# fdisk -l
...
Device Boot Start End Blocks Id System
/dev/sda1 * 63 96389 48163+ be Solaris boot
/dev/sda2 96390 7903979 3903795 bf Solaris
Partitions after I deleted and recreated sda2:
# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes
...
Device Boot Start End Blocks Id System
/dev/sda1 * 63 96389 48163+ be Solaris boot
/dev/sda2 96390 16777215 8340413 bf Solaris
First boot after partition change:
# df -h Filesystem Size Used Avail Use% Mounted on rootfs 3.7G 3.1G 580M 85% / # zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 3.69G 3.06G 638M 83% 1.00x ONLINE - # zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 3.06G 580M 31K /rpool rpool/ROOT 3.06G 580M 31K /rpool/ROOT rpool/ROOT/ubuntu-1 3.06G 580M 3.06G /
Try a normal autoexpand:
# zpool get autoexpand rpool NAME PROPERTY VALUE SOURCE rpool autoexpand off default # zpool set autoexpand=on rpool # zpool get autoexpand rpool NAME PROPERTY VALUE SOURCE rpool autoexpand on local
Then I tried a reboot to see if zfs will pickup the autoexpand change. That did not work and rebooting is most likely not necessary at all.
I found a bug on ZFS on linux list:
http://rainemu.swishparty.co.uk/cgi-bin/gitweb.cgi?p=zfs;a=commitdiff;h=3b2e400c94eb488cff53cf701554c26d5ebe52e4
Then tried onlining the rpool and it worked.
# zpool online -e rpool /dev/disk/by-id/scsi-SATA_VBOX_HARDDISK_VBb59e0ffb-68fb0252-part2 # zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 7.94G 3.07G 4.87G 38% 1.00x ONLINE - # df -h | grep rpool rpool/ROOT/ubuntu-1 7.9G 3.1G 4.8G 40% / rpool 4.8G 0 4.8G 0% /rpool rpool/ROOT 4.8G 0 4.8G 0% /rpool/ROOT # df -h | grep rootfs rootfs 7.9G 3.1G 4.8G 40% /