IP Library Granted Patent US 11,593,207
Granted Patent B2
US 11,593,207 · App. 17/153,219 · Granted Feb 28, 2023

Storage system having RAID stripe metadata

Inventors: Yosef Shatsky (Karnei Shomron, IL); Doron Tal (Haifa, IL); Rivka Matosevich (Zichron Ya'acov, IL)
Assignee: EMC IP Holding Company LLC
G06F11/1096G06F11/1092G06F11/1435G06F11/3034
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,593,207
App. No.
17/153,219
Granted
Feb 28, 2023
Kind
B2
Abstract

A processing device obtains a write operation which comprises first data and second data to be stored in first and second strips of a given stripe. The processing device stores the first data in the first strip and determines that the second strip is unavailable. The processing device determines a parity based on the first data and the second data and stores the parity in a parity strip. The processing device updates metadata to indicate that the second data was not stored in the second strip. In some embodiments, the updated metadata is non-persistent and the processing device may be further configured to rebuild the given stripe, update persistent metadata corresponding to a sector of stripes including the given stripe and clear the non-persistent metadata based at least in part on a completion of the rebuild.

Claims (148)

1. An apparatus comprising:

a storage system comprising:

a plurality of storage devices that are configured to store data pages, the data pages being distributed across the plurality of storage devices in a plurality of data stripes, each storage device of the plurality of storage devices storing a corresponding strip of each stripe;

at least one processing device comprising a processor coupled to memory, the at least one processing device being configured:

to obtain a write operation corresponding to a given stripe of the plurality of data stripes, the write operation comprising first data to be stored in a first strip of the given stripe and second data to be stored in a second strip of the given stripe;

to determine that the second strip of the given stripe is unavailable;

to store the first data in the first strip of the given stripe;

to determine a parity based at least in part on the first data and the second data;

to store the determined parity in a parity strip corresponding to the given stripe; and

to update metadata corresponding to the given stripe based at least in part on the storage of the first data in the first strip and the determination that the second strip is unavailable, the metadata indicating that the second data was not stored in the second strip;

wherein the metadata corresponding to the given stripe comprises at least one of a degraded status indicator and a spare status indicator, with at least one of the indicators being configured to provide at least a portion of the indication that the second data was not stored in the second strip.

2. The apparatus of claim 1 ,

wherein the metadata corresponding to the given stripe is stored as non-persistent metadata; and

wherein the at least one processing device is further configured:

to perform a rebuild of the given stripe;

to update second metadata corresponding to a sector of stripes including the given stripe based at least in part on a completion of the rebuild of the given stripe, the second metadata being stored as persistent metadata; and

to clear the metadata corresponding to the given stripe based at least in part on the completion of the rebuild of the given stripe.

3. The apparatus of claim 1 ,

wherein the at least one processing device is further configured to store the second data in a spare strip corresponding to the given stripe; and

wherein updating the metadata corresponding to the given stripe comprises updating the metadata to indicate that the second data is stored in the spare strip.

4. The apparatus of claim 3 , the at least one processing device is further configured:

to obtain a read operation corresponding to the given stripe;

to determine based at least in part on the metadata that the spare strip comprises the second data instead of the second strip;

to read the first data from the first strip;

to read the second data from the spare strip; and

to return the first data and the second data in a response to the read operation.

5. The apparatus of claim 1 , wherein updating the metadata corresponding to the given stripe comprises updating the metadata to indicate that the write operation has been performed as a degraded write operation in which the second data is not stored on the second strip of the given stripe.

6. The apparatus of claim 5 , wherein the at least one processing device is further configured:

to obtain a read operation corresponding to the given stripe;

to determine based at least in part on the metadata that the second data is not stored on the second strip of the given stripe due to the degraded write operation; and

to perform a degraded read operation based at least in part on the determination that the second data is not stored on the storage devices due to the degraded write operation, the degraded read operation comprising:

reading the first data from the first strip;

reading the parity from the parity strip;

calculating the second data based at least in part on the first data and the parity; and

returning the first data and the second data in a response to the read operation.

7. The apparatus of claim 5 , wherein the at least one processing device is further configured:

to obtain a second write operation corresponding to a second stripe of the plurality of data stripes, the second write operation comprising third data to be stored in a first strip of the second stripe and fourth data to be stored in a second strip of the second stripe, the first strip of the second stripe being stored on the same storage device of the plurality of storage devices as the first strip of the given stripe and the second strip of the second stripe being stored on the same storage device of the plurality of storage devices as the second strip of the given stripe;

to determine that the second strip of the second stripe is available;

to store the third data on the first strip of the second stripe; and

to store the fourth data on the second strip of the second stripe based at least in part on the determination that the second strip of the second stripe is available.

8. The apparatus of claim 7 , wherein the at least one processing device is further configured:

to obtain a read operation corresponding to the given stripe and the second stripe;

to determine based at least in part on the metadata that the second data is not stored on the second strip of the given stripe due to the degraded write operation;

to perform a degraded read operation based at least in part on the determination that the second data is not stored on the second strip of the given stripe due to the degraded write operation, the degraded read operation comprising:

reading the first data from the first strip of the given stripe;

reading the parity from the parity strip of the given stripe; and

calculating the second data based at least in part on the first data and the parity;

to read the third data from the first strip of the second stripe;

to read the fourth data from the second strip of the second stripe; and

to return the first data, calculated second data, third data and fourth data in a response to the read operation.

9. A method comprising:

storing data pages on a plurality of storage devices of a storage system, the data pages being distributed across the plurality of storage devices in a plurality of data stripes, each storage device of the plurality of storage devices storing a corresponding strip of each stripe;

obtaining a write operation corresponding to a given stripe of the plurality of data stripes, the write operation comprising first data to be stored in a first strip of the given stripe and second data to be stored in a second strip of the given stripe;

determining that the second strip of the given stripe is unavailable;

storing the first data in the first strip of the given stripe;

determining a parity based at least in part on the first data and the second data;

storing the determined parity in a parity strip corresponding to the given stripe; and

updating metadata corresponding to the given stripe based at least in part on the storage of the first data in the first strip and the determination that the second strip is unavailable, the metadata indicating that the second data was not stored in the second strip;

wherein the metadata corresponding to the given stripe comprises at least one of a degraded status indicator and a spare status indicator, with at least one of the indicators being configured to provide at least a portion of the indication that the second data was not stored in the second strip; and

wherein the method is performed by at least one processing device comprising a processor coupled to memory.

10. The method of claim 9 ,

wherein the metadata corresponding to the given stripe is stored as non-persistent metadata; and

wherein the method further comprises:

performing a rebuild of the given stripe;

updating second metadata corresponding to a sector of stripes including the given stripe based at least in part on a completion of the rebuild of the given stripe, the second metadata being stored as persistent metadata; and

clearing the metadata corresponding to the given stripe based at least in part on the completion of the rebuild of the given stripe.

11. The method of claim 9 ,

wherein the method further comprises storing the second data in a spare strip corresponding to the given stripe;

wherein updating the metadata corresponding to the given stripe comprises updating the metadata to indicate that the second data is stored in the spare strip; and

wherein the method further comprises:

obtaining a read operation corresponding to the given stripe;

determining based at least in part on the metadata that the spare strip comprises the second data instead of the second strip;

reading the first data from the first strip;

reading the second data from the spare strip; and

returning the first data and the second data in a response to the read operation.

12. The method of claim 9 , wherein updating the metadata corresponding to the given stripe comprises updating the metadata to indicate that the write operation has been performed as a degraded write operation in which the second data is not stored on the second strip of the given stripe.

13. The method of claim 12 , wherein the method further comprises:

obtaining a read operation corresponding to the given stripe;

determining based at least in part on the metadata that the second data is not stored on the second strip of the given stripe due to the degraded write operation; and

performing a degraded read operation based at least in part on the determination that the second data is not stored on the storage devices due to the degraded write operation, the degraded read operation comprising:

reading the first data from the first strip;

reading the parity from the parity strip;

calculating the second data based at least in part on the first data and the parity; and

returning the first data and the second data in a response to the read operation.

14. The method of claim 12 , wherein the method further comprises:

obtaining a second write operation corresponding to a second stripe of the plurality of data stripes, the second write operation comprising third data to be stored in a first strip of the second stripe and fourth data to be stored in a second strip of the second stripe, the first strip of the second stripe being stored on the same storage device of the plurality of storage devices as the first strip of the given stripe and the second strip of the second stripe being stored on the same storage device of the plurality of storage devices as the second strip of the given stripe;

determining that the second strip of the second stripe is available;

storing the third data on the first strip of the second stripe; and

storing the fourth data on the second strip of the second stripe based at least in part on the determination that the second strip of the second stripe is available.

15. The method of claim 14 , wherein the method further comprises:

obtaining a read operation corresponding to the given stripe and the second stripe;

determining based at least in part on the metadata that the second data is not stored on the second strip of the given stripe due to the degraded write operation;

performing a degraded read operation based at least in part on the determination that the second data is not stored on the second strip of the given stripe due to the degraded write operation, the degraded read operation comprising:

reading the first data from the first strip of the given stripe;

reading the parity from the parity strip of the given stripe; and

calculating the second data based at least in part on the first data and the parity;

reading the third data from the first strip of the second stripe;

reading the fourth data from the second strip of the second stripe; and

returning the first data, calculated second data, third data and fourth data in a response to the read operation.

16. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, the program code being executable by at least one processing device of a storage system, the at least one processing device comprising a processor coupled to memory, the storage system comprising a plurality of storage devices that are configured to store data pages, the data pages being distributed across the plurality of storage devices in a plurality of data stripes, each storage device of the plurality of storage devices storing a corresponding strip of each stripe, wherein the program code, when executed by the at least one processing device, causes the at least one processing device:

to obtain a write operation corresponding to a given stripe of the plurality of data stripes, the write operation comprising first data to be stored in a first strip of the given stripe and second data to be stored in a second strip of the given stripe;

to determine that the second strip of the given stripe is unavailable;

to store the first data in the first strip of the given stripe;

to determine a parity based at least in part on the first data and the second data;

to store the determined parity in a parity strip corresponding to the given stripe; and

to update metadata corresponding to the given stripe based at least in part on the storage of the first data in the first strip and the determination that the second strip is unavailable, the metadata indicating that the second data was not stored in the second strip;

wherein the metadata corresponding to the given stripe comprises at least one of a degraded status indicator and a spare status indicator, with at least one of the indicators being configured to provide at least a portion of the indication that the second data was not stored in the second strip.

17. The computer program product of claim 16 ,

wherein the metadata corresponding to the given stripe is stored as non-persistent metadata; and

wherein the program code causes the at least one processing device:

to perform a rebuild of the given stripe;

to update second metadata corresponding to a sector of stripes including the given stripe based at least in part on a completion of the rebuild of the given stripe, the second metadata being stored as persistent metadata; and

to clear the metadata corresponding to the given stripe based at least in part on the completion of the rebuild of the given stripe.

18. The computer program product of claim 16 , wherein:

the program code causes the at least one processing device to store the second data in a spare strip corresponding to the given stripe;

updating the metadata corresponding to the given stripe comprises updating the metadata to indicate that the second data is stored in the spare strip; and

the program code further causes the at least one processing device:

to obtain a read operation corresponding to the given stripe;

to determine based at least in part on the metadata that the spare strip comprises the second data instead of the second strip;

to read the first data from the first strip;

to read the second data from the spare strip; and

to return the first data and the second data in a response to the read operation.

19. The computer program product of claim 16 , wherein:

updating the metadata corresponding to the given stripe comprises updating the metadata to indicate that the write operation has been performed as a degraded write operation in which the second data is not stored on the second strip of the given stripe;

the program code further causes the at least one processing device:

to obtain a read operation corresponding to the given stripe;

to determine based at least in part on the metadata that the second data is not stored on the second strip of the given stripe due to the degraded write operation; and

to perform a degraded read operation based at least in part on the determination that the second data is not stored on the storage devices due to the degraded write operation, the degraded read operation comprising:

reading the first data from the first strip;

reading the parity from the parity strip;

calculating the second data based at least in part on the first data and the parity; and

returning the first data and the second data in a response to the read operation.

20. The computer program product of claim 16 , wherein:

updating the metadata corresponding to the given stripe comprises updating the metadata to indicate that the write operation has been performed as a degraded write operation in which the second data is not stored on the second strip of the given stripe;

the program code further causes the at least one processing device:

to obtain a second write operation corresponding to a second stripe of the plurality of data stripes, the second write operation comprising third data to be stored in a first strip of the second stripe and fourth data to be stored in a second strip of the second stripe, the first strip of the second stripe being stored on the same storage device of the plurality of storage devices as the first strip of the given stripe and the second strip of the second stripe being stored on the same storage device of the plurality of storage devices as the second strip of the given stripe;

to determine that the second strip of the second stripe is available;

to store the third data on the first strip of the second stripe;

to store the fourth data on the second strip of the second stripe based at least in part on the determination that the second strip of the second stripe is available;

to obtain a read operation corresponding to the given stripe and the second stripe;

to determine based at least in part on the metadata that the second data is not stored on the second strip of the given stripe due to the degraded write operation;

to perform a degraded read operation based at least in part on the determination that the second data is not stored on the second strip of the given stripe due to the degraded write operation, the degraded read operation comprising:

reading the first data from the first strip of the given stripe;

reading the parity from the parity strip of the given stripe; and

calculating the second data based at least in part on the first data and the parity;

to read the third data from the first strip of the second stripe;

to read the fourth data from the second strip of the second stripe; and

to return the first data, calculated second data, third data and fourth data in a response to the read operation.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (055479/0342) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0460 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (055479/0051) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0663 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056136/0752) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0771 →
RELEASE OF SECURITY INTEREST AT REEL 055408 FRAME 0697 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0553 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 056136/0752 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 055479/0051 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 055479/0342 →
SECURITY AGREEMENT Recorded Feb 25, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 055408/0697 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2021
From: SHATSKY, YOSEF; TAL, DORON; MATOSEVICH, RIVKA
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 054967/0491 →
Continuity (1)
Related Publication 20220229730A1 · Jul 21, 2022