IP Library Granted Patent US 10,001,927
Granted Patent B1
US 10,001,927 · App. 14/501,455 · Granted Jun 19, 2018

Techniques for optimizing I/O operations

Inventors: Michael Trachtman (Arlington, MA); Brian Lake (Edmonton, CA)
Assignee: EMC IP Holding Company LLC
G06F3/061G06F3/0665G06F3/0688G06F3/0689G06F2212/1032
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,001,927
App. No.
14/501,455
Filed
Sep 30, 2014
Granted
Jun 19, 2018
Kind
B1
Art Unit
2131
USPC
711/103
Abstract

Described are techniques for processing I/O operations. A read operation is received that is directed to a first location of a logical device. Data stored at the first location of the logical device is replicated on a plurality of data storage systems. In accordance with one or more criteria, a set of at least one of the plurality of data storage systems is determined. The one or more criteria include information describing current configuration options of the plurality of data storage systems affecting I/O operation performance. The read operation is sent to each data storage system of the set.

Claims (52)

1. A method of processing I/O operations comprising:

receiving, at a storage appliance from a host, a plurality of read operations directed to a logical device having its data replicated on a plurality of data storage systems, wherein the storage appliance virtualizes storage resources of the plurality of data storage systems by presenting the storage resources to the host as a single pool of storage;

sending, by the storage appliance, the plurality of read operations to a first of the plurality of data storage systems;

detecting, by the storage appliance, that the plurality of read operations form a sequential read pattern of consecutive reads directed to consecutive logical addresses of the logical device;

identifying, by the storage appliance, a plurality of next sequential logical addresses of the sequential read pattern of the logical device;

receiving, at the storage appliance from the host, a sequence of subsequent reads directed to the next sequential logical addresses of the sequential read pattern of the logical device;

determining, in accordance with one or more criteria, a set of the plurality of data storage systems that are candidates to perform processing for the sequence of subsequent reads, wherein the one or more criteria include information describing current configuration options of the plurality of data storage systems affecting I/O operation performance, said one or more criteria including, for each of the plurality of data storage systems for which the storage appliance virtualizes storage resources, an indication regarding whether said each data storage system performs sequential read pattern detection and data prefetching for detected sequential read patterns, wherein the set includes the first data storage system and a second of the plurality of data storage systems, and wherein the criteria indicates that both the first data storage system and the second data storage system for which the storage appliance virtualizes storage resources perform sequential read pattern detection and data prefetching for detected sequential read patterns, wherein the first data storage system includes a first data cache used by the first data storage system and not used by the second data storage system, the second data storage system includes a second data cache used by the second data storage system and not used by the first data storage system, a first copy of the logical device is stored on physical devices of the first data storage system, and a second copy of the logical device is stored on physical devices of the second data storage system;

determining that the plurality of read operations were previously sent to the first data storage system and not sent to the second data storage system;

responsive to determining the plurality of read operations were previously sent to the first data storage system and not sent to the second data storage system, sending, by the storage appliance, the sequence of subsequent reads to the first data storage system but not the second data storage system; and

servicing, by the first data storage system, the sequence of subsequent reads using prefetched data stored in the first data cache.

2. The method of claim 1 , wherein the one or more criteria include an indication regarding whether each of the plurality of data storage systems performs data storage optimizations.

3. The method of claim 2 , wherein each data storage system in the set includes a plurality of storage tiers, each of the plurality of storage tiers having physical storage devices with performance characteristics that differ from other performance characteristics of other physical storage devices of other ones of the plurality of storage tiers, and wherein the data storage optimizations are performed on said each data storage system by a data storage optimizer of said each data storage system, and wherein the data storage optimizations include automatically relocating data portions among the plurality of storage tiers in accordance with an I/O workload associated with each of the data portions.

4. The method of claim 1 , wherein the current configuration options of the plurality of data storage systems described by the one or more criteria impact performance of I/O operations received subsequent to the plurality of read operations.

