The organization I work for deploys RedHat primarily as virtualized instances. These instances are deployed primarily from standard templates. These templates, obviously, are created with specific sizes of virtual disk for the root drive and specific partition layouts.
Ocasionally, these RedHat-containing VMs are not properly sized for their ultimate use. Tools like VMware make this not too much of a problem: you can add additional virtual disks or up the size of existing virtual disks. Even better, you can do it "on-the-fly" (without having to restart the VM). RedHat handles on-the-fly adding and removing of disks decently well (a little more manual than is ideal, but still workable).
Unfortunately, I've not really found a good way for handling on-the-fly changes to the size of existing virtual disks. I can change the size of a disk all day and RedHat won't notice it. I can force RedHat to notice the geometry change if I use the `blockdev` command. Unfortunately, if there are active filesystems on the disk or active LVMs on the disk, `blockdev` errors out with a "Device Busy" message. If `blockdev` can't function, RedHat won't see the geometry change. If RedHat doesn't see the geometry change, I can't modify the disk's partition table to make the grown disk's storage available.
It would be nice to be able to resize a disk, on-the-fly, and have RedHat be able to see the new geometry. In the case of boot disks, it would save having to reboot the system. In the case of application data disks, it would (potentially) save having to take the application offline.
Am I missing some bit of magic in RHEL that would allow me to do things fully on-the-fly?