IP Library Granted Patent US 10,089,012
Granted Patent B1
US 10,089,012 · App. 14/750,441 · Granted Oct 2, 2018

Zero on demand operations based on zeroed chunk tables of storage drive objects stored in main memory

Inventors: Lili Chen (Hopkinton, MA); Peter Puhov (Shrewsbury, MA); Kimchi Mai (Worcester, MA)
Assignee: EMC IP Holding Company LLC
G06F3/061G06F3/0659G06F3/0683
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,089,012
App. No.
14/750,441
Filed
Jun 25, 2015
Granted
Oct 2, 2018
Kind
B1
Art Unit
2137
USPC
711/154
Abstract

A technique processes input/output (I/O) requests from a set of host computers. The technique utilizes data storage equipment which includes a set of physical storage drives and storage processing circuitry which accesses the set of physical storage drives. The technique involves storing, by the storage processing circuitry, a set of storage drive objects in main memory. The set of storage drive objects includes a set of zeroed chunk tables. Each storage drive object (i) represents a physical storage drive and (ii) includes a zeroed chunk table which identifies storage chunks of that physical storage drive that have been initialized to zero. The technique further involves receiving, by the storage processing circuitry, I/O requests from the set of host computers, and performing, by the storage processing circuitry, I/O tasks in response to the I/O requests. The I/O tasks include zero on demand operations based on the set of zeroed chunk tables.

Claims (70)

1. In data storage equipment which includes a set of physical storage drives and storage processing circuitry which is constructed and arranged to access the set of physical storage drives, a method of processing input/output (I/O) requests from a set of host computers, the method comprising:

storing, by the storage processing circuitry of the data storage equipment, a set of storage drive objects in main memory of the storage processing circuitry, each storage drive object among the set of storage drive objects including (i) a storage drive data area; and (ii) a zeroed chunk table, the storage drive object representing a respective physical storage drive among the set of physical storage drives, the storage drive data area including an identifier that uniquely identifies the respective physical storage drive, the respective physical storage drive including (i) a data region and (ii) a metadata region, the data region being divided into a plurality of storage chunks, the metadata region including a plurality of metadata areas associated with the plurality of storage chunks, respectively, the plurality of metadata areas containing a plurality of status indications of the plurality of storage chunks, respectively, the zeroed chunk table including a plurality of zeroed chunk table entries corresponding to the plurality of metadata areas, respectively;

marking one or more of the plurality of status indications contained in the plurality of metadata areas to indicate that one or more of the respective storage chunks must be initialized to zero before use;

having marked the one or more status indications contained in the plurality of metadata areas, marking one or more of the plurality of zeroed chunk table entries corresponding to the respective metadata areas containing the one or more marked status indications;

receiving, by the storage processing circuitry, I/O requests from the set of host computers; and

performing, by the storage processing circuitry, I/O tasks in response to the received I/O requests, the I/O tasks including zero on demand (ZOD) operations pertaining to the respective storage chunks, the performing of the ZOD operations including:

making determinations as to whether any of the respective storage chunks must be initialized to zero before use by identifying the marked zeroed chunk table entries corresponding to the respective metadata areas containing the one or more marked status indications;

having identified the marked zeroed chunk table entries, performing the ZOD operations on the one or more respective storage chunks indicated by the marked status indications as requiring initialization to zero before use; and

having performed the ZOD operations on the one or more respective storage chunks, (i) unmarking the marked zeroed chunk table entries included in the zeroed chunk table, and (ii) unmarking the marked status indications contained in the plurality of metadata areas included in the metadata region of the respective physical storage drive.

2. A method as in claim 1 wherein the marking of the one or more status indications contained in the plurality of metadata areas is performed in response to receiving a bind command for a logical unit of storage (LUN), and wherein the method further comprises:

having marked the one or more zeroed chunk table entries corresponding to the respective metadata areas containing the one or more marked status indications, directing a background service to initialize to zero the non-zeroed storage chunks of the LUN based on the zeroed chunk table.

3. A method as in claim 2 wherein performing the I/O tasks in response to the I/O requests includes:

receiving an I/O request to access the LUN from a host computer, the I/O request identifying a storage chunk on a particular physical storage drive of the set of physical storage drives,

accessing a particular storage drive object representing the particular physical storage drive to determine, from the zeroed chunk table of the particular storage drive object, whether the storage chunk on the particular physical storage drive has been initialized to zero, and

only after the storage chunk on the particular physical storage drive has been initialized to zero, accessing the storage chunk on the particular physical storage drive in accordance with the I/O request.

4. A method as in claim 3 wherein the I/O request is a write command;

wherein accessing the particular storage drive object representing the particular physical storage drive results in a determination that the storage chunk on the particular physical storage drive has not been initialized to zero; and

wherein accessing the storage chunk on the particular physical storage drive in accordance with the I/O request includes (i) initializing the storage chunk to zero as a ZOD operation, (ii) writing data to the storage chunk, and (iii) marking the zeroed chunk table of the particular storage drive object to indicate that the storage chunk on the particular physical storage drive has been initialized to zero.

