I was running OEL 5.6 as the guest OS on VMWare hosted in a Fedora machine.
The machine had a 20Gb virtual disk and I had initially allocated about 11Gb to the root system.
I know it is not within best practice, but I was doing some quick configuration tests with Oracle so I had decided to install software and database files in the root file system.
Well, a couple of oracle releases later I had run out of space in the file system.
So the scenario was:
- The VM had a 20Gb disk allocated, but
- The disks partitions were only about 12Gb big, divided in two logical volumes: lv00 mapped to the root file system and lv01 used by the swap file system.
- Its usually pretty easy to extend a file system. Just unmount it and run a couple of commands. But you can't unmount the root file system and keep the system going.
(?) So how to extend the logical volume and the file system?
- Well, it turns out that this can be done without having to unmount the root file system for systems with a 2.6 kernel. You just need to use
lvextend
andresize2fs
.
Here is some output of the initial scenario:
jdoe@quark # fdisk -l Disk /dev/sda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 19 152586 83 Linux /dev/sda2 20 2610 20812207+ 8e Linux LVM Disk /dev/dm-0 doesn't contain a valid partition table Disk /dev/dm-1: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/dm-1 doesn't contain a valid partition table
jdoe@quark # df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VG00-LV00 12G 11G 0 100% / /dev/sda1 145M 20M 118M 15% /boot tmpfs 944M 0 944M 0% /dev/shm
The output of
vgdisplay
: jdoe@quark # vgdisplay --- Volume group --- VG Name VG00 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 19.84 GB PE Size 32.00 MB Total PE 635 Alloc PE / Size 439 / 13.72 GB Free PE / Size 196 / 6.12 GB VG UUID y8WrXG-06ej-erEH-k3QV-fqvy-VJ8O-1hV4uT
The output of pvscan:
jdoe@quark # pvscan PV /dev/sda2 VG VG00 lvm2 [19.84 GB / 6.12 GB free] Total: 1 [19.84 GB] / in use: 1 [19.84 GB] / in no VG: 0 [0 ]
Solution:
- Since the total disk space on /dev/sda was already allocated to the Volume group,
what I needed to do was just to extend the logical volume to use the free space in the volume group.
jdoe@quark # lvextend -l+196 /dev/VG00/LV00 Extending logical volume LV00 to 17.84 GB Logical volume LV00 successfully resized jdoe@quark # jdoe@quark # resize2fs /dev/VG00/LV00 resize2fs 1.39 (29-May-2006) Filesystem at /dev/VG00/LV00 is mounted on /; on-line resizing required Performing an on-line resize of /dev/VG00/LV00 to 4677632 (4k) blocks. The filesystem on /dev/VG00/LV00 is now 4677632 blocks long.
And that did it.
Here are some printouts of the final scenario:
jdoe@quark # fdisk -l Disk /dev/sda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 19 152586 83 Linux /dev/sda2 20 2610 20812207+ 8e Linux LVM jdoe@quark # df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VG00-LV00 18G 11G 5.7G 66% / /dev/sda1 145M 20M 118M 15% /boot tmpfs 944M 0 944M 0% /dev/shm jdoe@quark # vgdisplay --- Volume group --- VG Name VG00 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 19.84 GB PE Size 32.00 MB Total PE 635 Alloc PE / Size 635 / 19.84 GB Free PE / Size 0 / 0 VG UUID y8WrXG-06ej-erEH-k3QV-fqvy-VJ8O-1hV4uT