IP Library Granted Patent US 11,079,969
Granted Patent B1
US 11,079,969 · App. 16/800,253 · Granted Aug 3, 2021

Disk array enclosure configured for metadata and data storage processing

Inventors: Boris Glimcher (Bnei Brak, IL); Amitai Alkalay (Kadima, IL)
Assignee: EMC IP Holding Company LLC
G06F3/0659G06F3/0604G06F3/0689
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,079,969
App. No.
16/800,253
Granted
Aug 3, 2021
Kind
B1
Abstract

A storage system comprises a disk array enclosure comprising at least one enclosure controller, a plurality of data storage devices and at least one metadata storage device. The enclosure controller is configured to receive a write operation comprising data to be stored on at least one of the plurality of data storage devices and to determine a logical identifier for the data. The enclosure controller is further configured to determine a physical location on the at least one of the plurality of data storage devices for storing the data and to store the data at the physical location. The enclosure controller is further configured to update metadata stored on the at least one metadata storage device based at least in part on the physical location and the logical identifier and to return the logical identifier as a response to the received write operation.

Claims (74)

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 memory;

a plurality of data storage devices in communication with the at least one enclosure controller, the data storage devices being configured to store data in a plurality of stripes, at least a portion of each stripe being stored on each of the data storage devices, the plurality of stripes being grouped into respective stripe ranges; and

at least one metadata storage device in communication with the at least one enclosure controller, the at least one metadata storage device storing metadata comprising a plurality of stripe range metadata pages each corresponding to a respective stripe range and a plurality of stripe metadata pages each corresponding to a respective stripe of the plurality of stripes, the stripe range metadata pages being different than the stripe metadata pages;

wherein the at least one enclosure controller is configured:

to receive a write operation comprising data to be stored on at least one of the plurality of data storage devices of the disk array enclosure;

to determine a logical identifier for the data based at least in part on the received write operation;

to determine a physical location on the at least one of the plurality of data storage devices based at least in part on the logical identifier;

to store the data on the at least one of the plurality of data storage devices at the physical location;

to update the metadata stored on the at least one metadata storage device based at least in part on the storage of the data at the physical location; and

to return the logical identifier as a response to the received write operation.

2. The apparatus of claim 1 wherein updating the metadata stored on the at least one metadata storage device based at least in part on the storage of the data at the physical location comprises:

updating the stripe metadata page corresponding to the stripe comprising the physical location based at least in part on the storage of the data at the physical location; and

updating the stripe range metadata page corresponding to the updated stripe metadata page based at least in part on the updated stripe metadata page.

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

to receive a read operation comprising the logical identifier corresponding to the data stored on the plurality of data storage devices;

to identify, based at least in part on the logical identifier, a given stripe range metadata page of the plurality of stripe range metadata pages stored in the at least one metadata storage device;

to identify, based at least in part on the logical identifier and the given stripe range metadata page, a given stripe metadata page of the plurality of stripe metadata pages stored in the at least one metadata storage device;

to determine the physical location of the data on the at least one of the plurality of data storage devices based at least in part on the given stripe metadata page;

to obtain the data from the determined physical location; and

to return the obtained data as a response to the received read operation.

4. The apparatus of claim 1 wherein the storage system further comprises a storage controller in communication with the disk array enclosure and wherein the write operation is submitted to the at least one enclosure controller by the storage controller and the logical identifier is returned to the storage controller as a response to the submitted write operation.

5. The apparatus of claim 4 wherein the storage controller is configured to submit one or more operations to the at least one enclosure controller of the disk array enclosure, the one or more operations comprising one or more of a read operation, a write operation, a reference count increment operation, a reference count decrement operation and a fused operation.

6. The apparatus of claim 5 wherein:

the fused operation comprises a plurality of operations, each operation in the fused operation comprising one of a read operation, a write operation, a reference count increment operation and a reference count decrement operation; and

responsive to a failure of one or more of the operations included in the fused operation, the at least one enclosure controller is configured to return an indication of a failure of the fused operation to the storage controller.

7. A method comprising:

receiving a write operation comprising data to be stored on at least one of a plurality of data storage devices of a disk array enclosure of a storage system by an enclosure controller of the disk array enclosure, the data storage devices being configured to store data in a plurality of stripes, at least a portion of each stripe being stored on each of the data storage devices, the plurality of stripes being grouped into respective stripe ranges;

determining a logical identifier for the data based at least in part on the received write operation;

determining a physical location on the at least one of the plurality of data storage devices based at least in part on the logical identifier;

storing the data on the at least one of the plurality of data storage devices at the physical location;

updating metadata stored on at least one metadata storage device of the disk array enclosure based at least in part on the storage of the data at the physical location, the metadata comprising a plurality of stripe range metadata pages each corresponding to a respective stripe range and a plurality of stripe metadata pages each corresponding to a respective stripe of the plurality of stripes, the stripe range metadata pages being different than the stripe metadata pages; and

returning the logical identifier as a response to the received write operation;

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

