Assuming one LV on each VG, your process would like this:
- Unmount the volume on VG_GUESTS.
- Shrink ext3 fs on the volume that uses VG_GUESTS with resize2fs.
- Shrink the LV on VG_GUESTS with lvreduce.
- Shrink the sda2 PV with pvresize - this may fail.
- Refresh the VG information with vgreduce.
- Use a partitioning tool to modify the size of sda2 and create sda3 in the free space.
- Mount the volume on VG_GUESTS.
- Add sda3 to VG_SYS.
- Extend LV on VG_SYS with lvextend.
- Resize the file system with resize2fs (should work online, but you should be ready to boot from a LiveCD).
Scared yet? If you are, I've managed to create the correct impression. Because this is playing with fire. I can bet $5 against your single that something will go wrong, and you'll lose your data.
Instead of trying to shrink the volume, which is always difficult and dangerous, the safest approach is actually something a bit more destructive:
- Backup guests volume.
- Unmount the volume.
- Remove the PV from sda2 with pvremove.
- Use a partitioning tool to modify the size of sda2 to the size you want to add to VG_SYS, then create sda3 using the remaining space that will house the new VG_GUESTS.
- Create new PV on sda2, then add it to VG_SYS.
- Extend LV on VG_SYS with lvextend.
- Resize the file system with resize2fs (should work online, but you should be ready to boot from a LiveCD).
- Create PV on sda3, then VG on that PV, then LV on that VG, then ext3 fs on that LV, then mount it on the guests volume mount point.
- Restore your data to that new volume.
I've intentionally omitted the exact commands, since you should be doing this kind of thing with complete understanding of what each command does, so RTFM and good luck.