IP Library Granted Patent US 11,113,247
Granted Patent B1
US 11,113,247 · App. 15/150,649 · Granted Sep 7, 2021

Routing I/O requests to improve read/write concurrency

Inventors: Yingsong Jia (Beijing, CN); Xiangrui Liu (Beijing, CN); Hong Yu Jia (Beijing, CN); Shengzhao Li (Shanghai, CN)
Assignee: Veritas Technologies LLC
G06F16/1767G06F16/122G06F16/1748G06F16/182
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,113,247
App. No.
15/150,649
Filed
May 10, 2016
Granted
Sep 7, 2021
Kind
B1
Examiner
LE, MIRANDA
Art Unit
2153
USPC
707/692
Abstract

Systems, apparatuses, methods, and computer readable mediums for implementing an I/O router to route requests based on characteristics of the requests. The I/O router may receive requests targeting a single file, and the I/O router may route requests to multiple extent maps based on characteristics of the requests. For example, requests of a first size may be mapped to a first extent map, requests of a second size may be mapped to a second extent map, requests of a third size may be mapped to a third extent map, and so on. Additionally, the system may utilize different deduplication policies for the different types of requests which are mapped to different extent maps.

Claims (70)

1. A system comprising:

a memory; and

one or more processors coupled to the memory; and

circuitry, wherein the circuitry is configured to:

receive a plurality of requests targeting a single file stored in an extent-based file system;

identify a plurality of extent maps that correspond to the single file;

determine which extent map of the plurality of extent maps to use for routing each of the plurality of requests, based on one or more characteristics of each of the plurality of requests;

route a given request of the plurality of requests to a first extent map, responsive to determining a size of the given request is greater than a first threshold;

route the given request to a second extent map different from the first extent map responsive to determining a size of the given request is less than the first threshold;

access the first extent map as an initial map used to identify first physical storage locations storing actual data corresponding to the first extent; and

access the second extent map, simultaneous with the access of the first extent map, as an initial map used to identify second physical storage locations storing actual data corresponding to the second extent.

2. The system as recited in claim 1 , wherein the circuitry is further configured to:

route a first request of the plurality of requests to the first extent map based on one or more characteristics of the first request; and

route a second request of the plurality of requests to the second extent map based on one or more characteristics of the second request, wherein the second extent map is different from the first extent map.

3. The system as recited in claim 2 , wherein the circuitry is configured to:

utilize a first deduplication policy for the first request routed to the first extent map targeting the single file; and

utilize a second deduplication policy for the second request routed to the second extent map targeting the single file, wherein the second deduplication policy is different from the first deduplication policy.

4. The system as recited in claim 1 , wherein the one or more characteristics comprise a size of a given request, and wherein the circuitry is configured to:

determine a size of each of at least two requests;

determine which extent map of the plurality of extent maps that correspond to the single file to use for routing the at least two requests, based at least in part on a size of each of the at least two requests; and

concurrently route the at least two requests to the single file using at least two extent maps of the plurality of extent maps.

5. The system as recited in claim 1 , wherein the circuitry is configured to route the given request to the second extent map in further response to determining a size of the given request is greater than or equal to a second threshold, and the circuitry is further configured to

route the given request to a third extent map different from the first extent map and the second extent map responsive to determining a size of the given request is less than the second threshold.

6. The system as recited in claim 1 , wherein the circuitry is configured to access one or more of the plurality of extent maps as an only map between an extent of a plurality of extents of the single file and physical storage locations storing actual data of the extent.

7. The system as recited in claim 1 , wherein the circuitry is configured to receive the plurality of requests from a software application, and wherein the software application is a database application.

8. A method comprising:

receiving a plurality of requests targeting a single file stored in an extent-based file system;

identifying a plurality of extent maps that correspond to the single file;

determining which extent map of the plurality of extent maps to use for routing each of the plurality of requests;

routing a given request of the plurality of requests to a first extent map, responsive to determining a size of the given request is greater than a first threshold;

routing the given request to a second extent map different from the first extent map responsive to determining a size of the given request is less than the first threshold;

accessing the first extent map as an initial map used to identify first physical storage locations storing actual data corresponding to the first extent; and

accessing the second extent map, simultaneous with the access of the first extent map, as an initial map used to identify second physical storage locations storing actual data corresponding to the second extent.

9. The method as recited in claim 8 , further comprising:

