1. A method for providing backup for a computer system, comprising: maintaining a database on a first computer of the computer system; maintaining a virtual disk on a second computer of the computer system; performing input/output (I/O) operations by the first computer with a one or more application buffers; writing contents of the one or more application buffers to the virtual disk to update a virtual disk copy of the database; receiving a backup command at a selected time; writing, in response to receiving the backup command, a remaining contents of the one or more application buffers to the virtual disk where the remaining contents have not been written to the virtual disk; blocking the I/O operations directed to the virtual disk after the remaining contents of the one or more application buffers are written to the virtual disk; storing the written contents of the virtual disk to a first nonvolatile memory while the I/O operations to the virtual disk are blocked; and generating a snapshot of the first nonvolatile memory to create a read only copy of the database as it existed at the selected time.