Which file system automatically stores hashes of files?
Sun's ZFS does:
With ZFS, all data and metadata is checksummed using a user-selectable algorithm. Traditional file systems that do provide checksumming have performed it on a per-block basis, out of necessity due to the volume management layer and traditional file system design. The traditional design means that certain failure modes, such as writing a complete block to an incorrect location, can result in properly checksummed data that is actually incorrect. ZFS checksums are stored in a way such that these failure modes are detected and can be recovered from gracefully. All checksumming and data recovery is done at the file system layer, and is transparent to applications.
And so does Linux's btrfs: Btrfs also supports both data and metadata checksumming. Data checksumming is optional and can be disabled by mounting with -o nodatasum
.