How to resize root LVM partition in Fedora without LiveCD or Rebooting

I have a virtual machine that recently had its disk image increased from 20GB to 50GB, and fdisk -l verifies that the VM can see this new size. Now I need to resize my root LVM partition to fill the extra 30GB.

I've found several articles about resizing LVM, but the few that cover resizing the root partition all claim you need to boot from a LiveCD. Is there any way to do this without taking down the server? The server is critical, so I'd like to minimize downtime.

Edit: Output of fdisk -l:

[root@fedora-host ~]# sudo fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00097c90

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    83886079    41430016   8e  Linux LVM

Disk /dev/mapper/VolGroup-lv_root: 36.1 GB, 36104568832 bytes
255 heads, 63 sectors/track, 4389 cylinders, total 70516736 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_root doesn't contain a valid partition table

Disk /dev/mapper/VolGroup-lv_swap: 6308 MB, 6308233216 bytes
255 heads, 63 sectors/track, 766 cylinders, total 12320768 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_swap doesn't contain a valid partition table

Edit: How do I resize the physical partition? fdisk can see the free space, but I don't know how to resize primary LVM partition to use it. I tried booting into a LiveCD and using parted'd resize command, but all it gives me is the error "Unable to detect file system". I found this guide, which says I need to delete the partition and create a new one with the correct size, but that sounds very dangerous.

Final Edit: Parted's resize command is oddly unable to resize LVM partitions. Go figure. Instead, I simply deleted the old partition and created a new one with the new range, as outlined in the link above, and that correctly resized the LVM partition. I then followed the advice below to resize the volumes and filesystems inside the LVM partition.


You can grow a logical volume online. You'd have to unmount it to shrink it (which requires a LiveCD / Rescue Mode.)

  1. pvresize /dev/sda2 (assuming your LVM partition is sda2. Replace as required.)
  2. lvextend /dev/mapper/root -l+100%FREE (or, whatever your root logical volume is called.)
  3. resize2fs /dev/mapper/root (assuming ext2/3/4)

Install gparted. Run as root (use ssh -X or x2go if remote). Select the partition. It should show free space past the end (to the right). If it doesn't, you need to reboot for your virtual machine to see the new size of the virtual device. That should be minimal downtime with systemd.

Right click and select resize. Drag the end to the end of the disk. Make sure you do not touch the beginning. gparted is able to move a partition during resize, but that will, of course destroy a running system. But moving the end is fine. Review the pending operation gparted will perform to make sure you are extending and not moving the partition. Click apply. gparted will change the partition on disk, then issue the kernel ioctl to reread the partition table, changing the size of the live block device as well. Then, since it sees it is an LVM PV, it runs pvresize for you. Exit gparted, and vgs now shows your new space.

I've heard rumors that parted can do all that without the overhead of a GUI, but I've never been able to figure out the voodoo. Parted has to be one of the worst CLI interfaces I've ever tried to use.

Don't use fdisk, you have to delete and reallocate the partition to resize, and by default it will wipe the LVM2 signature on write. I think I saw an "advanced" option to turn off that destructive behavior, but I've never tested it.

You could also try cfdisk (curses fdisk). It might have a usable partition resize. It is easy enough to run pvresize manually, and there is a command to tell the kernel to reread the partition table. But I'd have to test to make sure it doesn't wipe the LVM signature like fdisk.