IP Library Granted Patent US 11,281,386
Granted Patent B2
US 11,281,386 · App. 16/800,224 · Granted Mar 22, 2022

Disk array enclosure with metadata journal

Inventors: Boris Glimcher (Bnei Brak, IL); Amitai Alkalay (Kadima, IL)
Assignee: EMC IP Holding Company LLC
G06F3/0634G06F3/0619G06F3/0644G06F3/0659G06F3/0673
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,281,386
App. No.
16/800,224
Granted
Mar 22, 2022
Kind
B2
Abstract

A storage system comprises a disk array enclosure comprising an enclosure controller, a cache comprising a metadata journal, a plurality of data storage devices and a plurality of metadata storage devices. The enclosure controller is configured to write a stripe metadata page to the metadata storage devices that corresponds to a stripe of data stored on the data storage devices and to determine that the write of the stripe metadata page failed for a first metadata storage device. The enclosure controller is configured to add an entry to the metadata journal based on the determination that the write failed. The entry comprises an indication of the first metadata storage device and the stripe of data. The enclosure controller is configured to set an indication in a data structure associated with the disk array enclosure that the stripe metadata page has not been written to the first metadata storage device.

Claims (84)

1. An apparatus comprising:

a storage system comprising a disk array enclosure, the disk array enclosure comprising:

at least one enclosure controller comprising at least one processing device coupled to a memory;

a cache comprising a metadata journal;

a plurality of data storage devices in communication with the at least one enclosure controller; and

a plurality of metadata storage devices in communication with the at least one enclosure controller, each metadata storage device being configured to store metadata corresponding to data stored on the plurality of storage devices;

wherein the at least one enclosure controller is configured:

to write a first stripe metadata page to the metadata storage devices, the first stripe metadata page corresponding to a stripe of data stored on the plurality of data storage devices of the disk array enclosure;

to determine that the write of the first stripe metadata page failed for a first metadata storage device of the plurality of metadata storage devices;

to add an entry to the metadata journal based at least in part on the determination that the write of the first stripe metadata page failed, the entry comprising an indication of the first metadata storage device and an indication of the stripe of data;

to set an indication in a data structure associated with the disk array enclosure that the first stripe metadata page for the stripe of data has not been written to the first metadata storage device; and

to set the first metadata storage device to a hiccup state based at least in part on the determination that the write of the first stripe metadata page failed for the first metadata storage device.

2. The apparatus of claim 1 wherein the at least one enclosure controller is further configured:

to determine that the write of the first stripe metadata page succeeded for a second metadata storage device of the plurality of metadata storage devices;

to determine that the metadata journal comprises an additional entry corresponding to the second metadata storage device, the additional entry comprising an indication of the second metadata storage device and an indication of the stripe of data; and

to invalidate the additional entry in the metadata journal based at least in part on the determination that the write of the first stripe metadata page succeeded for the second metadata storage device.

3. The apparatus of claim 1 wherein the memory comprises a dirty data structure associated with the first metadata storage device, the at least one enclosure controller being further configured to add an entry to the dirty data structure based at least in part on the determination that the write of the first stripe metadata page failed for the first metadata storage device, the entry added to the dirty data structure comprising a logical identifier corresponding to at least a portion of the stripe of data.

4. The apparatus of claim 3 wherein the at least one enclosure controller is further configured:

to receive a read operation comprising the logical identifier;

to determine that the dirty data structure associated with the first metadata storage device comprises the logical identifier; and

to attempt to obtain the first stripe metadata page from another of the plurality of metadata storage devices based at least in part on the determination that the dirty data structure associated with the first metadata storage device comprises the logical identifier.

5. The apparatus of claim 4 wherein:

the memory comprises a plurality of dirty data structures each associated with a corresponding metadata storage device of the plurality of metadata storage devices;

the at least one enclosure controller is further configured:

to maintain a copy of the first stripe metadata page on the plurality of data storage devices;

to determine that each of the dirty data structures comprises the logical identifier; and

to obtain the first stripe metadata page from the plurality of data storage devices based at least in part on the determination that the each of the dirty data structures comprises the logical identifier.

6. The apparatus of claim 4 wherein the at least one enclosure controller is further configured:

to determine that the attempt to obtain the first stripe metadata page from the another of the plurality of metadata storage devices was successful; and

to copy the first stripe metadata page to the first metadata storage device based at least in part on the determination that the attempt to obtain the first stripe metadata page was successful.

7. The apparatus of claim 1 wherein the at least one enclosure controller is further configured:

to add an additional entry to the metadata journal for an attempted write of a second stripe metadata page to the first metadata storage device based at least in part on the first metadata storage device being in the hiccup state.

8. The apparatus of claim 7 wherein in response to an attempted read of the second stripe metadata page from the first metadata storage device while the first metadata storage device is in the hiccup state, the at least one enclosure controller is further configured to read the second stripe metadata page from another of the metadata storage devices.

9. The apparatus of claim 7 wherein the at least one enclosure controller is further configured:

to determine that a threshold criterion is met by the first metadata storage device;

to set the first metadata storage device to a healthy state based at least in part on the determination that the threshold criterion is met by the first metadata storage device; and

to resynchronize the first metadata storage device based at least in part on the determination that the threshold criterion is met by the first metadata storage device.

10. The apparatus of claim 9 wherein resynchronizing the first metadata storage device comprises:

