Expand Hard Disk VMWare Linux (Debian)
I had Nagios running on a VM and the primary partition had almost no space left. Here the steps I had to do to expand the Partition.
1. Prepare the VM
1. Shutdown VM
2. Remove all Snapshots (Otherwise you can’t expand the HD)
3. Expand the Hard Drive
4. Make a Snapshot again in case something goes wrong
2. Check the State
Show all partitions and note the infos somewhere
fdisk -l
1 2 3 4 |
Device Boot Start End Id System /dev/sda1 1 2517 83 Linux /dev/sda2 2518 2610 5 Extended /dev/sda5 2518 2610 82 Linux swap / Solaris |
3. Find out the Start and the End Sector of the unallocated Space
Well the only way I found out was was actually to create an additional partition.
1. fdisk /dev/sda
2. n (new partition)
3. p (primary)
4. 3 (free number)
5. Enter (Note the default Start Number)
6. Enter (Note the default End Number)
7 w (To write/save it)
And now it looked like this and from the /dev/sda3 can I see now the last sector which is 5221:
1 2 3 4 5 |
Device Boot Start End Id System /dev/sda1 1 2517 83 Linux /dev/sda2 2518 2610 5 Extended /dev/sda3 2611 5221 83 Linux /dev/sda5 2518 2610 82 Linux swap / Solaris |
First of all I didn’t understand why are the sectors from /dev/sda2 and /dev/sda5 overlapping. After some research it made sense because without and extended partition there would be a limit of just 4 primary partitions. This means that the /dev/sda2 is actually the container of the logical partition /dev/sda5.
Secondly I didn’t want to have a seperate partition /dev/sda3, instead I wanted to expand the /dev/sda1. But this is going to be a problem because we would need the sectors next to it and this would be overlapping with /dev/sda2 and /dev/sda5.
So with all previous information it is now easy to calcualte all Start and End Sectors of the partitions and the result should look like this
1 2 3 4 |
Device Boot Start End Id System /dev/sda1 1 5128 3 Linux /dev/sda2 5129 5221 83 Linux /dev/sda5 5129 5221 82 Linux swap / Solaris |
4. Repartition Everything
Now to get the result above we need to repartition everything.
1. First of all we need to switch off swapping so that the partiton /dev/sda2 and /dev/sda5 can be deleted
swapoff -a
2. fdisk /dev/sda
3. Delete all partitions even the /dev/sda1
d (Trough all numbers)
4. Recreate all partitions with the Start and End Sectors we calculated. /dev/sda1 should be a primary and the /dev/sda2 an extended. Then add the /dev/sda5 which is a logical in /dev/sda2.
n
5. With the /dev/sda5 I changed the Partition ID to SWAP
t
82
6. Save it
w
Switch swapping back on swapon /dev/sda5
4. Make sure the Kernels takes modified partition table into account
Now the partition table has been modified but the Kernel doesn’t take it to account yet.
partx /dev/sda
This command should fix this but I also rebooted the machine.
5. Finally expand the Partition
resize2fs /dev/sda1
Now you should have it. You can check the result with df.