5. A method as in claim 3 wherein the I/O request is a write command;

wherein accessing the particular storage drive object representing the particular physical storage drive results in a determination that the storage chunk on the particular physical storage drive has already been initialized to zero; and

wherein accessing the storage chunk on the particular physical storage drive in accordance with the I/O request includes writing data to the storage chunk on the particular physical storage drive upon determining that the storage chunk on the particular physical storage drive has already been initialized to zero.

6. A method as in claim 3 wherein the I/O request is a read command;

wherein accessing the particular storage drive object representing the particular physical storage drive results in a determination that the storage chunk on the particular physical storage drive has not been initialized to zero; and

wherein accessing the storage chunk on the particular physical storage drive in accordance with the I/O request includes (i) returning zeros as a response to reading from the storage chunk, and (ii) maintaining the zeroed chunk table of the particular storage drive object to indicate that the storage chunk on the particular physical storage drive has not been initialized to zero.

7. A method as in claim 3 wherein the I/O request is a read command;

wherein accessing the particular storage drive object representing the particular physical storage drive results in a determination that the storage chunk on the particular physical storage drive has already been initialized to zero; and

wherein accessing the storage chunk on the particular physical storage drive in accordance with the I/O request includes reading data from the storage chunk on the particular physical storage drive upon determining that the storage chunk on the particular physical storage drive has already been initialized to zero.

8. A method as in claim 2 wherein performing the I/O tasks in response to the I/O requests includes:

performing read and write operations in response to the I/O requests while the background service initializes to zero the non-zeroed storage chunks of the LUN based on the zeroed chunk table, the read and write operations being performed within the data storage equipment as higher priority operations relative to the background service.

9. A method as in claim 1 , further comprising:

maintaining synchronization between the plurality of metadata areas associated with the plurality of storage chunks, respectively, and the plurality of zeroed chunk table entries corresponding to the plurality of metadata areas, respectively.

10. Data storage equipment, comprising:

a set of host interfaces constructed and arranged to communicate with a set of host computers;

a set of physical storage drives; and

control circuitry coupled to the set of host interfaces and set of physical storage drives, the control circuitry being constructed and arranged to:

store a set of storage drive objects in main memory of the storage processing circuitry, each storage drive object among the set of storage drive objects including (i) a storage drive data area and (ii) a zeroed chunk table, the storage drive object representing a respective physical storage drive among the set of physical storage drives, the storage drive data area including an identifier that uniquely identifies the respective physical storage drive, the respective physical storage drive including (i) a data region and (ii) a metadata region, the data region being divided into a plurality of storage chunks, the metadata region including a plurality of metadata areas associated with the plurality of storage chunks, respectively, the plurality of metadata areas containing a plurality of status indications of the plurality of storage chunks, respectively, the zeroed chunk table including a plurality of zeroed chunk table entries corresponding to the plurality of metadata areas, respectively;

mark one or more of the plurality of status indications contained in the plurality of metadata areas to indicate that one or more of the respective storage chunks must be initialized to zero before use;

having marked the one or more status indications contained in the plurality of metadata areas, mark one or more of the plurality of zeroed chunk table entries corresponding to the respective metadata areas containing the one or more marked status indications;

receive input/output (I/O) requests from the set of host computers through the set of host interfaces, and

perform I/O tasks in response to the I/O requests, the I/O tasks including zero on demand (ZOD) operations pertaining to the respective storage chunks, the ZOD operations including:

making determinations as to whether any of the respective storage chunks must be initialized to zero before use by identifying the marked zeroed chunk table entries corresponding to the respective metadata areas containing the one or more marked status indications;

having identified the marked zeroed chunk table entries, performing the ZOD operations on the one or more respective storage chunks indicated by the marked status indications as requiring initialization to zero before use; and

having performed the ZOD operations on the one or more respective storage chunks, (i) unmarking the marked zeroed chunk table entries included in the zeroed chunk table, and (ii) unmarking the marked status indications contained in the plurality of metadata areas included in the metadata region of the respective physical storage drive.

11. Data storage equipment as in claim 10 wherein the control circuitry is further constructed and arranged to:

receive a bind command for a logical unit of storage (LUN),

in response to the bind command and prior to receiving the I/O requests from the set of host computers, mark the one or more status indications contained in the plurality of metadata areas to indicate that one or more non-zeroed storage chunks of the LUN must be initialized to zero, and

having marked the one or more zeroed chunk table entries corresponding to the respective metadata areas containing the one or more marked status indications, direct a background service to initialize to zero the non-zeroed storage chunks of the LUN based on the zeroed chunk table.

12. Data storage equipment as in claim 11 wherein the control circuitry, when performing the I/O tasks in response to the I/O requests, is constructed and arranged to:

receive an I/O request to access the LUN from a host computer, the I/O request identifying a storage chunk on a particular physical storage drive of the set of physical storage drives,

