IP Library Granted Patent US 11,561,859
Granted Patent B2
US 11,561,859 · App. 16/831,328 · Granted Jan 24, 2023

Method, device and computer program product for managing data

Inventors: Jibing Dong (Beijing, CN); Xinlei Xu (Beijing, CN); Jian Gao (Beijing, CN)
Assignee: EMC IP Holding Company LLC
G06F11/1092G06F3/064G06F3/0619G06F3/0659G06F3/0689G06F11/1076
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 11,561,859
App. No.
16/831,328
Granted
Jan 24, 2023
Kind
B2
Abstract

Techniques for managing data involve receiving a write request to write a data block into a first stripe in a disk array, the write request comprising a first storage address for storing the data block. The techniques further involve determining, based on the first storage address, a first group of disks related to a data portion of the first stripe and a second group of disks related to a parity portion of the first stripe. The techniques further involve, in response to a first disk in the first group of disks being unavailable, storing a data sub-block related to the first disk into a first parity portion of the parity portion such that the data block is stored in the first stripe, the first parity portion being located at a second disk in the second group of disks. The techniques further involve returning a response to the write request, the response comprising a first indication indicating a status of the disks in the disk array.

Claims (83)

1. A method of managing data, comprising:

receiving a write request to write a data block into a first stripe in a disk array, the write request comprising a first storage address for storing the data block;

determining, based on the first storage address, a first group of disks related to a data portion of the first stripe and a second group of disks related to a parity portion of the first stripe, the data portion being used for storing data sub-blocks of the data block, and the parity portion being used for storing parity sub-blocks related to the data sub-blocks;

in response to a first disk in the first group of disks being unavailable, storing a data sub-block related to the first disk into a first parity portion of the parity portion such that the data block is stored in the first stripe, the first parity portion being located at a second disk in the second group of disks; and

returning a response to the write request, the response comprising a first indication indicating a status of the disks in the disk array to update the status of the disks related to the first stripe,

wherein receiving the write request includes the disk array receiving the write request from a subsystem,

wherein returning the response includes the disk array providing the response, including the first indication, to the subsystem,

wherein the method further comprises the subsystem updating the status of the disks related to the first stripe based on the first indication, and

wherein the method further comprises:

receiving a request from the subsystem to rebuild the first stripe, the request including the first indication;

determining, based on the first indication, the status of the disks related to the first stripe;

obtaining a set of data sub-blocks corresponding to the first stripe:

generating a parity sub-block based on the obtained set of data sub-blocks: and

storing the generated parity sub-block.

2. The method according to claim 1 , wherein determining the first group of disks and the second group of disks comprises:

dividing the data block into data sub-blocks.

3. The method according to claim 1 , wherein determining the first group of disks and the second group of disks comprises:

determining, based on the first storage address, a plurality of disks related to the first stripe;

obtaining a width of the disk array and a type of the disk array; and

determining, based on the first storage address, the width, and the type, the plurality of disks as the first group of disks and the second group of disks.

4. The method according to claim 1 , wherein storing the data sub-block related to the first disk into a first parity portion of the parity portion comprises:

in response to a third disk in the first group of disks being unavailable, storing a data sub-block related to the third disk into a second parity portion of the parity portion, the second parity portion being related to a fourth disk in the second group of disks,

wherein a first number of unavailable disks in the first group of disks is not greater than a second number of disks in the second group of disks.

5. The method according to claim 1 , further comprising:

receiving a read request to read data, the read request comprising a second storage address related to the data and a second indication indicating whether a plurality of disks of a second stripe related to the second storage address are available;

determining, based on the second storage address, a third group of disks related to a data portion of the second stripe and a fourth group of disks related to a parity portion of the second stripe;

determining, based on the second indication, whether a fifth disk in the third group of disks corresponding to the second storage address is available;

in response to determining that the fifth disk is unavailable, obtaining the data from a parity portion of the second stripe in the fourth group of disks; and

returning the obtained data as a response to the read request.

6. The method according to claim 1 , further comprising:

receiving a request to rebuild a third stripe, the request comprising a third storage address related to the third stripe and a third indication indicating that a sixth disk related to the third stripe is unavailable, wherein the request is generated based on the sixth disk becoming available again;

determining, based on the third storage address, a fifth group of disks related to a data portion of the third stripe and a sixth group of disks related to a parity portion of the third stripe;

in response to the fifth group of disks comprising the sixth disk, obtaining, based on the third indication and the third storage address, data sub-blocks in the data portion of the third stripe related to an available disk in the fifth group of disks and data sub-blocks in the parity portion of the third stripe related to the sixth group of disks;

generating a parity sub-block based on the obtained data sub-blocks;

storing the data sub-blocks in the sixth group of disks to the sixth disk; and

storing the generated parity sub-block into the parity portion of the third stripe in the sixth group of disks.

7. The method of claim 1 , further comprising:

receiving a read request from the subsystem to read data stored in the first stripe, the read request including the first indication as updated by the subsystem;

determining, based on the first indication, the status of the disks related to the first stripe;

