IP Library Granted Patent US 10,552,049
Granted Patent B2
US 10,552,049 · App. 15/386,166 · Granted Feb 4, 2020

Method and apparatus for managing data access

Inventors: Ruiyong Jia (Beijing, CN); Jian Gao (Beijing, CN); Lifeng Yang (Beijing, CN); Xu Xinlei (Beijing, CN); Jibing Dong (Beijing, CN)
Assignee: EMC IP Holding Company LLC
G06F3/0611G06F3/064G06F3/0622G06F3/0647G06F3/0659G06F3/0667G06F3/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 10,552,049
App. No.
15/386,166
Granted
Feb 4, 2020
Kind
B2
Abstract

A method and apparatus for managing data access comprises: receiving a write request for writing data into one or more storage blocks; in response to determining that a storage block is unavailable, writing a part of the data into a virtual storage block corresponding to the storage block, the part of the data being required to be written into the storage block; and in response to determining that the storage block becomes available, copying the part of the data from the virtual storage block to the storage block. The embodiments of the present disclosure further disclose a corresponding apparatus. By introducing the virtual storage blocks in the data access, the embodiments of the present disclosure can realize the parallel data transfers of a plurality of writes and thus greatly improve the data writing performance of the system.

Claims (77)

1. A method of managing data access from a data storage system, comprising:

receiving a write request for writing data into one or more storage blocks represented within a data cache;

in response to determining that a storage block in the data cache is unavailable on account of the storage block being locked by another write of other data to the storage block, writing a part of the data into a virtual storage block in the data cache while the storage block remains unavailable, the virtual storage block corresponding to the storage block and composed of a set of uniformly-sized cache pages of the data cache, the part of the data being required to be written into the storage block; and

in response to determining that the storage block becomes available, copying the part of the data from the virtual storage block to the storage block,

the method thereby effecting a parallel write of data directed to the storage block by writing to the virtual storage block,

wherein the method further comprises:

receiving a first write request specifying a write of first data to a first range, the first range represented in the data cache by a first ordered series of storage blocks;

receiving a second write request specifying a write of second data to a second range, the second range represented in the data cache by a second ordered series of storage blocks, the first ordered series of storage blocks at least partially overlapping the second ordered series of storage blocks and forming an ordered series of shared storage blocks;

initiating processing in the data cache of the first write request and the second write request; and

in response to encountering a locked storage block in the ordered series of shared storage blocks while processing the second write request, (i)creating a plurality of virtual storage blocks, including a virtual storage block for the locked storage block and for each storage block that follows it in the ordered series of shared storage blocks, and (ii) continuing to process the second write request by writing portions of the second data to the plurality of virtual storage blocks.

2. The method of claim 1 , further comprising:

obtaining, based on the write request, the one or more storage blocks in an order.

3. The method of claim 2 , wherein the order includes an ascending or descending order of logical block addresses of the one or more storage blocks.

4. The method of claim 2 , wherein the writing a part of the data into a virtual storage block corresponding to the storage block comprises:

determining if each of the one or more storage blocks is available;

in response to determining that a first storage block of the one or more storage blocks is available, locking the first storage block;

in response to determining that a second storage block of the one or more storage blocks is unavailable, creating a first virtual storage block corresponding to the second storage block;

creating a second virtual storage block corresponding to a third storage block of the one or more storage blocks, a following part of the data being required to be written into the third storage block; and

writing the data into the first storage block and the first and second virtual storage blocks respectively.

5. The method of claim 1 , wherein the copying the part of the data from the virtual storage block to the storage block comprises:

locking the storage block for copying the part of the data from the virtual storage block to the storage block.

6. The method of claim 1 , further comprising:

in response to the data being written into the one or more storage blocks, unlocking the one or more storage blocks.

7. The method of claim 1 , wherein each of the one or more storage blocks includes a same number of logical pages.

8. The method of claim 7 , wherein the writing a part of the data into a virtual storage block corresponding to the storage block comprises:

creating the virtual storage block corresponding to the storage block;

allocating, from a memory pool, a plurality of logical pages corresponding to a size of the virtual storage block; and

writing the part of the data into the allocated plurality of logical pages.

9. The method of claim 1 , wherein the copying the part of the data from the virtual storage block to the storage block comprises:

redirecting the virtual storage block to the storage block; or

merging the part of the data stored in the virtual storage block into the storage block.

10. An apparatus for managing data access to a data storage system, comprising:

a cache memory;

a disk array;

a receiving unit configured to receive a write request for writing data into one or more storage blocks of the cache memory configured to perform data storage exchange with the disk array; and

a data access control unit configured to:

in response to determining that a storage block in the cache memory is unavailable on account of the storage block being locked by another write of other data to the storage block, write a part of the data into a virtual storage block corresponding to the storage block and composed of a set of uniformly-sized cache pages of the data cache, the part of the data being required to be written into the storage block, and

