How does Macrium Reflect check the data integrity?
Data blocks read from the image file are compared with the original data that was read from the image source disk by using a hash comparison.
When an image is created each block of data (generally 64K but may be larger depending on the partition size) has an MD5 hash digest created after it is read from the disk and before it is written to the image file. This hash value is saved in the index of the image file. When the file is read back the hash value is recalculated and compared with the original hash in the index. Any discrepancy between the two values indicates that the image file is corrupt or cannot be read back reliably.
Macrium Reflect uses the unmodified code from the reference implementation of the RSA Data Security MD5 message-digest algorithm. This guarantees that the same block of data cannot generate a different message digest (hash) value. If data is read back with a different MD5 hash value to the value that was generated when the data was originally read from disk, it is guaranteed to be corrupt. This is always outside of the control of Macrium Reflect as the OS will report a write without any error.
Why can't Macrium Reflect validate the data as it is written?
It isn't possible to verify the file as it is written because the buffers and caches in the write process aren't flushed to disk until after the file is closed. The only way to verify data integrity is to close the file at the end of the backup process and then read the file back. It's possible to do this automatically by selecting the 'Auto-Verify' option in the Advanced backup definition properties.