IP Library Granted Patent US 10,445,013
Granted Patent B2
US 10,445,013 · App. 15/710,956 · Granted Oct 15, 2019

Method and device for storing data

Inventors: Lu Lei (Shanghai, CN); Chen Wang (Shanghai, CN); Gary Jialei Wu (Shanghai, CN); Ronnie Yu Cai (Shanghai, CN); Ao Sun (Shanghai, CN)
Assignee: EMC IP Holding Company LLC
G06F3/064G06F3/0608G06F3/0683G06F12/00
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,445,013
App. No.
15/710,956
Granted
Oct 15, 2019
Kind
B2
Abstract

Embodiments of the present disclosure provide a method and device for storing data. The method comprises: generating a data block corresponding to data to be stored; aligning the data block to a boundary of a tracking unit of a predefined size for validating the data; and storing the aligned data block in at least one storage unit of a storage space, the at least one storage unit having an identical size. The method according to embodiments of the present disclosure can align the data block so as to minimize the waste of storage space and avoid the situation where the rest data cannot be validated due to disappearance of partial data.

Claims (92)

1. A method for storing data, comprising:

generating a data block corresponding to data to be stored;

aligning the data block to a boundary of a tracking unit of a predefined size for validating the data; and

storing the aligned data block in at least one storage unit of a storage space, the at least one storage unit having an identical size;

wherein aligning the data block comprises:

splitting, in response to the data block being larger than an integral multiple of the predefined size of the tracking unit, the data block into at least one first data block and a second data block, wherein each of the at least one first data block is the predefined size of the tracking unit and the second data block is smaller than the predefined size of the tracking unit;

generating identical metadata for the at least one first data block and the second data block; and

aligning the second data block to the boundary of the tracking unit based on an end offset of the second data block and the boundary of the tracking unit;

wherein aligning the second data block comprises:

determining, based on a comparison of the end offset of the second data block with the boundary of the tracking unit, whether the second data block is to be split; and

in response to determining that the second data block is to be split:

splitting the second data block into a first sub-block and a second sub-block;

generating identical metadata for the first sub-block and the second sub-block; and

determining, based on a comparison of an end offset of the split sub-block with the boundary of the tracking unit, whether a corresponding padding block is to be generated to fill between the end offset of the split sub-block and the boundary of the tracking unit; and

wherein generating the padding block comprises:

generating the padding block including a header, a body part and a footer, the header indicating a size of the padding block, the body part being zero and the footer including a checksum for the header and the body part.

2. The method of claim 1 , wherein generating the data block comprises:

generating the data block including a header, a body part and a footer, the header indicating a size of the data block, the body part including the data and the footer including a checksum for the header and the body part.

3. The method of claim 1 , wherein

the at least one first data block includes multiple first data blocks, the identical metadata having been generated for each first data block.

4. The method of claim 3 , wherein storing the aligned data block comprises:

storing the multiple first data blocks in a storage unit for holding a data block of the predefined size.

5. The method of claim 1 , wherein storing the aligned data block comprises:

storing the at least one first data block in a storage unit for holding a data block of the predefined size; and

storing the aligned second data block in at least one different storage unit.

6. The method of claim 1 , wherein the method further comprises:

aligning, in response to another data block being smaller than the predefined size of the tracking unit and based on an end offset of the other data block and the boundary of the tracking unit, the other data block to the boundary of the tracking unit.

7. The method of claim 1 , wherein the method further comprises:

determining, based on a comparison of an end offset of another data block with the boundary of the tracking unit, whether the other data block is to be split; and

in response to determining that the other data block is to be split:

splitting the other data block into a third data block and a fourth data block;

generating identical metadata for the third data block and the fourth data block; and

determining, based on a comparison of an end offset of the split block with the boundary of the tracking unit, whether a corresponding padding block is to be generated to fill between the end offset of the split block and the boundary of the tracking unit.

8. The method of claim 1 , wherein the padding block checksum is constructed and arranged to validate the padding block header and the padding block body part.

9. The method of claim 1 , wherein the predefined size is 2 megabytes.

10. An electronic device, comprising:

a processing unit; and

a memory stored with instructions, which, when executed by the processor, causes the electronic device to:

generate a data block corresponding to data to be stored;

align the data block to a boundary of a tracking unit of a predefined size for validating the data; and

store the aligned data block in at least one storage unit of a storage space, the at least one storage unit having an identical size;

wherein the memory is also stored with instructions, which, when executed by

the processor, cause the electronic device to:

split, in response to the data block being larger than an integral multiple of the predefined size of the tracking unit, the data block into at least one first data block and a second data block, wherein each of the at least one first data block is the predefined size of the tracking unit and the second data block is smaller than the predefined size of the tracking unit;

generate identical metadata for the at least one first data block and the second data block; and