8. The method of claim 7 wherein updating the metadata stored on the at least one metadata storage device of the disk array enclosure based at least in part on the storage of the data at the physical location comprises:

updating the stripe metadata page corresponding to the stripe comprising the physical location based at least in part on the storage of the data at the physical location; and

updating the stripe range metadata page corresponding to the updated stripe metadata page based at least in part on the updated stripe metadata page.

9. The method of claim 7 wherein the method further comprises:

receiving a read operation comprising the logical identifier corresponding to the data stored on the plurality of data storage devices;

identifying, based at least in part on the logical identifier, a given stripe range metadata page of the plurality of stripe range metadata pages stored in the at least one metadata storage device;

identifying, based at least in part on the logical identifier and the given stripe range metadata page, a given stripe metadata page of the plurality of stripe metadata pages stored in the at least one metadata storage device;

determining the physical location of the data on the at least one of the plurality of data storage devices based at least in part on the given stripe metadata page;

obtaining the data from the determined physical location; and

returning the obtained data as a response to the received read operation.

10. The method of claim 7 wherein the write operation is submitted to the at least one enclosure controller by a storage controller of the storage system that is in communication with the disk array enclosure and the logical identifier is returned to the storage controller as a response to the submitted write operation.

11. The method of claim 10 wherein the storage controller is configured to submit one or more operations to the at least one enclosure controller of the disk array enclosure, the one or more operations comprising one or more of a read operation, a write operation, a reference count increment operation, a reference count decrement operation and a fused operation.

12. The method of claim 11 wherein:

the fused operation comprises a plurality of operations, each operation in the fused operation comprising one of a read operation, a write operation, a reference count increment operation and a reference count decrement operation; and

responsive to a failure of one or more of the operations included in the fused operation, the at least one enclosure controller is configured to return an indication of a failure of the fused operation to the storage controller.

13. 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 receive a write operation comprising data to be stored on at least one of a plurality of data storage devices of the disk array enclosure, the data storage devices being configured to store data in a plurality of stripes, at least a portion of each stripe being stored on each of the data storage devices, the plurality of stripes being grouped into respective stripe ranges;

to determine a logical identifier for the data based at least in part on the received write operation;

to determine a physical location on the at least one of the plurality of data storage devices based at least in part on the logical identifier;

to store the data on the plurality of data storage devices at the physical location;

to update metadata stored on at least one metadata storage device of the disk array enclosure based at least in part on the storage of the data at the physical location, the metadata comprising a plurality of stripe range metadata pages each corresponding to a respective stripe range and a plurality of stripe metadata pages each corresponding to a respective stripe of the plurality of stripes, the stripe range metadata pages being different than the stripe metadata pages; and

to return the logical identifier as a response to the received write operation.

14. The computer program product of claim 13 wherein updating the metadata stored on the at least one metadata storage device of the disk array enclosure based at least in part on the storage of the data at the physical location comprises:

updating the stripe metadata page corresponding to the stripe comprising the physical location based at least in part on the storage of the data at the given physical location; and

updating the stripe range metadata page corresponding to the updated stripe metadata page based at least in part on the updated stripe metadata page.

15. The computer program product of claim 13 wherein the program code further causes the at least one enclosure controller:

to receive a read operation comprising the logical identifier corresponding to the data stored on the plurality of data storage devices;

to identify, based at least in part on the logical identifier, a given stripe range metadata page of the plurality of stripe range metadata pages stored in the at least one metadata storage device;

to identify, based at least in part on the logical identifier and the given stripe range metadata page, a given stripe metadata page of the plurality of stripe metadata pages stored in the at least one metadata storage device;

to determine the physical location of the data on the at least one of the plurality of data storage devices based at least in part on the given stripe metadata page;

to obtain the data from the determined physical location; and

to return the obtained data as a response to the received read operation.

16. The computer program product of claim 13 wherein the write operation is submitted to the at least one enclosure controller by a storage controller of the storage system that is in communication with the disk array enclosure and the logical identifier is returned to the storage controller as a response to the submitted write operation, the storage controller being configured to submit one or more operations to the at least one enclosure controller of the disk array enclosure, the one or more operations comprising one or more of a read operation, a write operation, a reference count increment operation, a reference count decrement operation and a fused operation.

17. The computer program product of claim 16 wherein:

the fused operation comprises a plurality of operations, each operation in the fused operation comprising one of a read operation, a write operation, a reference count increment operation and a reference count decrement operation; and

responsive to a failure of one or more of the operations included in the fused operation, the program code further causes the at least one enclosure controller to return an indication of a failure of the fused operation to the storage controller.

18. The apparatus of claim 1 wherein each stripe range comprises multiple stripes of the plurality of stripes.

19. The method of claim 7 wherein each stripe range comprises multiple stripes of the plurality of stripes.

20. The computer program product of claim 13 wherein each stripe range comprises multiple stripes of the plurality of stripes.

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 (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 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 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 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 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 →
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/0747 →