1. Using LVM
For partitions created on Logical Volume Manager (LVM) (Linux feature) at install time, they can be resized easily by concatenating extents onto them or truncating extents from them over multiple storage devices without major system reconfiguration.
Caution: Deployment of the current LVM system may degrade guarantee against filesystem corruption offered by journaled filesystems such as ext3fs unless their system performance is sacrificed by disabling write cache of hard disk.
Run a df from terminal.
$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 7935392 6773500 752292 91% / /dev/sda5 497829 20904 451223 5% /boot tmpfs 1037084 0 1037084 0% /dev/shm /dev/mapper/VolGroup00-LogVol01 70877776 14988144 51045372 23% /home
We have two partitions here, / partition is about 8 Gb and the /home partition is about 71 Gb. What we are trying to do is to expand the / partition to 10 Gb by taking free space from /home.
For /home you do:
# sudo umount /home # sudo e2fsck -f /dev/VolGroup00/LogVol01 # resize2fs /dev/VolGroup00/LogVol01 69G # lvreduce -L-2G /dev/VolGroup00/LogVol01 # mount /home
For / you do:
# lvextend -L+2G /dev/VolGroup00/LogVol00 # resize2fs /dev/VolGroup00/LogVol00
e2fsck and resize2fs belong to package e2fsprogs.
After resizing you will get
$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 9299624 6779304 2043564 77% / /dev/sda5 497829 20904 451223 5% /boot tmpfs 1037084 0 1037084 0% /dev/shm /dev/mapper/VolGroup00-LogVol01 68877776 14999888 51033628 23% /home
Read the lvm-howto for detailed infotmation.
2. Mounting another partition
If you have an empty partition (e.g., “/dev/sdx”), you can format it with mkfs.ext3(1) and mount(8) it to a directory where you need more space. (You need to copy original data contents.)
$ sudo mv work-dir old-dir $ sudo mkfs.ext3 /dev/sdx $ sudo mount -t ext3 /dev/sdx work-dir $ sudo cp -a old-dir/* work-dir $ sudo rm -rf old-dir
3. Using symlink
This might be the easiest way. If you have an empty directory (e.g., “/path/to/emp-dir”) in another partition with usable space, you can create a symlink to the directory with ln(8).
$ sudo mv work-dir old-dir $ sudo mkdir -p /path/to/emp-dir $ sudo ln -sf /path/to/emp-dir work-dir $ sudo cp -a old-dir/* work-dir $ sudo rm -rf old-dir
4. Using aufs
If you have usable space in another partition (e.g., “/path/to/”), you can create a directory in it and stack that on to a directory where you need space with aufs. With aufs you can unite several directories into a single virtual filesystem.
$ sudo mv work-dir old-dir $ sudo mkdir work-dir $ sudo mkdir -p /path/to/emp-dir $ sudo mount -t aufs -o br:/path/to/emp-dir:old-dir none work-dir