in response to determining that the storage block becomes available, copy the part of the data from the virtual storage block to the storage block,

the data access control unit thereby effecting a parallel write of data directed to the storage block by writing to the virtual storage block,

the data access control unit further configured to;

receive a first write request specifying a write of first data to a first range, the first range represented in the data cache by a first ordered series of storage blocks;

receive a second write request specifying a write of second data to a second range, the second range represented in the data cache by a second ordered series of storage blocks, the first ordered series of storage blocks at least partially overlapping the second ordered series of storage blocks and forming an ordered series of shared storage blocks;

initiate processing in the data cache of the first write request and the second write request; and

in response to encountering a locked storage block in the ordered series of shared storage blocks while processing the second write request, (i) create a plurality of virtual storage blocks, including a virtual storage block for the locked storage block and for each storage block that follows it in the ordered series of shared storage, and (ii) continue to process the second write request by writing portions of the second data to the plurality of virtual storage blocks.

11. The apparatus of claim 10 , wherein the data access control unit is further configured to:

obtain, based on the write request, the one or more storage blocks in an order.

12. The apparatus of claim 11 , wherein the order includes an ascending or descending order of logical block addresses of the one or more storage blocks.

13. The apparatus of claim 11 , wherein the data access control unit is further configured to:

determine if each of the one or more storage blocks is available;

in response to determining that a first storage block of the one or more storage blocks is available, lock the first storage block;

in response to determining that a second storage block of the one or more storage blocks is unavailable, create a first virtual storage block corresponding to the second storage block;

create a second virtual storage block corresponding to a third storage block of the one or more storage blocks, a following part of the data being required to be written into the third storage block; and

write the data into the first storage block and the first and second virtual storage blocks respectively.

14. The apparatus of claim 10 , wherein the data access control unit is further configured to, in response to determining that the storage block becomes available, lock the storage block for copying the part of the data from the virtual storage block to the storage block.

15. The apparatus of claim 10 , wherein the data access control unit is further configured to:

in response to the data being written into the one or more storage blocks, unlock the one or more storage blocks.

16. The apparatus of claim 10 , wherein each of the one or more storage blocks includes a same number of logical pages.

17. The apparatus of claim 16 , wherein the data access control unit is further configured to:

create the virtual storage block corresponding to the storage block;

allocate, from a memory pool, a plurality of logical pages corresponding to a size of the virtual storage block; and

write the part of the data into the allocated plurality of logical pages.

18. The apparatus of claim 10 , wherein the data access control unit is further configured to:

redirect the virtual storage block to the storage block; or

merge the part of the data stored in the virtual storage block into the storage block.

19. A computer program product for managing data access to a data storage system, the computer program product comprising:

a non-transitory computer readable medium encoded with computer-executable code, the code configured to enable the execution of:

receiving a write request for writing data into one or more storage blocks represented within a data cache;

in response to determining that a storage block is unavailable on account of the storage block being locked by another write of other data to the storage block, writing a part of the data into a virtual storage block corresponding to the storage block and composed of a set of uniformly-sized cache pages of the data cache, the part of the data being required to be written into the storage block; and

in response to determining that the storage block becomes available, copying the part of the data from the virtual storage block to the storage block,

the code thereby effecting a parallel write of data directed to the storage block by writing to the virtual storage block,

wherein the code is further configured to enable the execution of:

receive a first write request specifying a write of first data to a first range, the first range represented in the data cache by a first ordered series of storage blocks;

receiving a second write request specifying a write of second data to a second range, the second range represented in the data cache by a second ordered series of storage blocks, the first ordered series of storage blocks at least partially overlapping the second ordered series of storage blocks and forming an ordered series of shared storage blocks;

initiating processing in the data cache of the first write request and the second write request; and

in response to encountering a locked storage block in the ordered series of shared storage blocks while processing the second write request, (i) creating a plurality storage blocks, including a virtual storage block for the locked storage block and for each storage that follows it in the ordered series of shared storage blocks, and (ii) continuing to process the second write request by writing portions of the second data to the plurality of virtual storage blocks.

20. The computer program product of claim 19 , wherein the code is further configured to enable the execution of:

obtaining, based on the write request, the one or more storage blocks in an order.

Assignments (7)
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 (043775/0082) 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 060958/0468 →
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 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Sep 6, 2017
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 043775/0082 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Sep 6, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 043772/0750 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 26, 2016
From: JIA, RUIYONG; GAO, JIAN; YANG, LIFENG; XU, XINLEI; DONG, JIBING
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040765/0871 →
Priority Claims (1)
CN 2015 1 1020927 · Dec 29, 2015 · national
Continuity (1)
Related Publication 20170185318A1 · Jun 29, 2017