What is the difference between crash-consistent and application-consistent backups of virtual servers?
A crash-consistent backup set means the backup captured all of the virtual machine's data at exactly the same time. This is how essentially all modern backup software functions. Crash-consistent backups are fine and work well for the most part for nondatabase applications. When a crash-consistent backup is recovered and restored, the data is in the identical state it was in at the time of the backup.
Crash-consistent backups don't work nearly as well for database applications because they do not capture data in memory or any pending I/O operations. As such, restoring from a crash-consistent backup requires extra work, such as journaling forward, before an application can be brought back online.
In addition to providing a crash-consistent backup, application-consistent backups also capture all data in memory and all transactions in process. This is performed by using some type of client software co-resident with the database application or, in the case of Microsoft Windows and Hyper-V, the VSS API, to quiesce the database application, flush its memory cache, complete all its writes in order and then perform the backup.
When the backup or snapshot is complete, the software notifies the database application to resume. A restoration of an application-consistent backup requires no additional work to restore the database application.