How do you safely reduce a Volume Group or tear down an LVM stack?
To remove a PV from a VG, pvmove its data off first, then vgreduce; to delete everything, unmount and dismantle top-down: lvremove → vgremove → pvremove.
The danger with shrinking is that a PV you want to pull may still hold live extents. pvmove relocates those extents onto the VG's other PVs first, so nothing is lost; only then is it safe to detach the disk:
pvmove /dev/vdb3 # evacuate all extents off this PV onto others
vgreduce vg01 /dev/vdb3 # now remove the (empty) PV from the group
Tearing the whole stack down means undoing the build order in reverse — you can't remove a VG while an LV still lives in it:
umount /mnt/data # 1. detach the filesystem
lvremove /dev/vg01/lv01 # 2. destroy the logical volume
vgremove vg01 # 3. destroy the (now empty) volume group
pvremove /dev/vdb1 /dev/vdb2 # 4. wipe LVM metadata off the disks
The filesystem caveat: if an LV holds an XFS (or GFS2) filesystem you cannot shrink it — those filesystems only grow. So "reduce an LV" is only realistic with ext4. Always move data before reducing, and double-check what's mounted with lsblk -fp before you remove anything — these commands are destructive and don't ask twice.
Go deeper:
lvm(8) man page —
pvmove,vgreduce,lvremove,vgremove,pvremove.