1. In a system that includes a storage device storing data and a flash memory configured as a cache for the storage device, a method for recovering data on the storage device that has become corrupted without accessing a backup of the data stored on the storage device, the method comprising: discovering, with a background process tasked with scanning the storage device, that data that was previously stored on the storage device has become corrupted or is missing, wherein the background process performs a background scan on the storage device; performing a background scan of a cache to determine whether data in the cache is corrupted or missing, wherein corrupted data or missing data in the cache is invalidated or evicted from the cache; determining an extent of the corrupted or missing data on the storage device in an area near the discovered data that is corrupted or missing; searching the cache for a valid copy of the corrupted data or the missing data, wherein the cache is accessible to clients such that the clients can perform read and write operations in the cache and wherein the cache stores data read from the storage device; searching one or more additional caches associated with one or more additional devices for the valid copy when the valid copy is not found in the cache; and recovering the valid copy of the corrupted data or the missing data to the storage device when the valid copy is present in the cache or in the one or more additional caches.