routing a first request of the plurality of requests to the first extent map based on one or more characteristics of the first request; and

routing a second request of the plurality of requests to the second extent map based on one or more characteristics of the second request, wherein the second extent map is different from the first extent map.

10. The method as recited in claim 9 , further comprising:

utilizing a first deduplication policy for the first request routed to the first extent map targeting the single file; and

utilizing a second deduplication policy for the second request routed to the second extent map targeting the single file, wherein the second deduplication policy is different from the first deduplication policy.

11. The method as recited in claim 8 , wherein the one or more characteristics comprise a size of a given request, and wherein the method comprises:

determining a size of each of at least two requests;

determining which extent map of the plurality of extent maps that correspond to the single file to use for routing the at least two requests, based at least in part on a size of each of the at least two requests; and

concurrently routing the at least two requests to the single file using at least two extent maps of the plurality of extent maps.

12. The method as recited in claim 8 , further comprising:

routing the given request to the second extent map in further response to determining a size of the given request is greater than or equal to a second threshold; and

routing the given request to a third extent map different from the first extent map and the second extent map responsive to determining a size of the given request is less than the second threshold.

13. The method as recited in claim 8 , further comprising accessing one or more of the plurality of extent maps as an only map between an extent of a plurality of extents of the single file and physical storage locations storing actual data of the extent.

14. The method as recited in claim 8 , further comprising receiving the plurality of requests from a software application, and wherein the software application is a database application.

15. A non-transitory computer readable storage medium storing program instructions, wherein the program instructions are executable by a processor to:

receive a plurality of requests targeting a single file stored in an extent-based file system;

identify a plurality of extent maps that correspond to the single file;

determine which extent map of the plurality of extent maps to use for routing each of the plurality of requests, based on one or more characteristics of each of the plurality of requests;

route a given request of the plurality of requests to a first extent map, responsive to determining a size of the given request is greater than a first threshold;

route the given request to a second extent map different from the first extent map responsive to determining a size of the given request is less than the first threshold;

access the first extent map as an initial map used to identify first physical storage locations storing actual data corresponding to the first extent; and

access the second extent map, simultaneous with the access of the first extent map, as an initial map used to identify second physical storage locations storing actual data corresponding to the second extent.

16. The non-transitory computer readable storage medium as recited in claim 15 , wherein the program instructions are further executable by a processor to:

route a first request of the plurality of requests to the first extent map based on one or more characteristics of the first request; and

route a second request of the plurality of requests to the second extent map based on one or more characteristics of the second request, wherein the second extent map is different from the first extent map.

17. The non-transitory computer readable storage medium as recited in claim 16 , wherein the program instructions are further executable by a processor to:

utilize a first deduplication policy for the first request routed to the first extent map targeting the single file; and

utilize a second deduplication policy for the second request routed to the second extent map targeting the single file, wherein the second deduplication policy is different from the first deduplication policy.

18. The non-transitory computer readable storage medium as recited in claim 15 , wherein the one or more characteristics comprise a size of a given request, and wherein the program instructions are further executable by a processor to:

determine a size of each of at least two requests;

determine which extent map of the plurality of extent maps that correspond to the single file to use for routing the at least two requests, based at least in part on a size of each of the at least two requests; and

concurrently route the at least two requests to the single file using at least two extent maps of the plurality of extent maps.

19. The non-transitory computer readable storage medium as recited in claim 15 , wherein the program instructions are further executable by a processor to:

route the given request to the second extent map in further response to determining a size of the given request is greater than or equal to a second threshold; and

route the given request to a third extent map different from the first extent map and the second extent map responsive to determining a size of the given request is less than the second threshold.

20. The non-transitory computer readable storage medium as recited in claim 15 , wherein the program instructions are further executable by a processor to access one or more of the plurality of extent maps as an only map between an extent of a plurality of extents of the single file and physical storage locations storing actual data of the extent.

Assignments (10)
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069632/0613 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 052426/0001 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0565 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Apr 16, 2020
From: VERITAS TECHNOLOGIES, LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 052426/0001 →
PATENT SECURITY AGREEMENT Recorded Nov 23, 2016
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 040679/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 10, 2016
From: JIA, YINGSONG; LIU, XIANGRUI; JIA, HONG YU; LI, SHENGZHAO
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038532/0520 →
Cited By (1)
US 12,517,872