VMWare/ESX Snapshots vs Libvirt snapshots vs LVM2 snapshots

Solution 1:

and if you delete a snapshot, they [the deltas] are deleted so either way you are left reading and writing only to the primary vmdk file again.

Deleting a snapshot without reverting to it will cause the delta file to be applied to the VMDK. Other than that, your explanation for VMWare seems spot on. I can't help with the other platforms, though.

That said, normal copy-on-write like you'd see on a storage array or with VSS in Windows is something that writes to the actual volume after saving the snapshotted state of the data. If the VMWare snapshot were copy-on-write, it would be modifying the VMDK after populating the delta file with the old version of whatever was being written.

Solution 2:

Is this accurate, and is it fundamentally the same for LVM and KVM snapshots?

Yes and yes.