STORAGE DEVICE ASSISTED DATA DE-DUPLICATION
Systems and methods presented herein provide for de-duplication of data. In one embodiment, an input/output module is operable to generate an input/output operation to write data. A storage device is communicatively coupled to the input/output module and operable to write the data of the input/output operation at a logical address of the storage device, and to generate a signature based on the data. The input/output module is further operable to process the signature to determine whether the data exists at another logical address.
1 . A system, comprising:
an input/output module operable to generate an input/output operation to write data; and
a storage device communicatively coupled to the input/output module and operable to write the data of the input/output operation at a logical address of the storage device, and to generate a signature based on the data,
wherein the input/output module is further operable to process the signature to determine whether the data exists at an other logical address.
2 . The system of claim 1 , wherein:
the input/output module is further operable to direct the storage device to deallocate storage space at the logical address of the storage device upon determining that the data exists at the other logical address.
3 . The system of claim 1 , wherein:
the other logical address is located in an other storage device.
4 . The system of claim 3 , wherein:
the input/output module is further operable to associate the logical address of the data of the input/output operation with the other logical address of the data upon determining that the data exists at the other logical address of the other storage device.
5 . The system of claim 4 , wherein:
the input/output module is further operable to update a data structure with information that associates the logical address of the data of the input/output operation with the other logical address.
6 . The system of claim 1 , wherein:
the storage device is further operable to generate the signature using a hash code.
7 . The system of claim 1 , wherein:
the storage device is further operable to write the data of the input/output operation to non-volatile memory of the storage device, and to return status of the input/output operation to the input/output module.
8 . A method, comprising:
generating an input/output operation to write data at a logical address of a storage device;
receiving a signature generated by the storage device according to the data;
receiving an acknowledgment that the data of the input/output operation has been written by the storage device; and
processing the signature to determine whether the data exists at an other logical address.
9 . The method of claim 8 , further comprising:
detecting the other logical address in an other storage device.
10 . The method of claim 8 , further comprising:
directing the storage device to deallocate the data at the logical address of the storage device upon determining that the data exists at the other logical address.
11 . The method of claim 8 , further comprising:
associating the logical address of the data of the input/output operation with the other logical address of the data upon determining that the data exists at the other logical address.
12 . The method of claim 11 , further comprising:
updating a data structure with information that associates the logical address of the data of the input/output operation with the other logical address.
13 . The method of claim 8 , further comprising:
generating the signature using a hash code.
14 . The method of claim 8 , further comprising:
writing the data of the input/output operation to non-volatile memory of the storage device; and
processing status of the write from the storage device to determine whether the write was successful.
15 . A non-transitory computer readable medium comprising instructions that, when executed by a processor, direct the processor to:
generate an input/output operation to write data at a logical address of a storage device;
received a signature generated by the storage device according to the data;
receive an acknowledgment that the data of the input/output operation has been written by the storage device; and
process the signature to determine whether the data exists at an other logical address.
16 . The computer readable medium of claim 15 , further comprising instructions that direct the processor to:
detect the other logical address in an other storage device.
17 . The computer readable medium of claim 15 , further comprising instructions that direct the processor to:
direct the storage device to deallocate the data at the logical address of the storage device upon determining that the data exists at the other logical address.
18 . The computer readable medium of claim 15 , further comprising instructions that direct the processor to:
associate the logical address of the data of the input/output operation with the other logical address of the data upon determining that the data exists at the other logical address.
19 . The computer readable medium of claim 18 , further comprising instructions that direct the processor to:
update a data structure with information that associates the logical address of the data of the input/output operation with the other logical address.
20 . The computer readable medium of claim 15 , further comprising instructions that direct the processor to:
generate the signature using a hash code.
21 . The computer readable medium of claim 15 , further comprising instructions that direct the processor to:
write the data of the input/output operation to non-volatile memory of the storage device; and
process status of the write from the storage device to determine whether the write was successful.