Linux / VMware: Howto Increase a / (Root) LVM partition on a single vmdk without adding another partition

2

Howto Increase a / (Root) LVM partition on a single vmdk without adding another partition (For example under VMware Workstation)

  1.   Increase Vmware partition and LVM

Resize your vmdk under VMWare as you would do it usually. Once you’ve resized the vmdk I advise to take a snapshot while everything is still fine. That way if you completely screw your VM’s partition table you have a back-out

  1. Run
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_sat01-lv_root
                       16G  3.9G   11G  27% /
tmpfs                 935M     0  935M   0% /dev/shm
/dev/sda1             485M   37M  423M   8% /boot

It will all look a bit like this

run

# /sbin/fdisk -u -l /dev/sda

Disk /dev/sda: 96.6 GB, 96636764160 bytes
255 heads, 63 sectors/track, 11748 cylinders, total 188743680 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: 0x0002fb7a

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2         1026048    41943039    20458496   8e  Linux LVM

to determine the size of the partitions in sectors.

The bold number is important.  the starting sector of /dev/sda2. In my case it’s 1026048. It will be different for you. Note it down.
3. Delete the partition and recreate it, with the new end point (which will be the default):

# sudo /sbin/fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units tosectors (command 'u').
Command (m for help): p

Disk /dev/sda: 96.6 GB, 96636764160 bytes
255 heads, 63 sectors/track, 11748 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002fb7a

 Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 2611 20458496 8e Linux LVM

Command (m for help): d
Partition number (1-4): 2

Command (m for help): n
Command action
 e extended
 p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (64-11748, default 64): (I pressed Enter)
Using default value 64
Last cylinder, +cylinders or +size{K,M,G} (64-11748, default 11748):
Using default value 11748 (I pressed Enter again)

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)
  1. Before you save the partition table, change the beginning sector of /dev/sda2 to match the old configuration exactly by going into expert mode. In my case it was 1026048. Please use your value:
Command (m for help): x

Expert command (m for help): b
Partition number (1-4): 2
New beginning of data (1026048-188731619, default 1026048): 1026048

Expert 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.
  1. Now its time to reboot the Guest and see if it worked. If not then use the Snapshot to revert and try again.
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_sat01-lv_root
                       16G  3.9G   11G  27% /
tmpfs                 935M     0  935M   0% /dev/shm
/dev/sda1             485M   37M  423M   8% /boot

Nothing has changed yet

reboot

  1. Once the machine is back run.
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_sat01-lv_root
 16G 3.9G 11G 27% /
tmpfs 935M 0 935M 0% /dev/shm
/dev/sda1 485M 37M 423M 8% /boot
# vgdisplay
 --- Volume group ---
 VG Name vg_sat01
 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.51 GiB
 PE Size 4.00 MiB
 Total PE 4994
 Alloc PE / Size 4994 / 19.51 GiB
 Free PE / Size 0 / 0
 VG UUID idadRN-6Bla-K9sp-tuVo-wB37-ormr-G1HSD4

 

OK Nothing yet has changed. But now …

# pvresize /dev/sda2
 Physical volume "/dev/sda2" changed
 1 physical volume(s) resized / 0 physical volume(s) not resized

# vgdisplay
 --- Volume group ---
 VG Name vg_sat01
 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 89.50 GiB
 PE Size 4.00 MiB
 Total PE 22913
 Alloc PE / Size 4994 / 19.51 GiB
 Free PE / Size 17919 / 70.00 GiB
 VG UUID idadRN-6Bla-K9sp-tuVo-wB37-ormr-G1HSD4
  1. Now we need to increase the Volume

Use lvextend to increase the space available for the logical volume by the amount of free space displayed with vgdiplay.
The command arguments will be different for you:

# lvextend -l+100%FREE /dev/vg_sat01/lv_root     (I want 100% of the rest of the Free space  (note its a L not a 1:-) ) 
Extending logical volume lv_root to 85.60 GiB
Logical volume lv_root successfully resized
  1. Use resize2fs to increase the size of the filesystem. The command argument will be different on your system:
# resize2fs /dev/mapper/vg_sat01-lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_sat01-lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 6
Performing an on-line resize of /dev/mapper/vg_sat01-lv_root to 22438912 (4k) blocks.
The filesystem on /dev/mapper/vg_sat01-lv_root is now 22438912 blocks long.

If things went to plan you should see now a much larger Root FS

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_sat01-lv_root
                       85G   11G   70G  14% /

2 thoughts on “Linux / VMware: Howto Increase a / (Root) LVM partition on a single vmdk without adding another partition

  1. Great thanks andreas it finally worked for our nagios xi…actually the doc coming from nagios is very faulty and never tell about the “x” inside the “partition table” modification part…

Leave a Reply