The reason why I wanted to change the sizes of the partitions of one of my linux systems was the lack of space on the root partition. I'm running this linux system as a Virtual Machine (VM) using 256MB of RAM.
I could have choosen to enlarge the vmdk file (the virtual disk), but I didn't. I'll tell you why. In a VM you can have a swap partition of half the size of the amount of memory (VMware recommendation). As I sticked to the 'linux-out-of-the-box-installation' 512MB was used for the swap partition. So I decided to shrink the swap and use it to extend the root partition.
System used: Fedora Core 6 (but the procedure does not only apply to this linux flavour) and VMware server, though the latter is not quite relevant in this situation.
Resize the swap partition
Check current swap space:
# free
total used free shared buffers cached
Mem: 376544 340732 35812 0 47608 186532
-/+ buffers/cache: 106592 269952
Swap: 528904 0 528904
# swapoff /dev/VolGroup00/LogVol01
# lvreduce -L -256M /dev/VolGroup00/LogVol01
# mkswap /dev/VolGroup00/LogVol01
# swapon /dev/VolGroup00/LogVol01
# free
total used free shared buffers cached
Mem: 376544 340732 35812 0 47608 186532
-/+ buffers/cache: 106592 269952
Swap: 294904 0 294904
Extend the Logical Volume containing the root partition
# lvdisplay
— Logical volume —
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID hriQEB-DgnX-Rj2U-wVtJ-LpZr-5Poi-BMu12M
LV Write Access read/write
LV Status available
# open 1
LV Size 1.31 GB
Current LE 42
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0
— Logical volume —
LV Name /dev/VolGroup00/LogVol01
VG Name VolGroup00
LV UUID a8v3Ss-MiGo-7TaU-Hv0F-qEwq-R0qx-0FMzze
LV Write Access read/write
LV Status available
# open 1
LV Size 288.00 MB
Current LE 9
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:1
The output of the next command shows us that there are 9 free Physical Extends on the physical volume. These will be added to the LV that contains the / partition:
# pvdisplay
— Physical volume —
PV Name /dev/sda2
VG Name VolGroup00
PV Size 1.88 GB / not usable 0
Allocatable yes
PE Size (KByte) 32768
Total PE 60
Free PE 9
Allocated PE 51
PV UUID waZQIQ-MR05-1wjy-wYQ9-PYGF-q9EB-BJjdvb
Extending:
# lvextend -l +9 /dev/VolGroup00/LogVol00
/dev/hdc: open failed: No medium found
Attempt to close device '/dev/hdc' which is not open.
Extending logical volume LogVol00 to 1.59 GB
Logical volume LogVol00 successfully resized
Current Logical Extends (LE) is now 51 (before it was 42)
# lvdisplay
/dev/hdc: open failed: No medium found
Attempt to close device '/dev/hdc' which is not open.
— Logical volume —
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID hriQEB-DgnX-Rj2U-wVtJ-LpZr-5Poi-BMu12M
LV Write Access read/write
LV Status available
# open 1
LV Size 1.59 GB
Current LE 51
Segments 2
Allocation inherit
Read ahead sectors 0
Block device 253:0
No free PE's anymore:
# pvdisplay
— Physical volume —
PV Name /dev/sda2
VG Name VolGroup00
PV Size 1.88 GB / not usable 0
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 60
Free PE 0
Allocated PE 60
PV UUID waZQIQ-MR05-1wjy-wYQ9-PYGF-q9EB-BJjdvb
Extend the partiontable
Now we still have to extend the partiontable for the / partition:
Today it is possible to extend root filesystem online in Fedora! This is really cool.
Before you had to boot the server using the rescue cd to the "linux rescue" mode.
# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 417792 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 417792 blocks long.
Extra: Summary of how to resize a vmdk and extend the logical volume
On the host:
VMware ESX 3.0.0 and higher:
# vmkfstools -X 20G "/path/to/vmdkfile.vmdk" (10Gb is the final size you want to have)
VMware server:
# vmware-vdiskmanager.exe -x 20Gb vmdkfile.vmdk
In the guest OS:
# df -h /
# fdisk /dev/sda (add a new partition and change the type to lvm (8e) using the t option in fdisk)
# shutdown -r 0
# vgdisplay VolGroup00
# pvcreate /dev/sda3
# shutdown -r 0
# vgextend VolGroup00 /dev/sda3
# vgdisplay VolGroup00
# lvextend -l+89 /dev/VolGroup00/LogVol00
# vgdisplay VolGroup00
# resize2fs /dev/VolGroup00/LogVol00
# df -h /
Thank you and goodbye!
( The best thing would be to recreate the partitions exactly the same on
the new disks first to make sure everything is still working fine. Then
increase the size of the partitions through fdisk and expand the
filesystem with resize2fs. )
Leave a Reply