Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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.

share|improve this question
    
Show us the output of fdisk - l. You did resize the partition and not just the volume right? –  Zoredache Sep 5 '12 at 21:58
    
@Zoredache, I added that output to the question. –  Cerin Sep 5 '12 at 22:51

3 Answers 3

up vote 6 down vote accepted

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)
share|improve this answer
    
I personally prefer lvextend -L [size][unit] /dev/group/volume, if only because I can extend a volume by 10 gigabytes by specifying -L +10G –  Hubert Kario Sep 5 '12 at 20:20
    
Yea, but the OP asked; Now I need to resize my root LVM partition to fill the extra 30GB. (Which is to grow the logical volume by the available free space.) –  Aaron Copley Sep 5 '12 at 21:17
    
"New size (1076 extents) matches existing size (1076 extents)" –  Cerin Sep 5 '12 at 23:41
    
See Zoredache's answer. It doesn't look like the partition was resized. From your original post it sounded like it had been. –  Aaron Copley Sep 6 '12 at 12:42
3  
I thought this trick was neat: If you add the -r option to lvextend, it will hook fsadm to resize the FS. This would make the 3rd step redundant. –  Jodie C Sep 7 '12 at 2:34

Did your system really change from 20 to 50 GB? That seems really odd since your sda2 device is ~40GB, lv_root shows 36GB, and swap shows 6GB.

Your output of fdisk -l shows the total sectors of /dev/sda is 104857600. The last sector used by /dev/sda2 is 83886079. This tells me that you have not adjusted the partition size to use all the available space on the drive. The pvresize command doesn't change the partition table. You need to change the partition table first.

share|improve this answer

If the LVM physical volume is on a partition then, no you can't resize it without rebooting.

You can edit partition table on drive, but Linux will refuse to use it until you reboot.

If you're using XFS, switch resize2fs to xfs_growfs.

You can display the PVs you use and LVs in volume group using pvs and lvs.

PV on raw disk

pvresize /dev/sda
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>

PV on a partition

First you have to resize the partition, use parted, fdisk or similar tool for that. Remember that those tools edit only the description where partitions are, they don't move data around. In other words, easily you can extend only the last partition on the disk. Then reboot your machine and after that you should be able to inform LVM that it has additional space available:

pvresize /dev/sda2
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>
share|improve this answer
    
Using a Gparted Live CD, sudo pvresize /dev/sda2 reports "1 physical volume(s) resized", but sudo lvextend /dev/mapper/VolGroup-lv_root -L +10G fails with the error "insufficient free space: 320 extents needed, but only 0 available". sudo fdisk -l reports that I have 54G available, while sudo pvdisplay reports only 40G are in use. Why is lvextend failing? –  Cerin Sep 5 '12 at 21:10
1  
@Cerin, you missed the Huberts first statement for a PV on a partition. First you have to resize the partition, use parted, fdisk or similar tool for that. –  Zoredache Sep 6 '12 at 1:24
    
@Zoredache, Ok, well, that's basically my entire question. I don't know how to do that. I just booted into a Gparted LiveCD and tried to use parted's resize command to increase the primary partition size, but it gave me the error "Could not detect filesystem". How do you resize the partition using parted or fdisk? –  Cerin Sep 6 '12 at 18:39
    
@Cerin: search SF or ask another question –  Hubert Kario Sep 6 '12 at 21:29

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.