LVM snapshots have been around quite a while - but their copy-on-write (COW) implementation was flawed so that in case of multiple concurrently active snapshots perfomance degraded to non-acceptable levels. Until on one nice day it all got fixed in LVM2 2.02.90 release with LVM thin provisioning support.