IP Library Granted Patent US 9,697,086
Granted Patent B2
US 9,697,086 · App. 12/828,213 · Granted Jul 4, 2017

Data access during data recovery

Inventors: Michael John Dutch (Saratoga, CA); Christopher Hercules Claudatos (San Jose, CA); Mandavilli Navneeth Rao (Santa Clara, CA)
Assignee: EMC IP Holding Company LLC
G06F11/1448G06F11/1466G06F11/1469G06F13/26G06F13/385
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 9,697,086
App. No.
12/828,213
Granted
Jul 4, 2017
Kind
B2
Abstract

A method, article of manufacture, and apparatus for accessing data during data recovery. In some embodiments, this includes sending an I/O request from an application to an object, wherein the object is being recovered, establishing an I/O intercept, intercepting the application's I/O request with the I/O intercept, and redirecting the I/O request based on the status of the object's sub-objects.

Claims (48)

1. A method for accessing data during data recovery, comprising:

intercepting, at an I/O intercept, an application's I/O request to access an object that is being recovered as part of a data recovery operation currently being performed on a storage device, wherein the object includes one or more sub-objects;

in response to intercepting the I/O request, determining a recovery status for a first sub-object in relation to the data recovery operation, wherein the determining the recovery status of the first sub-object includes determining whether the first sub-object is available via local I/O, remote I/O, or recovery on access;

determining, based at least in part on the determined recovery status of the first sub-object, an access method for the application to access the object, wherein determining the access method includes determining whether to change a priority of the first sub-object, and determining whether the first sub-object is to be accessed via local I/O, remote I/O, or recovery on access based at least in part on the recovery status for the first sub-object, and wherein the I/O intercept is configured to apply the determined access method and transparently redirect the application's I/O request, wherein the determining of the access method is performed in connection with the recovery operation currently being performed on the storage device;

in the event that the first sub-object is determined to be available via local I/O and the application has successfully performed I/O on the local copy of the first sub-object, abolishing the I/O intercept with regard to the local copy of the first sub-object after the application has successfully performed I/O on the local copy of the first sub-object, wherein in the event that the I/O intercept is abolished, the application directly accesses the local copy of the first sub-object; and

in the event that the first sub-object is determined to be available via local I/O and the application has not performed I/O on the local copy of the first sub-object, rerouting, by the I/O intercept, the application's I/O request to access the object to a recovery service that manages recovery of the object.

2. The method as recited in claim 1 , wherein in the event that the first sub-object is determined to be available via local I/O, the access method for the application to access the object includes redirecting the I/O request to a local copy of the first sub-object.

3. The method as recited in claim 1 , wherein in the event that the first sub-object is determined to be available via remote I/O, the access method for the application to access the object includes redirecting the I/O request to a remote copy of the first sub-object.

4. The method as recited in claim 3 , wherein the first sub-object is available via remote access and the I/O request is redirected to a remote copy of the first sub-object based at least in part on a pinned status of at least the first sub-object, and wherein pinning at least the first sub-object restricts access to the first sub-object to remote I/O.

5. The method as recited in claim 3 , further comprising spinning up at least the first sub-object on a system and establishing a connection between the application and the spun-up first sub-object.

6. The method as recited in claim 5 , wherein the system comprises a virtual machine mounted on top of a physical machine that is connected by a comparatively high bandwidth connection to a storage container storing the first sub-object.

7. The method as recited in claim 1 , wherein in the event that the first sub-object is determined to be available via recovery on access, the access method for the application to access the object includes holding the I/O request until the first sub-object has been recovered.

8. The method as recited in claim 1 , wherein the object is segmented into the one or more sub-objects based at least in part on one or more of the following: a predefined segment interval, an access pattern associated with the object, metadata, one or more policies, and one or more user commands.

9. The method as recited in claim 1 , wherein each of at least a subset of the one or more sub-objects is assigned a recovery priority based at least in part on one or more of the following: an access pattern associated with the object, metadata, one or more polices, and one or more user commands.

