Method and system for offloading a continuous health-check and reconstruction of data using compute acceleration devices on persistent storage devices
A method for managing data includes identifying, by a compute acceleration device (CAD) of a persistent storage device, a first chunk, stored in the persistent storage device, to be health-checked using storage metadata, generating a first chunk identifier using the first chunk, making a determination that the first chunk identifier does not match a second chunk identifier stored in the storage metadata, and in response to the determination: obtaining a plurality of chunks associated with the first chunk from a plurality of persistent storage devices of a storage system, wherein the storage system comprises the persistent storage device and the plurality of persistent storage devices, regenerating the first chunk using the plurality of chunks to generate a new first chunk, storing the new first chunk in the persistent storage device, and updating the storage metadata based on storage of the new first chunk.
1. A method for managing data, the method comprising:
identifying, by a compute acceleration device (CAD) of a persistent storage device, a first chunk, stored in the persistent storage device, to be health-checked using storage metadata;
generating a first chunk identifier using the first chunk;
making a determination that the first chunk identifier does not match a second chunk identifier stored in the storage metadata; and
in response to the determination:
obtaining a plurality of chunks associated with the first chunk from a plurality of persistent storage devices of a storage system, wherein the storage system comprises the persistent storage device and the plurality of persistent storage devices;
regenerating the first chunk using the plurality of chunks to generate a new first chunk;
storing the new first chunk in the persistent storage device; and
updating the storage metadata based on storage of the new first chunk.
2. The method of claim 1 , further comprising:
obtaining a persistent storage device failure notification of a second persistent storage device from a storage controller, wherein the storage system does not comprise the storage controller;
identifying, using the storage metadata, a second chunk associated with the second persistent storage device;
obtaining a second plurality of chunks associated with the second chunk from a second plurality of persistent storage devices;
regenerating the second chunk using the second plurality of chunks to generate a new second chunk;
storing the new second chunk in the persistent storage device; and
updating the storage metadata based on the storage of the new second chunk.
3. The method of claim 2 , wherein the persistent storage device failure notification is obtained from a storage controller, and wherein the persistent storage device failure notification specifies the second persistent storage device.
4. The method of claim 3 , wherein the persistent storage device failure notification further specifies the second chunk.
5. The method of claim 1 , wherein obtaining the plurality of chunks associated with the first chunk from the plurality of persistent storage devices comprises:
sending a request to a CAD of each persistent storage device of the plurality of persistent storage devices; and
obtaining a chunk from each CAD of each persistent storage device of the plurality of persistent storage devices after sending the request.
6. The method of claim 1 , wherein the storage metadata is stored in the CAD.
7. The method of claim 1 , wherein the storage system further comprises a plurality of data nodes, wherein each data node comprises a portion of the plurality of persistent storage devices.
8. A non-transitory computer readable medium comprising computer readable program code, which when executed by a computer processor enables the computer processor to perform a method for managing data, the method comprising:
identifying, by a compute acceleration device (CAD) of a persistent storage device, a first chunk, stored in the persistent storage device, to be health-checked using storage metadata;
generating a first chunk identifier using the first chunk;
making a determination that the first chunk identifier does not match a second chunk identifier stored in the storage metadata; and
in response to the determination:
obtaining a plurality of chunks associated with the first chunk from a plurality of persistent storage devices of a storage system, wherein the storage system comprises the persistent storage device and the plurality of persistent storage devices;
regenerating the first chunk using the plurality of chunks to generate a new first chunk;
storing the new first chunk in the persistent storage device; and
updating the storage metadata based on storage of the new first chunk.
9. The non-transitory computer readable medium of claim 8 , the method further comprising:
obtaining a persistent storage device failure notification of a second persistent storage device from a storage controller, wherein the storage system does not comprise the storage controller;
identifying, using the storage metadata, a second chunk associated with the second persistent storage device;
obtaining a second plurality of chunks associated with the second chunk from a second plurality of persistent storage devices;
regenerating the second chunk using the second plurality of chunks to generate a new second chunk;
storing the new second chunk in the persistent storage device; and
updating the storage metadata based on the storage of the new second chunk.
10. The non-transitory computer readable medium of claim 9 , wherein the persistent storage device failure notification is obtained from a storage controller, and wherein the persistent storage device failure notification specifies the second persistent storage device.
11. The non-transitory computer readable medium of claim 10 , wherein the persistent storage device failure notification further specifies the second chunk.
12. The non-transitory computer readable medium of claim 8 , wherein obtaining the plurality of chunks associated with the first chunk from the plurality of persistent storage devices comprises:
sending a request to a CAD of each persistent storage device of the plurality of persistent storage devices; and
obtaining a chunk from each CAD of each persistent storage device of the plurality of persistent storage devices after sending the request.
13. The non-transitory computer readable medium of claim 8 , wherein the storage metadata is stored in the CAD.
14. The non-transitory computer readable medium of claim 8 , wherein the storage system further comprises a plurality of data nodes, wherein each data node comprises a portion of the plurality of persistent storage devices.
15. A data cluster, comprising:
a storage controller;
a persistent storage device;
a plurality of persistent storage devices; and
a compute acceleration device (CAD) operating on the persistent storage device,
wherein the first storage controller is programmed to:
identify, by the CAD, a first chunk, stored in the persistent storage device, to be health-checked using storage metadata;
generate a first chunk identifier using the first chunk;
make a determination that the first chunk identifier does not match a second chunk identifier stored in the storage metadata; and
in response to the determination:
obtain a plurality of chunks associated with the first chunk from the plurality of persistent storage devices of a storage system, wherein the storage system comprises the persistent storage device and the plurality of persistent storage devices;
regenerate the first chunk using the plurality of chunks to generate a new first chunk;
store the new first chunk in the persistent storage device; and
update the storage metadata based on storage of the new first chunk.
16. The data cluster of claim 15 , wherein the CAD is further programmed to:
obtain a persistent storage device failure notification of a second persistent storage device from a storage controller, wherein the storage system does not comprise the storage controller;
identify, using the storage metadata, a second chunk associated with the second persistent storage device;
obtain a second plurality of chunks associated with the second chunk from a second plurality of persistent storage devices;
regenerate the second chunk using the second plurality of chunks to generate a new second chunk;
store the new second chunk in the persistent storage device; and
update the storage metadata based on the storage of the new second chunk.
17. The data cluster of claim 16 , wherein the persistent storage device failure notification is obtained from a storage controller, and wherein the persistent storage device failure notification specifies the second persistent storage device.
18. The data cluster of claim 17 , wherein the persistent storage device failure notification further specifies the second chunk.
19. The data cluster of claim 17 , wherein obtaining the plurality of chunks associated with the first chunk from the plurality of persistent storage devices comprises:
sending a request to a CAD of each persistent storage device of the plurality of persistent storage devices; and
obtaining a chunk from each CAD of each persistent storage device of the plurality of persistent storage devices after sending the request.
20. The data cluster of claim 15 , wherein the storage system further comprises a plurality of data nodes, wherein each data node comprises a portion of the plurality of persistent storage devices.