IP Library Granted Patent US 7,555,527
Granted Patent B1
US 7,555,527 · App. 10/704,320 · Granted Jun 30, 2009

Efficiently linking storage object replicas in a computer network

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 7,555,527
App. No.
10/704,320
Granted
Jun 30, 2009
Kind
B1
Abstract

A system and method for efficiently linking together replicas of a storage object. The location of a first replica of the storage object may be stored on a node in a network. When new replicas of the storage object are created, the node that stores the new replica may efficiently lookup the location of the first replica and utilize the location information to perform an efficient process to link the new replica to the first replica and any other existing replicas by causing routing information to be created on various nodes.

Claims (106)

1. A computer-readable storage medium storing program instructions executable to implement a method comprising:

a first node storing a first replica of a first storage object;

the first node sending location information for the first replica of the first storage object to a second node, wherein the location information specifies that the first replica of the first storage object is stored on the first node;

a third node storing a second replica of the first storage object;

the third node querying the second node to obtain the location information for the first replica of the first storage object;

in response to determining that the location information specifies that the first replica of the first storage object is stored on the first node, the third node initiating an operation to create first routing information for sending messages from the third node to the first replica of the first storage object on the first node;

sending a publish message from the third node to the first replica of the first storage object on the first node using the first routing information; and

creating second routing information for sending messages from the first node to the second replica of the first storage object on the third node in response to the publish message.

2. The computer-readable storage medium of claim 1 ,

wherein the operation to create the first routing information includes sending a message from the third node to the first node.

3. The computer-readable storage medium of claim 2 ,

wherein the message is propagated from the third node to the first node via one or more intermediate nodes;

wherein a reply message is propagated from the first node to the third node via the one or more intermediate nodes;

wherein creating the first routing information comprises the third node and each intermediate node creating routing information for routing messages to the first replica of the first storage object via a respective link by which the reply message was received.

4. The computer-readable storage medium of claim 1 ,

wherein the publish message is propagated from the third node to the first node via one or more intermediate nodes;

wherein creating the second routing information comprises the first node and each intermediate node creating routing information for routing messages to the second replica of the first storage object via a link by which the publish message was received.

5. The computer-readable storage medium of claim 1 , wherein the method implemented by the program instructions further comprises:

the first node selecting the second node for storing the location information for the first replica of the first storage object based on one or more of:

an ID of the first storage object; and

an ID of the second node.

6. The computer-readable storage medium of claim 1 , wherein the method implemented by the program instructions further comprises:

the third node determining that the location information for the first replica of the first storage object is located stored on the second node based on one or more of:

an ID of the first storage object; and

an ID of the second node;

wherein the third node queries the second node to obtain the location information in response to said determining that the location information is stored on the second node.

7. The medium of claim 1 , wherein the method implemented by the program instructions are further comprises:

a fourth node storing a third replica of the first storage object;

the fourth node querying the second node to obtain the location information for the first replica of the first storage object;

in response to determining that the location information specifies that the first replica of the first storage object is stored on the first node, the fourth node initiating an operation to create third routing information for sending messages from the fourth node to the first replica of the first storage object on the first node;

sending an additional publish message from the fourth node to the first replica of the first storage object on the first node using the third routing information; and

creating fourth routing information for sending messages from the first node to the third replica of the first storage object on the fourth node in response to the additional publish message.

8. The computer-readable storage medium of claim 7 ,

wherein the operation to create the third routing information includes sending a message from the fourth node to one or more intermediate nodes;

wherein the one or more intermediate nodes includes a fifth node that already has routing information for sending messages to the first replica of the first storage object located on the first node;

wherein the fifth node does not further propagate the message to another node.

9. The computer-readable storage medium of claim 1 , wherein the first storage object comprises a file.

10. A system comprising: a plurality of nodes, wherein each of the plurality of nodes includes memory storing program instructions executable to implement a method comprising: a first node of the plurality of nodes storing a first replica of a first storage object; the first node sending location information for the first replica of the first storage object to a second node of the plurality of nodes, wherein the location information specifies that the first replica of the first storage object is stored on the first node; a third node of the plurality of nodes storing a second replica of the first storage object; the third node querying the second node to obtain the location information for the first replica of the first storage object; in response to determining that the location information specifies that the first replica of the first storage object is stored on the first node, the third node initiating an operation to create first routing information for sending messages from the third node to the first replica of the first storage object on the first node; sending a publish message from the third node to the first replica of the first storage object on the first node using the first routing information; and creating second routing information for sending messages from the first node to the second replica of the first storage object on the third node in response to the publish message.

11. The system of claim 10 ,

wherein the operation to create the first routing information includes sending a message from the third node to the first node.

12. The system of claim 11 ,

wherein the message is propagated from the third node to the first node via one or more intermediate nodes;

wherein a reply message is propagated from the first node to the third node via the one or more intermediate nodes;

wherein creating the first routing information comprises the third node and each intermediate node creating routing information for routing messages to the first replica of the first storage object via a respective link by which the reply message was received.

13. The system of claim 10 ,

wherein the publish message is propagated from the third node to the first node via one or more intermediate nodes;

