Expanding a File System Using the growfs Command

After a volume that contains a UFS file system is expanded (meaning that more space is added), you also need to expand the file system in order to recognize the added space. You must manually expand the file system with the growfs command. The growfs command expands the file system, even while the file system is mounted. However, write access to the file system is not possible while the growfs command is running.

An application, such as a database, that uses the raw device must have its own method to incorporate the added space. Solaris Volume Manager does not provide this capability.

The growfs command “write-locks” a mounted file system as it expands the file system. The length of time the file system is write-locked can be shortened by expanding the file system in stages. For instance, to expand a 1-Gbyte file system to 2 Gbytes, the file system can be grown in 16 Mbyte stages by using the s option. This option specifies the total size of the new file system at each stage.

During the expansion, the file system is not available for write access because of the write-lock feature. Write accesses are transparently suspended and are restarted when the growfs command unlocks the file system. Read accesses are not affected. However, access times are not kept while the lock is in effect.

Background Information for Expanding Slices and Volumes

Note

Solaris Volume Manager volumes can be expanded. However, volumes cannot be reduced in size.

  • A volume can be expanded whether it is used for a file system, application, or database. You can expand RAID-0 (stripe and concatenation) volumes, RAID-1 (mirror) volumes, and RAID-5 volumes and soft partitions.

  • You can concatenate a volume that contains an existing file system while the file system is in use. As long as the file system is a UFS file system, the file system can be expanded (with the growfs command) to fill the larger space. You can expand the file system without interrupting read access to the data.

  • Once a file system is expanded, it cannot be reduced in size, due to constraints in the UFS file system.

  • Applications and databases that use the raw device must have their own method to expand the added space so that they can recognize it. Solaris Volume Manager does not provide this capability.

  • When a component is added to a RAID-5 volume, it becomes a concatenation to the volume. The new component does not contain parity information. However, data on the new component is protected by the overall parity calculation that takes place for the volume.

  • You can expand a log device by adding additional components. You do not need to run the growfs command, as Solaris Volume Manager automatically recognizes the additional space on reboot.

  • Soft partitions can be expanded by adding space from the underlying volume or slice. All other volumes can be expanded by adding slices.

How to Expand a File System

Check Prerequisites for Creating Solaris Volume Manager Components.

  1. Review the disk space associated with a file system.

    # df -hk
    

    See the df ( 1M ) man page for more information.

  2. Expand a UFS file system on a logical volume.

    # growfs -M /mount-point /dev/md/rdsk/volume-name
    
    
    M /mount-point

    Specifies the mount point for the file system to be expanded.

    /dev/md/rdsk/volume-name

    Specifies the name of the volume on which you want to expand.

    See the following example and the growfs ( 1M ) man page for more information.

Example 20.4. Expanding a File System

In the following example, a new slice is added to a volume, d10, which contains the mounted file system, /home2. The growfs command specifies the mount point with the M option to be /home2, which is expanded onto the raw volume /dev/md/rdsk/d10. The file system will span the entire volume when the growfs command is complete. You can use the df hk command before and after expanding the file system to verify the total disk capacity.

# df -hk
Filesystem            kbytes    used   avail capacity  Mounted on
...
/dev/md/dsk/d10        69047   65426       0   100%    /home2
...
# growfs -M /home2 /dev/md/rdsk/d10
/dev/md/rdsk/d10:       295200 sectors in 240 cylinders of 15 tracks, 82 sectors
        144.1MB in 15 cyl groups (16 c/g, 9.61MB/g, 4608 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
 32, 19808, 39584, 59360, 79136, 98912, 118688, 138464, 158240, 178016, 197792,
 217568, 237344, 257120, 276896,
# df -hk
Filesystem            kbytes    used   avail capacity  Mounted on
...
/dev/md/dsk/d10       138703   65426   59407    53%    /home2
...

For mirror volumes, always run the growfs command on the top-level volume. Do not run the command on a submirror or master device, even though space is added to the submirror or master device.