IP Library Granted Patent US 10,592,166
Granted Patent B2
US 10,592,166 · App. 16/052,037 · Granted Mar 17, 2020

Fast input/output in a content-addressable storage architecture with paged metadata

Inventors: Zvi Schneider (Tel Aviv, IL); Amitai Alkalay (Kadima, IL); Assaf Natanzon (Tel Aviv, IL)
Assignee: EMC IP Holding Company LLC
G06F3/0659G06F3/0619G06F3/0673G06F3/0689G06F12/10G06F13/1668G06F15/17331G06F2212/1032G06F2212/657G06F2213/28
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,592,166
App. No.
16/052,037
Granted
Mar 17, 2020
Kind
B2
Abstract

An aspect of minimizing read amplification IO where metadata is not in RAM includes reading a l_md_page and corresponding lp_md_page from a storage device in a dual distributed layered architecture. The l_md_page specifies a metadata page that persists in a SSD and having logical addresses of metadata, and the lp_md_page associates logical block addresses with corresponding physical locations for the metadata. An aspect further includes reading data for a redundant array of independent disks (RAID) stripe according to an associated physical offset in the lp_md_page, accessing a stripe counter from the lp_md_page, and comparing the stripe counter from the lp_md_page to a stripe counter held in memory. Upon determining the stripe counter from the lp_md_page is the same, an aspect further includes determining the data is valid and reading the data according to associated physical offset in the lp_md_page and while bypassing a data module for the data.

Claims (64)

1. A method for minimizing read amplification for input/output (IO) where metadata is not in random access memory (RAM), comprising:

reading a l_md_page and corresponding lp_md_page from a storage device in a dual distributed layered architecture, the l_md_page specifies a metadata page that persists in a solid state drive and having logical addresses of metadata, and the lp_md_page associates logical block addresses (LBAs) with corresponding physical locations for the metadata;

concatenating the l_md_page and the lp_md_page;

storing the concatenated pages in the solid state disk;

wherein reading the reading the l_md_page and the lp_md_page includes loading the concatenated pages in a single command;

reading data for a redundant array of independent disks (RAID) stripe according to an associated physical offset in the lp_md_page;

accessing a stripe counter from the lp_md_page;

comparing the stripe counter from the lp_md_page to a stripe counter held in memory; and

upon determining the stripe counter from the lp_md_page is the same:

determining the data is valid; and

reading the data according to associated physical offset in the lp_md_page and while bypassing a data module for the data.

2. The method of claim 1 , wherein reading the l_md_page and the lp_md_page is performed by sending an input/output (IO) request to the data module.

3. The method of claim 1 , wherein reading the l_md_page and the lp_md_page is performed by a direct non-volatile memory over fabric (NVMEoF) read from a control module to drives bypassing the data module, the reading performed if the data is determined to be correct.

4. The method of claim 1 , wherein accessing the stripe counter is performed by sending a request to a data module.

5. The method of claim 1 , wherein upon accessing the stripe counter the method includes reading a remote direct memory access (RDMA) read via an RDMA interconnect from relevant offset in mapped memory.

6. The method of claim 1 , further comprising upon determining the

stripe counter from the lp_md_page is not the same:

accessing a data module and loading the h_md_page;

reading a physical location of the data from the h_md_page;

accessing by a control module, a new physical location of the data during a read operation; and

updating, by the control module, the lp_md_page.

7. A system for minimizing read amplification for input/output (IO) where metadata is not in random access memory (RAM), comprising:

a memory comprising computer-executable instructions; and

a processor executing the computer-executable instructions, the computer-executable instructions when executed by the processor cause the processor to perform operations comprising:

reading a l_md_page and corresponding lp_md_page from a storage device in a dual distributed layered architecture, the l_md_page specifies a metadata page that persists in a solid state drive and having logical addresses of metadata, and the lp_md_page associates logical block addresses (LBAs) with corresponding physical locations for the metadata;

concatenating the l_md_page and the lp_md_page;

storing the concatenated pages in the solid state disk;

wherein reading the reading the l_md_page and the lp_md_page includes loading the concatenated pages in a single command;

reading data for a redundant array of independent disks (RAID) stripe according to an associated physical offset in the lp_md_page;

accessing a stripe counter from the lp_md_page;

comparing the stripe counter from the lp_md_page to a stripe counter held in memory; and

upon determining the stripe counter from the lp_md_page is the same:

determining the data is valid; and

reading the data according to associated physical offset in the lp_md_page and while bypassing a data module for the data.

8. The system of claim 7 , wherein reading the l_md_page and the lp_md_page is performed by sending an input/output (IO) request to the data module.

9. The system of claim 7 , wherein reading the l_md_page and the lp_md_page is performed by a direct NVMEoF read from a control module to drives bypassing the data module, the reading performed if the data is determined to be correct.

10. The system of claim 7 , wherein accessing the stripe counter is performed by sending a request to a data module.

11. The system of claim 7 , wherein upon accessing the stripe counter, the operations further include reading an RDMA read via an RDMA interconnect from relevant offset in mapped memory.

12. The system of claim 7 , wherein the operations further include upon determining the stripe counter from the lp_md_page is not the same:

accessing a data module and loading the h_md_page;

reading a physical location of the data from the h_md_page;

accessing by a control module, a new physical location of the data during a read operation; and

updating, by the control module, the lp_md_page.

13. A computer program product embodied on a non-transitory computer readable medium, the computer program product including instructions that, when executed by a computer causes the computer to perform operations comprising:

reading a l_md_page and corresponding lp_md_page from a storage device in a dual distributed layered architecture, the l_md_page specifies a metadata page that persists in a solid state drive and having logical addresses of metadata, and the lp_md_page associates logical block addresses (LBAs) with corresponding physical locations for the metadata;

concatenating the l_md_page and the lp_md_page;

storing the concatenated pages in the solid state disk;

wherein reading the reading the l_md_page and the lp_md_page includes loading the concatenated pages in a single command:

reading data for a redundant array of independent disks (RAID) stripe according to an associated physical offset in the lp_md_page;

accessing a stripe counter from the lp_md_page;

comparing the stripe counter to from the lp_md_page to a stripe counter held in memory; and

upon determining the stripe counter from the lp_md_page is the same:

determining the data is valid; and

reading the data according to associated physical offset in the lp_md_page and while bypassing a data module for the data.

14. The computer program product of claim 13 , wherein reading the l_md_page and the lp_md_page is performed by sending an input/output (IO) request to the data module.

15. The computer program product of claim 13 , wherein reading the l_md_page and the lp_md_page is performed by a direct NVMEoF read from a control module to drives bypassing the data module, the reading performed if the data is determined to be correct.

16. The computer program product of claim 13 , wherein accessing the stripe counter is performed by sending a request to a data module.

17. The computer program product of claim 13 , wherein upon accessing the stripe counter the operations further include reading an RDMA read via an RDMA interconnect from relevant offset in mapped memory.

18. The computer program product of claim 13 , wherein the operations further include:

upon determining the stripe counter from the lp_md_page is not the same:

accessing a data module and loading the h_md_page;

reading a physical location of the data from the h_md_page;

accessing by a control module, a new physical location of the data during a read operation; and

updating, by the control module, the lp_md_page.

Assignments (6)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (047648/0422) 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
Reel/Frame 060160/0862 →
RELEASE OF SECURITY INTEREST AT REEL 047648 FRAME 0346 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0510 →
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 (CREDIT) Recorded Oct 12, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047648/0346 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 12, 2018
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 047648/0422 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2018
From: SCHNEIDER, ZVI; ALKALAY, AMITAI; NATANZON, ASSAF
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 046580/0203 →