IP Library Granted Patent US 8,954,780
Granted Patent B1
US 8,954,780 · App. 13/650,029 · Granted Feb 10, 2015

Systems and methods for transferring input/output operations within computer clusters

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 8,954,780
App. No.
13/650,029
Granted
Feb 10, 2015
Kind
B1
Abstract

A computer-implemented method for transferring input/output operations within computer clusters may include (1) identifying a computer cluster that includes (i) a plurality of nodes configured to facilitate access to a plurality of physical storage devices and (ii) at least one computing object that represents data stored on the physical storage devices, (2) detecting at least one failure that prevents at least one node within the computer cluster from performing at least one input/output operation on the computing object that represents the data stored on the physical storage devices, (3) identifying at least one other node within the computer cluster that is able to perform the input/output operation on the computing object, and then (4) directing the other node within the computer cluster to perform the input/output operation on the computing object. Various other methods, systems, and computer-readable media are also disclosed.

Claims (89)

1. A computer-implemented method for transferring input/output operations within computer clusters, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

identifying a computer cluster that comprises:

a plurality of nodes configured to facilitate access to a plurality of physical storage devices;

at least one computing object that represents data stored on the physical storage devices;

detecting at least one failure that prevents at least one node within the computer cluster from performing at least one input/output operation on at least a portion of the computing object that represents the data stored on the physical storage devices, wherein detecting the failure comprises determining that the node is unable to perform the input/output operation on the portion of the computing object by determining that the node within the computer cluster is:

able to access at least one source object that comprises input/output data to be written to the portion of the computing object as part of the input/output operation;

unable to access the portion of the computing object;

in response to detecting the failure:

identifying at least one other node within the computer cluster that is able to perform the input/output operation on the portion of computing object by determining that the other node within the computer cluster is able to access the portion of the computing object;

directing the node within the computer cluster to:

obtain, from the source object, a single instance of input/output data that facilitates performing the input/output operation on the portion of the computing object;

transfer a single instance of the input/output data to the other node instead of transferring a different instance of input/output data for each physical storage device storing the data represented by the computing object;

enable the other node to use the transferred single instance to write the input/output data to the portion of the computing object by copying at least a portion of the transferred single instance to at least a portion of each physical storage device that stores the data represented by the computing object.

2. The method of claim 1 , wherein the computing object comprises at least one of:

one or more plex objects that represent duplicate copies of data stored on the plurality of physical storage devices;

a mirrored volume object that comprises a plurality of plex objects that represent duplicate copies of data stored on the plurality of physical storage devices;

a striped volume object that comprises a plurality of logically sequential stripes of data stored on the plurality of physical storage devices.

3. The method of claim 1 , wherein detecting the failure that prevents the node within the computer cluster from performing the input/output operation comprises:

analyzing evidence of the failure;

determining, based at least in part on the analysis of the evidence, that the scope of the failure is limited to the computing object.

4. The method of claim 3 , further comprising directing the other node to perform the input/output operation by specifically targeting the computing object instead of targeting the plurality of physical storage devices since the scope of the failure is limited to the computing object.

5. The method of claim 4 , wherein directing the other node within the computer cluster to perform the input/output operation comprises:

identifying at least one source object that comprises additional input/output data to be written to the computing object as part of the input/output operation;

directing the other node to:

obtain a single instance of the additional input/output data from the source object;

use the single instance to write the additional input/output data to the computing object instead of obtaining a different instance of the additional input/output data for each physical storage device storing the data represented by the computing object.

6. The method of claim 1 , further comprising:

determining that the node within the computer cluster is able to access another portion of the computing object.

7. The method of claim 6 , further comprising directing the other node to:

identify at least one source object that comprises additional input/output data to be written to the computing object;

directing the node to:

obtain a single instance of the additional input/output data from the source object;

use the obtained single instance to write the additional input/output data to the other portion of the computing object since the node is able to access the other portion of the computing object.

8. The method of claim 1 , wherein identifying the other node within the computer cluster that is able to perform the input/output operation comprises determining that none of the nodes included in the computer cluster is able to individually perform the input/output operation on the computing object.

9. The method of claim 1 , wherein directing the node within the computer cluster comprises directing the node to:

create a list that identifies:

the source object that comprises the input/output data;

the portion of the computing object;

providing the list to the other node to enable the other node to perform the input/output operation on the portion of the computing object based at least in part on the single instance of input/output data transferred to the other node.

10. The method of claim 1 , wherein the input/output operation comprises at least one of:

at least one read operation targeting the portion of the computing object;

at least one write operation targeting the portion of the computing object.

11. The method of claim 1 , wherein enabling the other node to use the transferred single instance to write the input/output data comprises providing the other node with an address of the input/output data.

12. The method of claim 1 , wherein directing the node to obtain the single instance of the input/output data from the source object comprises selecting a source object based on at least one of:

a preference for the selected source object;

at least one characteristic of the source object;

proximity between the other node and the source object.

13. The method of claim 1 , further comprising directing the node to perform at least a portion of the input/output operation by reading data from the node's onboard memory.

14. A system for transferring input/output operations within computer clusters, the system comprising:

an identification module, stored in memory, that identifies a computer cluster that comprises:

a plurality of nodes configured to facilitate access to a plurality of physical storage devices;

at least one computing object that represents data stored on the physical storage devices;

a detection module, stored in memory, that:

detects at least one failure that prevents at least one node within the computer cluster from performing at least one input/output operation on at least a portion of the computing object that represents the data stored on the physical storage devices, wherein detecting the failure comprises determining that the node is unable to perform the input/output operation on the portion of the computing object by determining that the node within the computer cluster is:

able to access at least one source object that comprises input/output data to be written to the portion of the computing object as part of the input/output operation;

unable to access the portion of the computing object;

a director module, stored in memory, that:

identifies at least one other node within the computer cluster that is able to perform the input/output operation on the portion of the computing object by determining that the other node within the computer cluster is able to access the portion of the computing object;

directs the node within the computer cluster to:

obtain, from the source object, a single instance of input/output data that facilitates performing the input/output operation on the portion of the computing object;

transfer the single instance of the input/output data to the other node instead of transferring a different instance of input/output data for each physical storage device storing the data represented by the computing object;

enable the other node to use the transferred single instance to write the input/output data to the portion of the computing object by copying at least a portion of the transferred single instance to at least a portion of each physical storage device that stores the data represented by the computing object;

at least one processor that executes the identification module, the detection module, and the director module.

15. The system of claim 14 , wherein the computing object comprises at least one of:

one or more plex objects that represent duplicate copies of data stored on the plurality of physical storage devices;

a mirrored volume object that comprises a plurality of plex objects that represent duplicate copies of data stored on the plurality of physical storage devices;

a striped volume object comprising a plurality of logically sequential stripes of data stored on the plurality of physical storage devices.

16. The system of claim 14 , wherein the detection module further:

analyzes evidence of the failure;

determines, based at least in part on the analysis of the evidence, that the scope of the failure is limited to the computing object.

17. The system of claim 16 , wherein the director module further directs the other node to perform the input/output operation by specifically targeting the computing object instead of targeting the plurality of physical storage devices since the scope of the failure is limited to the computing object.

18. The system of claim 14 , wherein the director module further:

identifies at least one source object that comprises additional input/output data to be written to the computing object as part of the input/output operation;

directs the other node to:

obtain a single instance of the additional input/output data from the source object;

use the single instance to write the additional input/output data to the computing object instead of obtaining a different instance of additional input/output data for each physical storage device storing the data represented by the computing object.

19. A non-transitory computer-readable-storage medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

identify a computer cluster that comprises:

a plurality of nodes configured to facilitate access to a plurality of physical storage devices;

at least one computing object that represents data stored on the physical storage devices;

detect at least one failure that prevents at least one node within the computer cluster from performing at least one input/output operation on at least a portion of the computing object that represents the data stored on the physical storage devices, wherein detecting the failure comprises determining that the node is unable to perform the input/output operation on the portion of the computing object by determining that the node within the computer cluster is:

able to access at least one source object that comprises input/output data to be written to the portion of the computing object as part of the input/output operation;

unable to access the portion of the computing object;

in response to detecting the failure:

identify at least one other node within the computer cluster that is able to perform the input/output operation on the portion of the computing object by determining that the other node within the computer cluster is able to access the portion of the computing object;

direct the node within the computer cluster to:

obtain, from the source object, a single instance of input/output data that facilitates performing the input/output operation on the portion of the computing object;

transfer the single instance of the input/output data to the other node instead of transferring a different instance of input/output data for each physical storage device storing the data represented by the computing object;

enable the other node to use the transferred single instance to write the input/output data to the portion of the computing object by copying at least a portion of the transferred single instance to at least a portion of each physical storage device that stores the data represented by the computing device.

Assignments (16)
SECURITY INTEREST Recorded Dec 12, 2025
From: ARCTERA US LLC
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 073951/0470 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 070530/0497 Recorded Dec 1, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0730 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 069585/0150 Recorded Dec 1, 2025
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0848 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
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 10, 2024
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 069563/0243 →
PATENT SECURITY AGREEMENT Recorded Dec 10, 2024
From: ARCTERA US LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069585/0150 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC
To: ARCTERA US LLC
Reel/Frame 069548/0468 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER AND CHANGE OF NAME Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC; VERITAS TECHNOLOGIES LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038455/0752 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 27, 2013
From: YALAMANCHILI, CHAITANYA; DASH, PRASANTA; JAGTAP, ASMITA; KASINA, SUDHAKAR
To: SYMANTEC CORPORATION
Reel/Frame 030094/0891 →