Being able to resize an LVM volume without reboot is quite handy. I had described one way here. This is a slightly different take on the same topic, this time on RHEL 6.

I had resized /dev/sdb from 48GB to 140GB in vCenter. However, the operating system is still seeing the old size:

[root@build ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 48.3 GB, 48318382080 bytes
64 heads, 32 sectors/track, 46080 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000a

To get RHEL to see the new size, device rescan is needed:

[root@build ~]# cd /sys/class/block/sdb/device
[root@build ~]# echo "- - -" > rescan

The difference this time is that you do not need to look for the correct HBA and LUN number. You can just go by the device name. Now the operating system should see the correct disk size:

[root@build device]# fdisk -l /dev/sdb

Disk /dev/sdb: 198.6 GB, 198642237440 bytes
255 heads, 63 sectors/track, 24150 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: 0x00000000

Now you can proceed with resizing the physical volume and the logical volume. You can throw in -t switch to do a dry run:

[root@build device]# pvresize /dev/sdb
  Physical volume "/dev/sdb" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized
[root@build device]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  system lvm2 a--   19.47g   3.00g
  /dev/sdb   vg_app lvm2 a--  185.00g 140.00g

The size is correct now. Finally, resize the logical volume. Again, you can throw in -t switch to do a dry run:

[root@build device]# lvresize -r -l+100%FREE /dev/mapper/vg_app-lv_app
  Size of logical volume vg_app/lv_app changed from 45.00 GiB (11519 extents) to 140.00 GiB (35840 extents).
  Logical volume lv_app successfully resized
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_app-lv_app is mounted on /var/www/html/repo; on-line resizing required
old desc_blocks = 3, new_desc_blocks = 9
Performing an on-line resize of /dev/mapper/vg_app-lv_app to 36700160 (4k) blocks.
 The filesystem on /dev/mapper/vg_app-lv_app is now 36700160 blocks long.

Done