access a particular storage drive object representing the particular physical storage drive to determine, from the zeroed chunk table of the particular storage drive object, whether the storage chunk on the particular physical storage drive has been initialized to zero, and

only after the storage chunk on the particular physical storage drive has been initialized to zero, access the storage chunk on the particular physical storage drive in accordance with the I/O request.

13. Data storage equipment as in claim 10 wherein the control circuitry is further constructed and arranged to:

maintain synchronization between the plurality of metadata areas associated with the plurality of storage chunks, respectively, and the plurality of zeroed chunk table entries corresponding to the plurality of metadata areas, respectively.

14. A computer program product having a non-transitory computer readable medium which stores a set of instructions to process input/output (I/O) requests, the set of instructions, when carried out by computerized circuitry, causing the computerized circuitry to perform a method of:

storing a set of storage drive objects in main memory of the storage processing circuitry, each storage drive object among the set of storage drive objects including (i) a storage drive data area; and (ii) a zeroed chunk table, the storage drive object representing a respective physical storage drive among the set of physical storage drives, the storage drive data area including an identifier that uniquely identifies the respective physical storage drive, the respective physical storage drive including (i) a data region and (ii) metadata region, the data region being divided into a plurality of storage chunks, the metadata region including a plurality of metadata areas associated with the plurality of storage chunks, respectively, the plurality of metadata areas containing a plurality of status indications of the plurality of storage chunks, respectively, the zeroed chunk table including a plurality of zeroed chunk table entries corresponding to the plurality of metadata areas, respectively;

marking one or more of the plurality of status indications contained in the plurality of metadata areas to indicate that one or more of the respective storage chunks must be initialized to zero before use;

having marked the one or more status indications contained in the plurality of metadata areas, marking one or more of the plurality of zeroed chunk table entries corresponding to the respective metadata areas containing the one or more marked status indications;

receiving I/O requests from the set of host computers; and

performing I/O tasks in response to the received I/O requests, the I/O tasks including zero on demand (ZOD) operations pertaining to the respective storage chunks, the performing of the ZOD operations including:

making determinations as to whether any of the respective storage chunks must be initialized to zero before use by identifying the marked zeroed chunk table entries corresponding to the respective metadata areas containing the one or more marked status indications;

having identified the marked zeroed chunk table entries, performing the ZOD operations on the one or more respective storage chunks indicated by the marked status indications as requiring initialization to zero before use; and

having performed the ZOD operations on the one or more respective storage chunks, (i) unmarking the marked zeroed chunk table entries included in the zeroed chunk table, and (ii) unmarking the marked status indications contained in the plurality of metadata areas included in the metadata region of the respective physical storage drive.

15. A computer program product as in claim 14 wherein the marking of the one or more status indications contained in the plurality of metadata areas is performed in response to receiving a bind command for a logical unit of storage (LUN), and wherein the method further comprises:

having marked the one or more zeroed chunk table entries corresponding to the respective metadata areas containing the one or more marked status indications, directing a background service to initialize to zero the non-zeroed storage chunks of the LUN based on the zeroed chunk table.

16. A computer program product 15 wherein performing the I/O tasks in response to the I/O requests includes:

performing read and write operations in response to the I/O requests while the background service initializes to zero the non-zeroed storage chunks of the LUN based on the zeroed chunk table, the read and write operations being performed within the data storage equipment as higher priority operations relative to the background service.

17. A computer program product 16 wherein performing the read and write operations in response to the I/O requests includes:

receiving an I/O request to access the LUN from a host computer, the I/O request identifying a storage chunk on a particular physical storage drive of the set of physical storage drives,

accessing a particular storage drive object representing the particular physical storage drive to determine, from the zeroed chunk table of the particular storage drive object, whether the storage chunk on the particular physical storage drive has been initialized to zero, and

only after the storage chunk on the particular physical storage drive has been initialized to zero, accessing the storage chunk on the particular physical storage drive in accordance with the I/O request.

Assignments (10)
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 (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 5, 2016
From: CHEN, LILI; PUHOV, PETER; MAI, KIMCHI
To: EMC CORPORATION
Reel/Frame 037671/0484 →
Cited By (46)
US 12,197,390 US 12,204,413 US 12,204,768 US 12,204,788 US 12,212,624 US 12,216,903 US 12,229,402 US 12,229,437 US 12,235,743 US 12,236,117 US 12,242,425 US 12,253,922 US 12,253,941 US 12,271,264 US 12,271,359 US 12,277,106 US 12,282,799 US 12,293,111 US 12,314,131 US 12,314,163 US 12,314,170 US 12,314,183 US 12,340,107 US 12,341,848 US 12,366,972 US 12,373,289 US 12,373,340 US 12,379,854 US 12,393,340 US 12,393,353 US 12,430,053 US 12,430,059 US 12,439,544 US 12,475,041 US 12,481,442 US 12,487,920 US 12,511,239 US 12,524,309 US 12,547,317 US 12,561,093 US 12,572,421 US 12,619,469 US 12,682,949 US 12,687,973 US 12,699,512 US 12,717,709