1. A storage device comprising: a storage medium comprising non-volatile memory; one or more processing entities configured to: execute a compression module to compress data associated with an access request, wherein the compression module is configured to generate a signature for the data; execute a deduplication module to detect duplicity of the data by comparing the signature generated by the compression module with signatures stored on the storage device; execute a journaling module to perform a journaling function for the access request, wherein the journaling function comprises logging data for data recovery in an event of a system crash or power failure; execute a mapping module to perform a mapping function for the access request, wherein the mapping function performs a translation from a linear address to a physical address for the access request using a multidimensional mapping structure, wherein a first dimension of the multidimensional mapping structure is a file identifier and a second dimension of the multidimensional mapping structure is a snapshot version; execute a Redundant Array of Independent Disks (RAID) module to provide fault tolerance by spreading data and parity information across the non-volatile memory; and execute a snapshot and thin provisioning module, wherein the snapshot and thin provisioning module does not have a separate journaling functionality or separate mapping functionality; wherein the journaling function is performed once for the deduplication module and the RAID module for the access request; and wherein the mapping function is performed once for the deduplication module and the RAID module for the access request.