US 11,816,342 B2
Systems and methods for distributed in-storage computation-conscious erasure coding
Rekha Pitchumani, Oak Hill, VA (US); and Yang Seok Ki, Palo Alto, CA (US)
Assigned to Samsung Electronics Co., Ltd., Yongin-si (KR)
Filed by SAMSUNG ELECTRONICS CO., LTD., Suwon-si (KR)
Filed on Jul. 13, 2020, as Appl. No. 16/927,798.
Claims priority of provisional application 63/037,585, filed on Jun. 10, 2020.
Prior Publication US 2022/0011935 A1, Jan. 13, 2022
Int. Cl. G06F 3/06 (2006.01)
CPC G06F 3/064 (2013.01) [G06F 3/067 (2013.01); G06F 3/0619 (2013.01); G06F 3/0652 (2013.01); G06F 3/0653 (2013.01)] 18 Claims
OG exemplary drawing
 
1. A method comprising:
sending, from an application layer, a chunk size setting for a storage system to an erasure coding layer;
receiving, at the application layer, user data;
determining, at the application layer, data units of the user data to be stored together in a same chunk of the storage system;
aligning, at the application layer, the user data based on the data units determined to be stored together, and by padding the data units determined to be stored together such that the padded data units correspond to a size indicated by the chunk size setting;
sending the aligned user data to the erasure coding layer;
partitioning, at the erasure coding layer, the aligned user data by splitting the user data into at least a first data chunk and a second data chunk based on the chunk size setting such that the data units that are determined to be stored together including the padding are stored together as the first data chunk;
generating, at the erasure coding layer, a parity chunk based on the first data chunk and the second data chunk;
sending, from the erasure coding layer, the first data chunk, the second data chunk, and the parity chunk to the storage system; and
sending, from the application layer, a computation command to a first storage device, a second storage device, or a third storage device of the storage system, the computation command instructing the first storage device, the second storage device, or the third storage device to perform an in-storage computation to generate the user data based on at least one of the first data chunk, the second data chunk, and the parity chunk.