1. A method, comprising: determining a state of a file system comprising reading a flag configured to track whether a previous unmount of the file system was complete; reading a table associated with the file system, including reading a plurality of block numbers associated with a plurality of files in the file system, the table being stored on a disk in a non-volatile storage, wherein the plurality of block numbers includes a block number and another block number, wherein each block number is read to determine an ordered sequence of locations on the disk of one or more data blocks or block groups for a file associated with said each block number; determining whether each of the plurality of block numbers exists in a reconstruction map being created in a volatile system memory; modifying the reconstruction map by adding a new entry to the reconstruction map for a block number that does not already exist in the reconstruction map, and incrementing a reference count in the reconstruction map for a block number that does already exist in the reconstruction map; obtaining a hash value associated with each of the plurality of block numbers and adding the hash value to corresponding entries of the reconstruction map; reading a plurality of block numbers sequentially from the disk to retrieve corresponding data blocks or block groups from the ordered sequence of locations on the disk using the plurality of block numbers; and constructing a deduplication metadata data structure that describes file system data based on the hash value, wherein the deduplication metadata structure is constructed in the volatile system memory from the reconstruction map.