in response to the first indication indicating that the first parity portion stores a data sub-block related to the first disk, obtaining the data sub-block related to the first disk from the first parity portion;

returning the obtained data as a response to the read request.

8. An electronic device for managing data, the electronic device comprising:

a processor; and

a memory storing computer program instructions, the processor running the computer program instructions in the memory to control the electronic device to perform acts comprising:

receiving a write request to write a data block into a first stripe in a disk array, the write request comprising a first storage address for storing the data block;

determining, based on the first storage address, a first group of disks related to a data portion of the first stripe and a second group of disks related to a parity portion of the first stripe, the data portion being used for storing data sub-blocks of the data block, and the parity portion being used for storing parity sub-blocks related to the data sub-blocks;

in response to a first disk in the first group of disks being unavailable, storing a data sub-block related to the first disk into a first parity portion of the parity portion such that the data block is stored in the first stripe, the first parity portion being located at a second disk in the second group of disks; and

returning a response to the write request, the response comprising a first indication indicating a status of the disks in the disk array to update the status of the disks related to the first stripe, wherein the acts further comprise:

receiving a request to rebuild a third stripe, the request comprising a third storage address related to the third stripe and a third indication indicating that a sixth disk related to the third stripe is unavailable, wherein the request is generated based on the sixth disk becoming available again;

determining, based on the third storage address, a fifth group of disks related to a data portion of the third stripe and a sixth group of disks related to a parity portion of the third stripe;

in response to the fifth group of disks comprising the sixth disk, obtaining, based on the third indication and the third storage address, data sub-blocks in the data portion of the third stripe related to an available disk in the fifth group of disks and data sub-blocks in the parity portion of the third stripe related to the sixth group of disks;

generating a parity sub-block based on the obtained data sub-blocks;

storing the data sub-blocks in the sixth group of disks to the sixth disk; and

storing the generated parity sub-block into the parity portion of the third stripe in the sixth group of disks.

9. The electronic device according to claim 8 , wherein determining the first group of disks and the second group of disks comprises:

dividing the data block into data sub-blocks.

10. The electronic device according to claim 8 , wherein determining the first group of disks and the second group of disks comprises:

determining, based on the first storage address, a plurality of disks related to the first stripe;

obtaining a width of the disk array and a type of the disk array; and

determining, based on the first storage address, the width, and the type, the plurality of disks as the first group of disks and the second group of disks.

11. The electronic device according to claim 8 , wherein storing the data sub-blocks related to the first disk in a first parity portion of the parity portion comprises:

in response to a third disk in the first group of disks being unavailable, storing a data sub-block related to the third disk into a second parity portion of the parity portion, the second parity portion being related to a fourth disk in the second group of disks,

wherein a first number of unavailable disks in the first group of disks is not greater than a second number of disks in the second group of disks.

12. The electronic device according to claim 8 , the acts further comprising:

receiving a read request to read data, the read request comprising a second storage address related to the data and a second indication indicating whether a plurality of disks of a second stripe related to the second storage address are available;

determining, based on the second storage address, a third group of disks related to a data portion of the second stripe and a fourth group of disks related to a parity portion of the second stripe;

determining, based on the second indication, whether a fifth disk in the third group of disks corresponding to the second storage address is available;

in response to determining that the fifth disk is unavailable, obtaining the data from a parity portion of the second stripe in the fourth group of disks; and

returning the obtained data as a response to the read request.

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

receiving a write request to write a data block into a first stripe in a disk array, the write request comprising a first storage address for storing the data block;

determining, based on the first storage address, a first group of disks related to a data portion of the first stripe and a second group of disks related to a parity portion of the first stripe, the data portion being used for storing data sub-blocks of the data block, and the parity portion being used for storing parity sub-blocks related to the data sub-blocks;

in response to a first disk in the first group of disks being unavailable, storing a data sub-block related to the first disk into a first parity portion of the parity portion such that the data block is stored in the first stripe, the first parity portion being located at a second disk in the second group of disks; and

returning a response to the write request, the response comprising a first indication indicating a status of the disks in the disk array to update the status of the disks related to the first stripe,

wherein receiving the write request includes the disk array receiving the write request from a subsystem,

wherein returning the response includes the disk array providing the response, including the first indication to the subsystem,

wherein the method further comprises the subsystem updating the status of the disks related to the first stripe based on the first indication, and

wherein the method further comprises:

receiving a request from the subsystem to rebuild the first stripe, the request including the first indication;

determining, based on the first indication, the status of the disks related to the first stripe;

obtaining a set of data sub-blocks corresponding to the first stripe;

generating a parity sub-block based on the obtained set of data sub-blocks; and

storing the generated parity sub-block.

Assignments (11)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0081) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0441 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0917) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0509 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052852/0022) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0582 →
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 AT REEL 052771 FRAME 0906 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0298 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0081 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0917 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052852/0022 →
SECURITY AGREEMENT Recorded May 28, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052771/0906 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 21, 2020
From: DONG, JIBING; XU, XINLEI; GAO, JIAN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 052725/0415 →
SECURITY AGREEMENT Recorded Apr 22, 2020
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 053546/0001 →