Snapshots are now a feature on just about all mid to high-end storage arrays, virtual storage appliances and virtualization technologies such as ESX, Hyper-V and XEN.
A snapshot as its name suggests is a point-in-time copy of your data. This is accomplished in different ways by the storage and server vendors but in must cases it is done using a method called copy-on-write. Copy-On-Write involves copying the original data into a snapshot pool before overwriting it. This means that the creation of a snapshot is immediate with no initial impact on the storage array or underlying system.
Unless there is some interaction between the device taking the snapshot and the applications being snapped then the state of that data is in a “Crash Consistent“ state.
“Crash Consistent” is really a marketing term as while the data is consistent with a system crash the data is no way in a consistent state. This is important to understand as systems do not always come back online correctly after a crash. Databases, file systems and applications can take from minutes to hours to become available depending on the activity on the server at the time the snapshot is taken.
“Application Aware” refers to snapshot devices that can in some way (usually via an agent or some operating system integration) communicate with file systems, databases and applications. This ensures that the system is in a consistent state at the time the snapshot is taken. This will ensure your system comes back up without any issues or lengthy delays.
An inherent problem with snapshots is that they rely on a base image. If the base image is destroyed or corrupted then all the snapshots based on that image will become unusable. For this reason I don’t believe snapshots will replace traditional backup for the long term storage of data. But because access to snapshots is almost immediate, snapshots are ideal for your more recently backed up data or data that needs to be restored often.
There are a lot of other uses for snapshots apart from backups such as speeding up your traditional backups, offloading batch processing and saving the state of systems prior to upgrades and configuration changes. Keep an eye out for upcoming blogs covering these topics.