10. The method of claim 9 , wherein the recovery priority corresponding to at least one of the one or more sub-objects is dynamically changed during the data recovery operation.

11. The method of claim 10 , wherein the recovery priority corresponding to the at least one of the one or more sub-objects is dynamically changed during the data recovery operation based on one or more access requests for the at least one of the one or more sub-objects.

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

in the event that the first sub-object is determined to be available via remote I/O, the access method includes accessing the first sub-object is to be accessed via remote I/O, and the application has successfully performed I/O on the remote copy of the first sub-object, preserving the I/O intercept with regard to the remote copy of the first sub-object.

13. The method as recited in claim 1 , wherein each of at least a subset of the one or more sub-objects is assigned a recovery priority, wherein the recovery priority is stored in metadata or a header associated with the subset of the one or more sub-objects.

14. The method of claim 13 , wherein the recovery priority for at least one of the one or more sub-objects is updated during the recovery operation based at least in part on an access request for accessing the at least one of the one or more sub-objects.

15. A system for accessing data during data recovery, comprising a storage device and a processor configured to:

intercept, at an I/O intercept, an application's I/O request to access an object that is being recovered as part of a data recovery operation currently being performed on a storage device, wherein the object includes one or more sub-objects, and wherein the I/O intercept is transparent to the application;

in response to intercepting the I/O request, determine a recovery status for a first sub-object in relation to the data recovery operation, wherein the determining the recovery status of the first sub-object includes determining whether the first sub-object is available via local I/O, remote I/O, or recovery on access;

determine, based at least in part on the determined recovery status of the first sub-object, an access method for the application to access the object, wherein determining the access method includes determining whether to change a priority of the first sub-object, and determining whether the first sub-object is to be accessed via local I/O, remote I/O, or recovery on access based at least in part on the recovery status for the first sub-object, and wherein the I/O intercept is configured to apply the determined access method and transparently redirect the application's I/O request, wherein determining the access method is performed in connection with the recovery operation currently being performed on the storage device;

in the event that the first sub-object is determined to be available via local I/O and the application has successfully performed I/O on the local copy of the first sub-object, abolish the I/O intercept with regard to the local copy of the first sub-object after the application has successfully performed I/O on the local copy of the first sub-object, wherein in the event that the I/O intercept is abolished, the application directly accesses the local copy of the first sub-object; and

in the event that the first sub-object is determined to be available via local I/O and the application has not performed I/O on the local copy of the first sub-object, reroute, by the I/O intercept, the application's I/O request to access the object to a recovery service that manages recovery of the object.

16. The system as recited in claim 1 , wherein in the event that the first sub-object is determined to be available via local I/O, the access method for the application to access the object includes redirecting the I/O request to a local copy of the first sub-object.

17. The system as recited in claim 1 , wherein in the event that the first sub-object is determined to be available via remote I/O, the access method for the application to access the object includes redirecting the I/O request to a remote copy of the first sub-object.

18. The system as recited in claim 17 , wherein the first sub-object is available via remote access and the I/O request is redirected to a remote copy of the first sub-object based at least in part on a pinned status of at least the first sub-object, and wherein pinning at least the first sub-object restricts access to the first sub-object to remote I/O.

19. The system as recited in claim 1 , wherein in the event that the first sub-object is determined to be available via recovery on access, the access method for the application to access the object includes holding the I/O request until the first sub-object has been recovered.

20. The system as recited in claim 15 , wherein the object is segmented into the one or more sub-objects based at least in part on one or more of the following: a predefined segment interval, an access pattern associated with the object, metadata, one or more policies, and one or more user commands.

21. The system as recited in claim 15 , wherein each of at least a subset of the one or more sub-objects is assigned a recovery priority based at least in part on one or more of the following: an access pattern associated with the object, metadata, one or more polices, and one or more user commands.

