You can do this with a provided script which does a lot of work for you, or you can do it by hand if needed.
If there is room within your volume group, and you use the ext2 filesystem (most people do), you can use this handy tool.
The e2fsadm
command uses the commercial resize2fs tool. While people feel that this is good software, it is not very widely installed.
If you want to use the FSF's ext2resize
command, you need to inform e2fsadm
of this:
# export E2FSADM_RESIZE_CMD=ext2resize # export E2FSADM_RESIZE_OPTS=""
The rest is easy, e2fsadm
is a lot like the other LVM commands:
# e2fsadm /dev/test/HOWTO -L+50M e2fsadm -- correcting size 102 MB to physical extent boundary 104 MB e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09 Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/test/HOWTO: 11/25688 files (0.0% non-contiguous), 3263/102400 blocks lvextend -- extending logical volume "/dev/test/howto" to 104 MB lvextend -- doing automatic backup of volume group "test" lvextend -- logical volume "/dev/test/HOWTO" successfully extended ext2_resize_fs ext2_grow_fs ext2_block_relocate ext2_block_relocate_grow ext2_grow_group ext2_add_group ext2_add_group ext2_add_group ext2_add_group ext2_add_group ext2_add_group direct hits 4096 indirect hits 0 misses 1 e2fsadm -- ext2fs in logical volume "/dev/test/HOWTO" successfully extended to 104 MB
The e2fsadm
command takes care of this for you. However, it may be useful to understand how to do this manually:
If you have room within your Volume Group, this is a one liner:
# lvextend -L+12M /dev/test/HOWTO lvextend -- rounding size to physical extent boundary lvextend -- extending logical volume "/dev/test/HOWTO" to 116 MB lvextend -- doing automatic backup of volume group "test" lvextend -- logical volume "/dev/test/HOWTO" successfully extended
This is done with the vgextend utility, and is easy as pie. You first need to create a physical volume. This is done with the pvcreate
utility. With this tool, you convert any block device into a physical volume.
After that is done, vgextend
does the rest:
# pvcreate /dev/sda1 pvcreate -- physical volume "/dev/sda1" successfully created # vgextend webgroup /dev/sda1 vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte vgextend -- doing automatic backup of volume group "webgroup" vgextend -- volume group "webgroup" successfully extended
Please note that in order to do this, your Volume Group needs to be active. You can make it by executing 'vgchange -a y webgroup'.
If you want to do this manually, there are a couple of ways to do this.
By off-line, we mean that you have to unmount the file-system to make these changes. The file-system and it's data will be unavailable while doing this. Note this means you must use other boot media if extending the size of the root or other important partitions.
The ext2resize tool is available on the GNU ftp size, but most distributions carry it as a package. The syntax is very straightforward:
Where 40000 is the number of blocks the filesystem should have after growing or shrinking.
# ext2resize /dev/HOWTO/small 40000
FIXME: write this