Are storage array-based snapshots preferable to other types of data snapshots (file system, hypervisor, etc.)? Why or why not?
As with many things in IT, there are both advantages and disadvantages to creating storage-level data snapshots. The main advantage is that storage-level snapshots do not tend to incur the performance impact of software snapshots. Software-based data snapshots are often (but not always) based on the use of differencing disks. This approach can have a significant impact on read performance as multiple snapshots are accumulated. Hardware-level data snapshots on the other hand, are oftentimes based on the use of pointers, which offer better performance.
The main advantage offered by software-level snapshots is consistency. File-system-level data snapshots are almost always file-system consistent. This means that a snapshot will never contain a partially written file. In contrast, storage-level snapshots usually occur at the block level, and it is sometimes possible to take a storage-level snapshot while a file update is in progress, thereby resulting in a corrupt file (if the snapshot is ever rolled back).
Similarly, hypervisors try to provide application awareness. This means that when a hypervisor-level data snapshot occurs, the hypervisor attempts to create the snapshot in a way that places any applications running on virtual machines into a consistent state before the snapshot is created. Storage-level snapshots are generally not application-aware, so snapshots will likely be created with applications in an inconsistent state.
This was first published in January 2014