How to grow a ZFS volume

How to grow a ZFS Volume.

Assume the following is true:

  • Pool Name: fort
  • Volume Name: vol1
  • Mount Point: /mnt/vol1
  • 1. Display file system mount status

    # df -h /mnt/vol1/
    Filesystem             size   used  avail capacity  Mounted on
    /dev/zvol/dsk/fort/vol1
                           962M   1.0M   903M     1%    /mnt/vol1
    

    Notice its 1Gig in size (962M formatted).

    2. Display current ZFS volume size and reservation properties

    # zfs get volsize,reservation fort/vol1
    NAME           PROPERTY     VALUE          SOURCE
    fort/vol1  volsize      1G             -
    fort/vol1  reservation  1G             local
    

    Confirms the volume is 1Gig in size with a 1Gig reservation.

    3. Change the volsize ZFS property for fort/vol1 to 2Gig.

    # zfs set volsize=2g fort/vol1
    

    4. Confirm the changes were made by displaying the volsize and reservation ZFS properties.

    # zfs get volsize,reservation fort/vol1
    NAME           PROPERTY     VALUE          SOURCE
    fort/vol1  volsize      2G             -
    fort/vol1  reservation  2G             local
    

    Notice the “volsize” is now set to 2Gig. At this point, the OS doesnt see the expanded file system. In order for the OS to see the size, you will have to expand the file system with “growfs”.

    5. Run growfs to expand mounted file system

    # growfs -M /mnt/vol1 /dev/zvol/rdsk/fort/vol1
    Warning: 2048 sector(s) in last cylinder unallocated
    /dev/zvol/rdsk/fort/vol1:   4194304 sectors in 683 cylinders of 48 tracks, 128 sectors
            2048.0MB in 49 cyl groups (14 c/g, 42.00MB/g, 20160 i/g)
    super-block backups (for fsck -F ufs -o b=#) at:
     32, 86176, 172320, 258464, 344608, 430752, 516896, 603040, 689184, 775328,
     3359648, 3445792, 3531936, 3618080, 3704224, 3790368, 3876512, 3962656,
     4048800, 4134944
    

    The output should now show you the new volume size.

    6. Confirm the size of mounted file system using df or dd.

    # df -h /mnt/vol1/
    Filesystem             size   used  avail capacity  Mounted on
    /dev/zvol/dsk/fort/vol1
                           1.9G   2.0M   1.8G     1%    /mnt/vol1
    
    # dd if=/dev/zvol/dsk/fort/vol1 of=/dev/null bs=1024k
    2048+0 records in
    2048+0 records out
    

    Thats it! Growing a ZFS volume is an online operation in my mind.


    About this entry