Sometimes the growth of a filesystem (particularly /home ) means that it is necessary to find it a new home; in other words, add another physical disk and relocate the filesystem to its new home where there is room to grow.

Here is the procedure for adding another drive, with a single partition which will become the new /home filesystem (I'm assuming fdisk has already been used to partition it):

As root:

# mkdir /mnt/newhome
# mkfs –t ext2 /dev/hdb1
# mount /dev/hdb1 /mnt/newhome
# (cd /home && tar cf - .) | (cd /mnt/newhome && tar xpf -)

then

# umount /home
# mv /home /home.old
# mkdir /home
# umount /mnt/newhome
# mount /dev/hdb1 /home

Once the new /home directory tree has been checked out, you can then safely

# rm –rf /home.old
# rmdir /mnt/newhome

to clean up. Don't forget to edit /etc/fstab to mount the new filesystem into /home!

Refinements

It is also possible to move subdirectory trees between systems using a refinement of the above technique of piping between tars. For example:

(cd /home && tar cf .) | ssh backuphost (cd /var/backup && tar xpf -)

will back up the contents of the home directory from one system to another.