for each entry corresponding to the first metadata storage device in the metadata journal:

reading a valid copy of the corresponding first stripe metadata page from another of the metadata storage devices;

writing the valid copy of the corresponding first stripe metadata page to the first metadata storage device; and

invalidating the entry in the metadata journal.

11. A method comprising:

writing a first stripe metadata page to a plurality of metadata storage devices of a disk array enclosure, the first stripe metadata page corresponding to a stripe of data stored on a plurality of data storage devices of the disk array enclosure;

determining that the write of the first stripe metadata page failed for a first metadata storage device of the plurality of metadata storage devices;

adding an entry to a metadata journal stored in a cache of the disk array enclosure based at least in part on the determination that the write of the first stripe metadata page failed, the entry comprising an indication of the first metadata storage device and an indication of the stripe of data;

setting an indication in a data structure associated with the disk array enclosure that the first stripe metadata page for the stripe of data has not been written to the first metadata storage device; and

setting the first metadata storage device to a hiccup state based at least in part on the determination that the write of the first stripe metadata page failed for the first metadata storage device;

wherein the method is implemented by at least one enclosure controller of the disk array enclosure.

12. The method of claim 11 wherein the method further comprises:

determining that the write of the first stripe metadata page succeeded for a second metadata storage device of the plurality of metadata storage devices;

determining that the metadata journal comprises an additional entry corresponding to the second metadata storage device, the additional entry comprising an indication of the second metadata storage device and an indication of the stripe of data; and

invalidating the additional entry in the metadata journal based at least in part on the determination that the write of the first stripe metadata page succeeded for the second metadata storage device.

13. The method of claim 11 wherein the at least one enclosure controller comprises at least one processing device coupled to a memory, the memory comprising a dirty data structure associated with the first metadata storage device, the method further comprising adding an entry to the dirty data structure based at least in part on the determination that the write of the first stripe metadata page failed for the first metadata storage device, the entry added to the dirty data structure comprising a logical identifier corresponding to at least a portion of the stripe of data.

14. The method of claim 13 wherein the method further comprises:

receiving a read operation comprising the logical identifier;

determining that the dirty data structure associated with the first metadata storage device comprises the logical identifier; and

attempting to obtain the first stripe metadata page from another of the plurality of metadata storage devices based at least in part on the determination that the dirty data structure associated with the first metadata storage device comprises the logical identifier.

15. The method of claim 14 wherein:

the memory comprises a plurality of dirty data structures each associated with a corresponding metadata storage device of the plurality of metadata storage devices;

the method further comprises:

maintaining a copy of the first stripe metadata page on the plurality of data storage devices;

determining that each of the dirty data structures comprises the logical identifier; and

obtaining the first stripe metadata page from the plurality of data storage devices based at least in part on the determination that the each of the dirty data structures comprises the logical identifier.

16. The method of claim 14 wherein the method further comprises:

determining that the attempt to obtain the first stripe metadata page from the another of the plurality of metadata storage devices was successful; and

copying the first stripe metadata page to the first metadata storage device based at least in part on the determination that the attempt to obtain the first stripe metadata page was successful.

17. The method of claim 11 further comprising:

adding an additional entry to the metadata journal for an attempted write of a second stripe metadata page to the first metadata storage device based at least in part on the first metadata storage device being in the hiccup state.

18. The method of claim 17 wherein in response to an attempted read of the second stripe metadata page from the first metadata storage device while the first metadata storage device is in the hiccup state, the method further comprises reading the second stripe metadata page from another of the metadata storage devices.

19. The method of claim 17 wherein the method further comprises:

determining that a threshold criterion is met by the first metadata storage device;

setting the first metadata storage device to a healthy state based at least in part on the determination that the threshold criterion is met by the first metadata storage device; and

resynchronizing the first metadata storage device based at least in part on the determination that the threshold criterion is met by the first metadata storage device, the resynchronizing comprising:

for each entry corresponding to the first metadata storage device in the metadata journal:

reading a valid copy of the corresponding first stripe metadata page from another of the metadata storage devices;

writing the valid copy of the corresponding first stripe metadata page to the first metadata storage device; and

invalidating the entry in the metadata journal.

20. 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 when executed by at least one enclosure controller of a disk array enclosure of a storage system, causes the at least one enclosure controller:

to write a first stripe metadata page to a plurality of metadata storage devices of the disk array enclosure, the first stripe metadata page corresponding to a stripe of data stored on a plurality of data storage devices of the disk array enclosure;

to determine that the write of the first stripe metadata page failed for a first metadata storage device of the plurality of metadata storage devices;

to add an entry to a metadata journal stored in a cache of the disk array enclosure based at least in part on the determination that the write of the first stripe metadata page failed, the entry comprising an indication of the metadata storage device and an indication of the stripe of data;

to set an indication in a data structure associated with the disk array enclosure that the first stripe metadata page for the stripe of data has not been written to the first metadata storage device; and

to set the first metadata storage device to a hiccup state based at least in part on the determination that the write of the first stripe metadata page failed for the first metadata storage device.

Assignments (13)
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 (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 (053311/0169) 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 CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
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
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052852/0022 →
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 CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 25, 2020
From: GLIMCHER, BORIS; ALKALAY, AMITAI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 051920/0709 →
Continuity (1)
Related Publication 20210263664A1 · Aug 26, 2021