Before we start you will need to do the following in XenCenter
- Shutdown the VM
- Increase the virtual hard drive size of the Linux VM
- Boot the VM back up
Before starting any of the following, it is a good idea to backup any data you would not want to lose. You should not lose any data following these steps, but there is always the possibility for something to go wrong.
What is going to happen
- Delete the main partition. We are going to recreate it.
- Create a new partition that starts on the same boundary as the previous partition
- Write changes to disk and reboot
- Resize the Disk
- Check that everything went well
The path to the disk is “/dev/xvda” the LVM path/name is “/dev/VolGroup/lv_root” The goal is to increase lv_root’s size from about 8GB to about 12GB. If for some reason your drive is not “xvda” or your LVM name is different, change the commands accordingly.
Here are the commands in a nutshell.
fdisk /dev/xvda <-- Edit the Partition Table
reboot <-- Reboot to apply the partition table updates
pvdisplay <-- Display Physical Volume info
pvresize /dev/xvda2 <-- Resize Physical Volume
lvresize /dev/xvda2 -l +100%FREE <-- Resize Logical Volume
resize2fs /dev/VolGroup/lv_root <-- Resize File System
Example:
You may be able to substitute all the fdisk commands with
`parted /dev/xvda resizepart 2 100%`
Change 2 for the actual partition you need to resize.
All the keys and command that were hit and executed are in bold.
[root@localhost ~]# fdisk /dev/xvda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p
Disk /dev/xvda: 12.9 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00066ace
Device Boot Start End Blocks Id System
/dev/xvda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/xvda2 64 1045 7875584 8e Linux LVM
Command (m for help): d
Partition number (1-4): 2
Command (m for help): p
Disk /dev/xvda: 12.9 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00066ace
Device Boot Start End Blocks Id System
/dev/xvda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (64-1566, default 64):
Command (m for help): p
Disk /dev/xvda: 12.9 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00066ace
Device Boot Start End Blocks Id System
/dev/xvda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/xvda2 64 1566 12065871 83 Linux
Command (m for help): wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@localhost ~]# reboot
Show the current size of the Physical Volume
pvdisplay
[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name /dev/xvda2
VG Name VolGroup
PV Size 7.51 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 1922
Free PE 0
Allocated PE 1922
PV UUID zKmGEt-Uf0A-I14h-NDYc-53rf-micT-VxNqsP
[root@localhost ~]#
Resize the Physical Volume
pvresize /dev/xvda2
[root@localhost ~]# pvresize /dev/xvda2
Physical volume "/dev/xvda2" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
[root@localhost ~]#
Run pvdisplay again. You should see more space under PV Size.
[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name /dev/xvda2
VG Name VolGroup
PV Size 11.51 GiB / not usable 2.08 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 2945
Free PE 1023
Allocated PE 1922
PV UUID zKmGEt-Uf0A-I14h-NDYc-53rf-micT-VxNqsP
[root@localhost ~]#
Notice the “Free PE” section above. If it says 0 then you won’t be able to run the next command.
Resize LVM
the “+100%FREE” part of the command tells it to uses up all of the free space available
lvresize /dev/VolGroup/lv_root -l +100%FREE
[root@localhost ~]# lvresize /dev/VolGroup/lv_root -l +100%FREE
Extending logical volume lv_root to 10.71 GiB
Logical volume lv_root successfully resized
[root@localhost ~]#
Resize the File System
resize2fs /dev/VolGroup/lv_root
[root@localhost ~]# lvresize /dev/VolGroup/lv_root -l +100%FREE
Extending logical volume lv_root to 10.71 GiB
Logical volume lv_root successfully resized
[root@localhost ~]#
And that is it. Check out the extra space.
[root@localhost ~]# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 11G 733M 9.3G 8% /
[root@localhost ~]# exit