5. The method of claim 3 , wherein the logical device has a logical address space divided into a plurality of partitions and wherein the storage appliance performs first processing comprising:

collecting I/O workload information for each of the plurality of partitions regarding I/O operations having a target location in said each partition;

analyzing the I/O workload information for each of the plurality of partitions;

determining, in accordance with said analyzing, one or more of the plurality of partitions having a current I/O workload exceeding a specified threshold; and

sending a second plurality of read operations reading data from a location on the logical device located in a first of the one or more of the plurality of partitions to a same one of the plurality of data storage systems.

6. The method of claim 5 , wherein the specified threshold approximates a promotion threshold used by the data storage optimizer of the same one of the plurality of data storage systems to promote a data portion to a particular one of the plurality of storage tiers.

7. The method of claim 3 , further comprising:

sending one or more additional read operations to each of the first data storage system and the second data storage system, the first data storage system servicing the one or more additional read operations and returning requested read data, and wherein the second data storage system does not retrieve the requested read data from physical storage and does not return the requested read data, said second data storage system simulating one or more aspects of performing the one or more additional read operations, said one or more aspects including any of simulating cache contents and cache-related information to reflect having performed the one or more additional read operations and simulating generating updated I/O workload information to reflect having performed the one or more additional read operations, wherein the updated I/O workload information is used by the data storage optimizer of the second data storage system to determine placement of data portions on different ones of the plurality of storage tiers of the second data storage system.

8. The method of claim 3 , further comprising:

sending one or more additional read operations to each of the first data storage system and the second data storage system, each of the first data storage system and the second data storage system collecting I/O workload information for data portions of the logical device whereby the I/O workload information is used by the data storage optimizer of said each data storage system to locate data portions having highest I/O workload to a flash storage tier of the plurality of storage tiers of said each data storage system, at least some data portions of the logical device being located on the flash storage tier of said each data storage system, and wherein the method further includes:

detecting failure of one of the first and the second data storage systems; and

subsequent to the failure, sending all I/O operations directed to the logical device to the other of the first and the second data storage systems.

9. A system comprising:

a processor; and

a memory comprising code stored thereon that, when executed, performs a method of processing I/O operations comprising:

receiving, at a storage appliance from a host, a plurality of read operations directed to a logical device having its data replicated on a plurality of data storage systems, wherein the storage appliance virtualizes storage resources of the plurality of data storage systems by presenting the storage resources to the host as a single pool of storage;

sending, by the storage appliance, the plurality of read operations to a first of the plurality of data storage systems;

detecting, by the storage appliance, that the plurality of read operations form a sequential read pattern of consecutive reads directed to consecutive logical addresses of the logical device;

identifying, by the storage appliance, a plurality of next sequential logical addresses of the sequential read pattern of the logical device;

receiving, at the storage appliance from the host, a sequence of subsequent reads directed to the next sequential logical addresses of the sequential read pattern of the logical device;

determining, in accordance with one or more criteria, a set of the plurality of data storage systems that are candidates to perform processing for the sequence of subsequent reads, wherein the one or more criteria include information describing current configuration options of the plurality of data storage systems affecting I/O operation performance, said one or more criteria including, for each of the plurality of data storage systems for which the storage appliance virtualizes storage resources, an indication regarding whether said each data storage system performs sequential read pattern detection and data prefetching for detected sequential read patterns, wherein the set includes the first data storage system and a second of the plurality of data storage systems, and wherein the criteria indicates that both the first data storage system and the second data storage system for which the storage appliance virtualizes storage resources perform sequential read pattern detection and data prefetching for detected sequential read patterns, wherein the first data storage system includes a first data cache used by the first data storage system and not used by the second data storage system, the second data storage system includes a second data cache used by the second data storage system and not used by the first data storage system, a first copy of the logical device is stored on physical devices of the first data storage system, and a second copy of the logical device is stored on physical devices of the second data storage system;