wherein creating the second routing information comprises the first node and each intermediate node creating routing information for routing messages to the second replica of the first storage object via a link by which the publish message was received.

14. The system of claim 10 , wherein the method implemented by the program instructions further comprises:

the first node selecting the second node for storing the location information for the first replica of the first storage object based on one or more of:

an ID of the first storage object; and

an ID of the second node.

15. The system of claim 10 , wherein the method implemented by the program instructions further comprises:

the third node determining that the location information for the first replica of the first storage object is stored on the second node based on one or more of:

an ID of the first storage object; and

an ID of the second node;

wherein the third node queries the second node to obtain the location information in response to said determining that the location information is stored on the second node.

16. The system of claim 10 , wherein the method implemented by the program instructions further comprises:

a fourth node of the plurality of nodes storing a third replica of the first storage object;

the fourth node querying the second node to obtain the location information for the first replica of the first storage object;

in response to determining that the location information specifies that the first replica of the first storage object is stored on the first node, the fourth node initiating an operation to create third routing information for sending messages from the fourth node to the first replica of the first storage object on the first node;

sending an additional publish message from the fourth node to the first replica of the first storage object on the first node using the third routing information; and

creating fourth routing information for sending messages from the first node to the third replica of the first storage object on the fourth node in response to the additional publish message.

17. The system of claim 16 ,

wherein the operation to create the third routing information includes sending a message from the fourth node to one or more intermediate nodes;

wherein the one or more intermediate nodes includes a fifth node that already has routing information for sending messages to the first replica of the first storage object located on the first node;

wherein the fifth node does not further propagate the message to another node.

18. The system of claim 10 ,

wherein the first storage object comprises a file.

19. A method comprising:

a first node storing a first replica of the first storage object;

the first node sending location information for the first replica of the first storage object to a second node, wherein the location information specifies that the first replica of the first storage object is stored on the first node;

a third node storing a second replica of the first storage object;

the third node querying the second node to obtain the location information for the first replica of the first storage object;

in response to determining that the location information specifies that the first replica of the first storage object is stored on the first node, the third node initiating an operation to create first routing information for sending messages from the third node to the first replica of the first storage object on the first node;

sending a publish message from the third node to the first replica of the first storage object on the first node using the first routing information: and

creating second routing information for sending messages from the first node to the second replica of the first storage object on the third node in response to the-publish message.

20. The method of claim 19 ,

wherein the operation to create the first routing information includes sending a message from the third node to the first node.

21. The method of claim 20 ,

wherein the message is propagated from the third node to the first node via one or more intermediate nodes;

wherein a reply message is propagated from the first node to the third node via the one or more intermediate nodes;

wherein creating the first routing information comprises the third node and each intermediate node creating routing information for routing messages to the first replica of the first storage object via a respective link by which the reply message was received.

22. The method of claim 19 ,

wherein the publish message is propagated from the third node to the first node via one or more intermediate nodes;

wherein creating the second routing information comprises the first node and each intermediate node creating routing information for routing messages to the second replica of the first storage object via a link by which the publish message was received.

23. The method of claim 19 , further comprising:

the first node selecting the second node for storing the location information for the first replica of the first storage object based on one or more of:

an ID of the first storage object; and

an ID of the second node.

24. The method of claim 19 , further comprising:

the third node determining that the location information for the first replica of the first storage object is stored on the second node based on one or more of:

an ID of the first storage object; and

an ID of the second node;

wherein the third node queries the second node to obtain the location information in response to said determining that the location information is stored on the second node.

25. The method of claim 19 , further comprising:

a fourth node storing a third replica of the first storage object;

the fourth node querying the second node to obtain the location information for the first replica of the first storage object;

in response to determining that the location information specifies that the first replica of the first storage object is stored on the first node, the fourth node initiating an operation to create third routing information for sending messages from the fourth node to the first replica of the first storage object on the first node;

sending publish message from the fourth node to the first replica of the first storage object on the first node using the third routing information; and

creating fourth routing information for sending messages from the first node to the third replica of the first storage object on the fourth node in response to the additional publish message.

26. The method of claim 25 ,

wherein the operation to create the third routing information includes sending a message from the fourth node to one or more intermediate nodes;

wherein the one or more intermediate nodes includes a fifth node that already has routing information for sending messages to the first replica of the first storage object located on the first node;

wherein the fifth node does not further propagate the message to another node.

27. The method of claim 19 ,

wherein the first storage object comprises a file.

Assignments (15)
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 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 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
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: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 019872 FRAME 979. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNEE IS SYMANTEC OPERATING CORPORATION. Recorded Feb 21, 2008
From: VERITAS OPERATING CORPORATION
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 020540/0248 →
CHANGE OF NAME Recorded Sep 26, 2007
From: VERITAS OPERATING CORPORATION
To: SYMANTEC CORPORATION
Reel/Frame 019872/0979 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 7, 2003
From: SLAUGHTER, GREGORY L.; CHEN, XIAOHUI DAWN; SAULPAUGH, THOMAS E.
To: VERITAS OPERATING CORPORATION
Reel/Frame 014694/0415 →