Resize KVM Disk

The following is based on the guide here by Steve Gordon.

root@vmem1:/var/lib/libvirt/images# qemu-img resize /var/lib/libvirt/images/oracle631-0.img +10G

Image resized.

root@vmem1:/var/lib/libvirt/images#

Verify resized as shown below.

root@vmem1:/var/lib/libvirt/images# ls -lrt oracle631*

-rw-r--r-- 1 root root 21474836480 Aug 12 19:31 oracle631-1.u00.img

-rw-r--r-- 1 root root 32212254720 Aug 12 19:34 oracle631-0.img

root@vmem1:/var/lib/libvirt/images#

Current size of /dev/vda in guest prior to changing partition as shown below.

[root@oracle631 ~]# fdisk -l /dev/vda

Disk /dev/vda: 32.2 GB, 32212254720 bytes

16 heads, 63 sectors/track, 62415 cylinders

Units = cylinders of 1008 * 512 = 516096 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x0002d9dd

Device Boot Start End Blocks Id System

/dev/vda1 * 3 1018 512000 83 Linux

Partition 1 does not end on cylinder boundary.

/dev/vda2 1018 41611 20458496 8e Linux LVM

Partition 2 does not end on cylinder boundary.

[root@oracle631 ~]#

The partition edits are a bit different for my system compared to Steve Gordon because my system has no extended partition as shown below.

[root@oracle631 ~]# fdisk /dev/vda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to

switch off the mode (command 'c') and change display units to

sectors (command 'u').

Command (m for help): p

Disk /dev/vda: 32.2 GB, 32212254720 bytes

16 heads, 63 sectors/track, 62415 cylinders

Units = cylinders of 1008 * 512 = 516096 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x0002d9dd

Device Boot Start End Blocks Id System

/dev/vda1 * 3 1018 512000 83 Linux

Partition 1 does not end on cylinder boundary.

/dev/vda2 1018 41611 20458496 8e Linux LVM

Partition 2 does not end on cylinder boundary.

Command (m for help): d

Partition number (1-4): 2

Command (m for help): p

Disk /dev/vda: 32.2 GB, 32212254720 bytes

16 heads, 63 sectors/track, 62415 cylinders

Units = cylinders of 1008 * 512 = 516096 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x0002d9dd

Device Boot Start End Blocks Id System

/dev/vda1 * 3 1018 512000 83 Linux

Partition 1 does not end on cylinder boundary.

Command (m for help): n

Command action

e extended

p primary partition (1-4)

p

Partition number (1-4): 2

First cylinder (1-62415, default 1): 1018

Last cylinder, +cylinders or +size{K,M,G} (1018-62415, default 62415):

Using default value 62415

Command (m for help): p

Disk /dev/vda: 32.2 GB, 32212254720 bytes

16 heads, 63 sectors/track, 62415 cylinders

Units = cylinders of 1008 * 512 = 516096 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x0002d9dd

Device Boot Start End Blocks Id System

/dev/vda1 * 3 1018 512000 83 Linux

Partition 1 does not end on cylinder boundary.

/dev/vda2 1018 62415 30944136 83 Linux

Command (m for help): t

Partition number (1-4): 2

Hex code (type L to list codes): L

0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris

1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-

2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-

3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-

4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx

5 Extended 42 SFS 86 NTFS volume set da Non-FS data

6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .

7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility

8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt

9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access

a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O

b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor

c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs

e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT

f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/

10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b

11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor

12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor

14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary

16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS

17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE

18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto

1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep

1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT

1e Hidden W95 FAT1

Hex code (type L to list codes): 8e

Changed system type of partition 2 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/vda: 32.2 GB, 32212254720 bytes

16 heads, 63 sectors/track, 62415 cylinders

Units = cylinders of 1008 * 512 = 516096 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x0002d9dd

Device Boot Start End Blocks Id System

/dev/vda1 * 3 1018 512000 83 Linux

Partition 1 does not end on cylinder boundary.

/dev/vda2 1018 62415 30944136 8e Linux LVM

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

The kernel still uses the old table. The new table will be used at

the next reboot or after you run partprobe(8) or kpartx(8)

Syncing disks.

[root@oracle631 ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on

/dev/mapper/vg_oracle631-lv_root

ext4 19G 15G 3.0G 84% /

tmpfs tmpfs 2.7G 74k 2.7G 1% /dev/shm

/dev/vda1 ext4 500M 113M 357M 24% /boot

/dev/mapper/vg_u00-lv_oracle

ext4 21G 47M 20G 1% /u00

[root@oracle631 ~]# reboot

Broadcast message from root@oracle631.vmem.org

(/dev/pts/0) at 19:59 ...

The system is going down for reboot NOW!

[root@oracle631 ~]# Connection to 10.207.39.72 closed by remote host.

Connection to 10.207.39.72 closed.

gstanden@vmem1:~$

When KVM guest finishes rebooting, resize the physical volume as shown below.

[root@oracle631 ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on

/dev/mapper/vg_oracle631-lv_root

ext4 19G 15G 3.0G 84% /

tmpfs tmpfs 2.7G 74k 2.7G 1% /dev/shm

/dev/vda1 ext4 500M 113M 357M 24% /boot

/dev/mapper/vg_u00-lv_oracle

ext4 21G 47M 20G 1% /u00

[root@oracle631 ~]# pvs

PV VG Fmt Attr PSize PFree

/dev/vda2 vg_oracle631 lvm2 a-- 19.51g 0

/dev/vdb vg_u00 lvm2 a-- 20.00g 0

[root@oracle631 ~]# pvresize /dev/vda2

Physical volume "/dev/vda2" changed

1 physical volume(s) resized / 0 physical volume(s) not resized

[root@oracle631 ~]# pvs

PV VG Fmt Attr PSize PFree

/dev/vda2 vg_oracle631 lvm2 a-- 29.51g 10.00g

/dev/vdb vg_u00 lvm2 a-- 20.00g 0

[root@oracle631 ~]#