Resizing a logical volume on Oracle Enterprise Linux (OEL) 5.6


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:
  1. The VM had a 20Gb disk allocated, but
  2. 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.
  3. 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 and resize2fs.

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

No comments:

Post a Comment