Partitioning is a means to divide a single hard drive into many logical drives. A partition is a contiguous set of blocks on a drive that are treated as an independent disk. A partition table is an index that relates sections of the hard drive to partitions.

Definitions

Primary partition - A disk can have up to 4 primary partitions. It cannot have more that 4 due to limitations of the disk primary partition table. To get around this limitation, an extended partition may be used.

Extended partition - A special primary partition that is subdivided into logical partitions. There can be no more than 1 extended partition on a disk.

In this example, /dev/sda4 is the extended partition. All the logical partitions reside on an extended partition.

LVM

If you're not sure what size to make your partitions, using a small ext3 /boot partition and lvm2-based partitions for the rest can be a good idea. The advantage of LVM is that it makes resizing more practical. In the DebianInstaller partition manager each logical volume is treated as if it were a disk in which you make partitions.

I assign a single partition per logical volume. Then when I want to increase the size of a partition, I umount the donor and recipient partitions, resize (shrink) the donor partition, resize (shrink) the donor logical volume, resize (grow) the recipient logical volume, resize (grow) the recipient partition, and finally remount. This may sound the same as with e2fsresize on regular partitions, but it is not.

ext2/3 partition cannot be moved, so you can only gain space by shrinking the preceding partition, deleting the partition to grow, and recreating it larger, or by removing the following partition, increasing the size of the current partition, and recreating the following partition. With lvm2 the space comes from whatever logical volume you choose to shrink. lvm handles the details of where on the disk the partition blocks actually are.

After Partitioning

After partitioning, the partition numbers of the unaltered partitions may change. For example, a partition that used to be identifed as /dev/sda7 may change to /dev/sda6 after the deletion of a partition. In this case, a number of configuration files needs to edited:

The fstab file needs to be altered so that the swap partition and the various static mount points will work properly

If the partition number for the swap partition was altered, the /etc/initramfs-tools/config.d/resume file also needs to be edited. This file indicates the partition used for hibernation; the swap partition is generally used for this purpose. update-initramfs -u needs to be ran afterwards to update the initramfs image.