determining that the plurality of read operations were previously sent to the first data storage system and not sent to the second data storage system;

responsive to determining the plurality of read operations were previously sent to the first data storage system and not sent to the second data storage system, sending, by the storage appliance, the sequence of subsequent reads to the first data storage system but not the second data storage system; and

servicing, by the first data storage system, the sequence of subsequent reads using prefetched data stored in the first data cache.

10. A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of processing I/O operations comprising:

receiving, at a storage appliance from a host, a plurality of read operations directed to a logical device having its data replicated on a plurality of data storage systems, wherein the storage appliance virtualizes storage resources of the plurality of data storage systems by presenting the storage resources to the host as a single pool of storage;

sending, by the storage appliance, the plurality of read operations to a first of the plurality of data storage systems;

detecting, by the storage appliance, that the plurality of read operations form a sequential read pattern of consecutive reads directed to consecutive logical addresses of the logical device;

identifying, by the storage appliance, a plurality of next sequential logical addresses of the sequential read pattern of the logical device;

receiving, at the storage appliance from the host, a sequence of subsequent reads directed to the next sequential logical addresses of the sequential read pattern of the logical device;

determining, in accordance with one or more criteria, a set of the plurality of data storage systems that are candidates to perform processing for the sequence of subsequent reads, wherein the one or more criteria include information describing current configuration options of the plurality of data storage systems affecting I/O operation performance, said one or more criteria including, for each of the plurality of data storage systems for which the storage appliance virtualizes storage resources, an indication regarding whether said each data storage system performs sequential read pattern detection and data prefetching for detected sequential read patterns, wherein the set includes the first data storage system and a second of the plurality of data storage systems, and wherein the criteria indicates that both the first data storage system and the second data storage system for which the storage appliance virtualizes storage resources perform sequential read pattern detection and data prefetching for detected sequential read patterns, wherein the first data storage system includes a first data cache used by the first data storage system and not used by the second data storage system, the second data storage system includes a second data cache used by the second data storage system and not used by the first data storage system, a first copy of the logical device is stored on physical devices of the first data storage system, and a second copy of the logical device is stored on physical devices of the second data storage system;

determining that the plurality of read operations were previously sent to the first data storage system and not sent to the second data storage system;

responsive to determining the plurality of read operations were previously sent to the first data storage system and not sent to the second data storage system, sending, by the storage appliance, the sequence of subsequent reads to the first data storage system but not the second data storage system; and

servicing, by the first data storage system, the sequence of subsequent reads using prefetched data stored in the first data cache.

11. The non-transitory computer readable medium of claim 10 , wherein the one or more criteria include an indication regarding whether each of the plurality of data storage systems performs data storage optimizations.

12. The non-transitory computer readable medium of claim 11 , wherein each data storage system in the set includes a plurality of storage tiers, each of the plurality of storage tiers having physical storage devices with performance characteristics that differ from other performance characteristics of other physical storage devices of other ones of the plurality of storage tiers, and wherein the data storage optimizations include automatically relocating data portions among the plurality of storage tiers in accordance with an I/O workload associated with each of the data portions.

13. The method of claim 1 , wherein the one or more criteria include, for each of the plurality of data storage systems, a data caching characteristic denoting a data cache eviction technique utilized by a data cache of said each data storage system, and a value denoting an amount of time a cached data item is expected to remain in a data cache of said each data storage system unless subsequently referenced during the amount of time.

14. The method of claim 1 , wherein the method includes:

performing processing on the first data storage system to recognize the sequential read pattern of the logical device and, prior to processing the sequence of subsequent reads, prefetch data of the next sequential logical addresses of the sequential read pattern of the logical device.

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 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 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 Jul 17, 2015
From: TRACHTMAN, MICHAEL; LAKE, BRIAN
To: EMC CORPORATION
Reel/Frame 036124/0902 →
Cited By (5)
US 12,443,533 US 12,475,045 US 12,625,647 US 12,656,946 US 12,670,100