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:
# ext2resize /dev/HOWTO/small 40000
Where 40000 is the number of blocks the filesystem should have after growing
or shrinking.
FIXME: write this