Hello All.
Please check how it is implemented on "resources". We just need to allocate a separate shared disk for storing data and mount it into /var/lib/jenkins. This disk should not have any partitions just be plain /dev/vdb or whatever block device. I think we really do not needed to grow the root file system as once it is puppetized and "data" disk is made sharable it is easy to provision another vm and make it use the same data. Providing we leave enough space in root that should be enough to go I think.
To grow that data disk you increase it's size in UI and then do resizefs or whatever tool for your filesystem is and that's it. No downtime and no extra abstractions like LVM or whatever. Even no parameters to resizefs as it determines the block device size itself. Completely error proof. And running "fdisk" is dangerous operation to my opinion as you can easily mess it up.
This is my opinion of cause, but resources already uses that schema.