align the second data block to the boundary of the tracking unit based on an end offset of the second data block and the boundary of the tracking unit;

wherein the memory is also stored with instructions, which, when executed by

the processor, cause the electronic device to:

determine, based on a comparison of the end offset of the second data block with the boundary of the tracking unit, whether the second data block is to be split; and

in response to determining that the second data block is to be split:

split the second data block into a first sub-block and a second sub-block;

generate identical metadata for the first sub-block and the second sub-block; and

determine, based on a comparison of an end offset of the split sub-block with the boundary of the tracking unit, whether a corresponding padding block is to be generated to fill between the end offset of the split sub-block and the boundary of the tracking unit; and

wherein the memory is also stored with instructions, which, when executed by

the processor, cause the electronic device to:

generate the padding block including a header, a body part and a footer, the header indicating a size of the padding block, the body part being zero and the footer including a checksum for the header and the body part.

11. The device of claim 10 , wherein the memory is also stored with instructions, which, when executed by the processor, cause the electronic device to:

generate the data block including a header, a body part and a footer, the header indicating a size of the data block, the body part including the data and the footer including a checksum for the header and the body part.

12. The device of claim 10 , wherein

the at least one first data block includes multiple first data blocks, the identical metadata having been generated for each first data block.

13. The device of claim 12 , wherein the memory is also stored with instructions, which, when executed by the processor, cause the electronic device to:

store the at least one sub-block in a storage unit for holding a data block of the predefined size.

14. The device of claim 10 , wherein the memory is also stored with instructions, which, when executed by the processor, cause the electronic device to:

store the at least one first data block in a storage unit for holding a data block of the predefined size; and

store the aligned second data block in at least one different storage unit.

15. The device of claim 10 , wherein the memory is also stored with instructions, which, when executed by the processor, cause the electronic device to:

align, in response to another data block being smaller than the predefined size of the tracking unit and based on an end offset of the other data block and the boundary of the tracking unit, the other data block to the boundary of the tracking unit.

16. The device of claim 10 , wherein the memory is also stored with instructions, which, when executed by the processor, cause the electronic device to:

determine, based on a comparison of an end offset of another data block with the boundary of the tracking unit, whether the other data block is to be split; and

in response to determining that the other data block is to be split:

split the other data block into a third data block and a fourth data block;

generate identical metadata for the third data block and the fourth data block; and

determine, based on a comparison of an end offset of the split block with the boundary of the tracking unit, whether a corresponding padding block is to be generated to fill between the end offset of the split block and the boundary of the tracking unit.

17. The device of claim 10 , wherein the padding block checksum is constructed and arranged to validate the padding block header and the padding block body part.

18. The device of claim 10 , wherein the predefined size is 2 megabytes.

19. A computer program product having a non-transitory computer readable medium which stores a set of instructions to store data; the set of instructions, when carried out by computerized circuitry, causing the computerized circuitry to perform a method of:

generating a data block corresponding to data to be stored;

aligning the data block to a boundary of a tracking unit of a predefined size for validating the data; and

storing the aligned data block in at least one storage unit of a storage space, the at least one storage unit having an identical size;

wherein aligning the data block comprises:

splitting, in response to the data block being larger than an integral multiple of the predefined size of the tracking unit, the data block into at least one first data block and a second data block, wherein each of the at least one first data block is the predefined size of the tracking unit and the second data block is smaller than the predefined size of the tracking unit;

generating identical metadata for the at least one first data block and the second data block; and

aligning the second data block to the boundary of the tracking unit based on an end offset of the second data block and the boundary of the tracking unit;

wherein aligning the second data block comprises:

determining, based on a comparison of the end offset of the second data block with the boundary of the tracking unit, whether the second data block is to be split; and

in response to determining that the second data block is to be split:

splitting the second data block into a first sub-block and a second sub-block;

generating identical metadata for the first sub-block and the second sub-block; and

determining, based on a comparison of an end offset of the split sub-block with the boundary of the tracking unit, whether a corresponding padding block is to be generated to fill between the end offset of the split sub-block and the boundary of the tracking unit; and

wherein generating the padding block comprises:

generating the padding block including a header, a body part and a footer, the header indicating a size of the padding block, the body part being zero and the footer including a checksum for the header and the body part.

20. The computer program product of claim 19 , wherein the padding block checksum is constructed and arranged to validate the padding block header and the padding block body part.

Assignments (7)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (044535/0109) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 060753/0414 →
RELEASE OF SECURITY INTEREST AT REEL 044535 FRAME 0001 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058298/0475 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Nov 29, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 044535/0109 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Nov 29, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 044535/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2017
From: LEI, LU; CAI, RONNIE YU; WANG, CHEN; WU, GARY JIALEI; SUN, AO
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 043898/0433 →