KVM has a much better snapshot capability than what’s managed by libvirt; but it depends on qcow2 images. if you use them, just do a savevm <name>
on the command console (blocked by libvirt) it won’t create a new file, it’s a snapshot inside the qcow2 file.
test it first, because some KVM versions have it broken.