CPC G06F 3/0619 (2013.01) [G06F 3/0647 (2013.01); G06F 3/0655 (2013.01); G06F 3/0659 (2013.01); G06F 3/0679 (2013.01); G06F 3/0689 (2013.01); G06F 11/1068 (2013.01)] | 26 Claims |
1. A storage drive comprising:
flash memory having physical storage locations;
an interface to receive, from a storage manager of a host, write commands and, for each of the write commands, an associated host-provided address and associated data, wherein the write commands are compatible with a Non-Volatile Memory Express (NVMe) command format; and
circuitry, including at least one processor, to
control the flash memory,
for each one of the write commands, map the host-provided address which is associated with the one of the write commands to a respective one of the physical storage locations, and store the associated data in the respective one of the physical storage locations,
store metadata representing each item of data which has been stored in one of the physical storage locations, and
responsive to receipt of an additional command from the storage manager of the host, via the interface, execute a deduplication function, and as part of executing the deduplication function:
detect, using said metadata, duplication of data stored in the flash memory by two different ones of the write commands; and
remap the host-provided addresses associated with at least one the two different ones of the write commands, such that two different host-provided addresses which are respectively associated with the two different ones of the write commands each are thereafter mapped by the storage drive to a single, common one of the physical storage locations in the flash memory.
|