1. A storage device comprising: a storage medium comprising non-volatile memory; one or more processing entities configured to: execute a deduplication module vertically integrated into the storage medium to detect duplicity of data; and execute a Redundant Array of Independent Disks (RAID) module vertically integrated into the storage medium to provide fault tolerance by spreading data and parity information across the non-volatile memory; the storage device is further configured to generate, by a compression module, a signature for data associated with a storage request, wherein the signature is generated at the same time that the data is compressed, and the generated signature is used to dedupe data by comparing the generated signature with signatures already stored on the storage device; perform a journaling function only once for each access request to the storage medium on the storage device using a single journaling module shared by the deduplication module and the RAID module, wherein journaling comprises logging data in order to recover the data in the event of a system crash or a power failure; and perform a mapping function, comprising a single mapping structure, only once for each access request to the storage medium on the storage device using a single mapping module shared by the deduplication module and the RAID module, wherein the mapping function by the mapping module performs a translation from a linear address to a physical address for the access request to the storage device using a multidimensional mapping, wherein a first dimension of the multidimensional mapping is a file identifier and the second dimension of the multidimensional mapping is a snapshot version.