22. The system as recited in claim 15 , further comprising spinning up at least the first sub-object on a system and establishing a connection between the application and the spun-up first sub-object.

23. The system as recited in claim 22 , wherein the system comprises a virtual machine mounted on top of a physical machine that is connected by a comparatively high bandwidth connection to a storage container storing the first sub-object.

24. A computer program product for accessing data during data recovery, comprising a non-transitory computer usable medium having machine readable code embodied therein for:

intercepting, at an I/O intercept, an application's I/O request to access an object that is being recovered as part of a data recovery operation currently being performed on a storage device, wherein the object includes one or more sub-objects, and wherein the I/O intercept is transparent to the application;

in response to intercepting the I/O request, determining a recovery status for a first sub-object in relation to the data recovery operation, wherein the determining the recovery status of the first sub-object includes determining whether the first sub-object is available via local I/O, remote I/O, or recovery on access;

determining, based at least in part on the determined recovery status of the first sub-object, an access method for the application to access the object, wherein determining the access method includes determining whether to change a priority of the first sub-object, and determining whether the first sub-object is to be accessed via local I/O, remote I/O, or recovery on access based at least in part on the recovery status for the first sub-object, and wherein the I/O intercept is configured to apply the determined access method and transparently redirect the application's I/O request, wherein the determining of the access method is performed in connection with the recovery operation currently being performed on the storage device; and

in the event that the first sub-object is determined to be available via local I/O and the application has successfully performed I/O on the local copy of the first sub-object, abolishing the I/O intercept with regard to the local copy of the first sub-object after the application has successfully performed I/O on the local copy of the first sub-object, wherein in the event that the I/O intercept is abolished, the application directly accesses the local copy of the first sub-object; and

in the event that the first sub-object is determined to be available via local I/O and the application has not performed I/O on the local copy of the first sub-object, rerouting, by the I/O intercept, the application's I/O request to access the object to a recovery service that manages recovery of the object.

25. The computer program product as recited in claim 24 , wherein in the event that the first sub-object is determined to be available via local I/O, the access method for the application to access the object includes redirecting the I/O request to a local copy of the first sub-object.

26. The computer program product as recited in claim 24 , wherein in the event that the first sub-object is determined to be available via remote I/O, the access method for the application to access the object includes redirecting the I/O request to a remote copy of the first sub-object.

27. The computer program product as recited in claim 26 , wherein the first sub-object is available via remote access and the I/O request is redirected to a remote copy of the first sub-object based at least in part on a pinned status of at least the first sub-object, and wherein pinning at least the first sub-object restricts access to the first sub-object to remote I/O.

28. The computer program product as recited in claim 24 , wherein in the event that the first sub-object is determined to be available via recovery on access, the access method for the application to access the object includes holding the I/O request until the first sub-object has been recovered.

29. The computer program product as recited in claim 24 , wherein the object is segmented into the one or more sub-objects based at least in part on one or more of the following: a predefined segment interval, an access pattern associated with the object, metadata, one or more policies, and one or more user commands.

30. The computer program product as recited in claim 24 , wherein each of at least a subset of the one or more sub-objects is assigned a recovery priority based at least in part on one or more of the following: an access pattern associated with the object, metadata, one or more polices, and one or more user commands.

31. The computer program product as recited in claim 24 , further comprising spinning up at least the first sub-object on a system and establishing a connection between the application and the spun-up first sub-object.

32. The computer program product as recited in claim 31 , wherein the system comprises a virtual machine mounted on top of a physical machine that is connected by a comparatively high bandwidth connection to a storage container storing the first sub -object.

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 27, 2010
From: DUTCH, MICHAEL JOHN; CLAUDATOS, CHRISTOPHER HERCULES; RAO, MANDAVILLI NAVNEETH
To: EMC CORPORATION
Reel/Frame 024750/0954 →
Continuity (1)
Related Publication 20120005379A1 · Jan 5, 2012