IP Library Granted Patent US 7,478,221
Granted Patent B1
US 7,478,221 · App. 11/121,229 · Granted Jan 13, 2009

System and method for using consistent virtual addresses to communicate in cooperative multi-layer virtualization environments

Assignee: Symantec Operating Corporation
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,478,221
App. No.
11/121,229
Granted
Jan 13, 2009
Kind
B1
Abstract

A system using consistent virtual addresses to communicate in cooperative multi-layer virtualization environments includes a volume server, one or more physical storage devices, a front-end layer and a back-end layer of virtualization participants. The volume server may be configured to aggregate storage in the one or more physical storage devices into a logical volume, and to provide configuration information on the logical volume to a front-end virtualization participant and to a back-end virtualization participant. The front-end virtualization participant may be configured to send a storage request including a target virtual address identifying a block of the logical volume to the back-end virtualization participant. The back-end virtualization participant may be configured to use the configuration information to identify a physical data block at a physical storage device corresponding to the target virtual address, and to perform a physical I/O operation on the physical data block.

Claims (69)

1. A system comprising:

a volume server;

one or more physical storage devices including a first physical storage device;

a front-end layer of virtualization participants, including a front-end virtualization participant; and

a back-end layer of virtualization participants, including a first back-end virtualization participant;

wherein each of said front-end layer of virtualization participants is configured to interact with one or more storage consumers to receive external storage requests from said one or more storage consumers, wherein said one or more storage consumers are external to said front-end layer and said back-end layer of virtualization participants;

wherein each of said back-end layer of virtualization participants is configured to provide said volume server and other ones of said front-end and said back-end layers of virtualization participants with access to one or more of said physical storage devices, but is not directly accessible by said one or more storage consumers;

wherein the volume server is configured to:

aggregate storage in the one or more physical storage devices into a logical volume; and

provide configuration information for the logical volume to the front-end virtualization participant and the first back-end virtualization participant, wherein the configuration information includes a generation identifier indicative of a version of the configuration information;

wherein the front-end virtualization participant is configured to:

send a first internal storage request including a target virtual address identifying a target block of the logical volume to the first back-end virtualization participant, wherein the first internal storage request includes a front-end generation identifier corresponding to a latest version of the configuration information available at the front-end virtualization participant;

wherein the first back-end virtualization participant is configured to:

use the configuration information to translate the target virtual address to a corresponding physical block address of the first physical storage device; and

perform a first physical I/O operation on a first physical data block stored at the physical block address corresponding to the target virtual address.

2. The system as recited in claim 1 , wherein the one or more physical storage devices includes a second physical storage device, wherein the first back-end virtualization participant is configured to provide access to the first physical storage device, wherein the back-end layer includes a second back-end virtualization participant configured to provide access to the second physical storage device, and wherein the volume server is further configured to provide the configuration information to the second back-end virtualization participant.

3. The system as recited in claim 2 , wherein the first internal storage request is generated at the front-end virtualization participant in response to an external request from one of said one or more storage consumers, wherein the second back-end virtualization participant is configured to:

receive a second internal storage request corresponding to the external request including the target virtual address;

use the configuration information to identify a second physical data block at the second physical storage device corresponding to the target virtual address; and

perform a second physical I/O operation on the second physical data block.

4. The system as recited in claim 3 , wherein the second internal storage request is sent to the second back-end virtualization participant by the first back-end virtualization participant.

5. The system as recited in claim 3 , wherein the second internal storage request is sent to the second storage server by the front-end virtualization participant.

6. The system as recited in claim 1 , wherein the target virtual address includes a logical volume identifier and an offset within the logical volume.

7. The system as recited in claim 1 , wherein the first back-end virtualization participant is further configured to:

verify that the front-end generation identifier in the first internal storage request matches a local generation identifier corresponding to a latest local version of the configuration information available at the first back-end virtualization participant prior to performing the first physical I/O operation.

8. A method comprising:

aggregating storage in one or more physical storage devices, including a first physical storage device, into a logical volume;

providing configuration information for the logical volume to a front-end virtualization participant at a front-end layer of virtualization participants and to a first back-end virtualization participant at a back-end layer of virtualization participants, wherein the configuration information includes a generation identifier indicative of a version of the configuration information;

each of said front-end layer of virtualization participants interacting directly with one or more storage consumers to receive external storage requests from said one or more storage consumers, wherein said one or more storage consumers are external to said front-end layer and said back-end layer of virtualization participants;

each of said back-end layer of virtualization participants providing said volume server and other ones of said front-end and said back-end layers of virtualization participants with access to one or more of said physical storage devices without being directly accessible by said one or more storage consumers;

sending a first internal storage request including a target virtual address identifying a target block of the logical volume from the front-end virtualization participant to the first back-end virtualization participant wherein the first internal storage request includes a front-end generation identifier corresponding to a latest version of the configuration information available at the front-end virtualization participant;

using the configuration information at the first back-end virtualization participant to translate the target virtual address to a corresponding physical block address of the first physical storage device; and

performing a first physical I/O operation on a first physical data block stored at the physical block address corresponding to the target virtual address.

9. The method as recited in claim 8 , wherein the one or more physical storage devices includes a second physical storage device, further comprising:

providing access to the first physical storage device from the first back-end virtualization participant;

providing access to the second physical storage device from a second back-end virtualization participant at the back-end layer; and

providing the configuration information to the second back-end virtualization participant.

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

generating the first internal storage request at the front-end virtualization participant in response to an external request from one of said one or more storage consumers;

receiving a second internal storage request corresponding to the external request, including the target virtual address, at the second back-end virtualization participant;

using the configuration information at the second back-end virtualization participant to identify a second physical data block at the second physical storage device corresponding to the target virtual address; and

performing a second physical I/O operation on the second physical data block.

11. The method as recited in claim 10 , wherein the second internal storage request is sent to the second back-end virtualization participant by the first back-end virtualization participant.

12. The method as recited in claim 10 , wherein the second internal storage request is sent to the second back-end virtualization participant by the front-end virtualization participant.

13. The method as recited in claim 8 , wherein the target virtual address includes a logical volume identifier and an offset within the logical volume.

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

verifying that the front-end generation identifier in the first internal storage request matches a local generation identifier corresponding to a latest local version of the configuration information available at the first back-end virtualization participant prior to performing the first physical I/O operation.

15. A computer accessible storage medium comprising program instructions, wherein the instructions are computer-executable to:

aggregate storage in one or more physical storage devices, including a first physical storage device, into a logical volume;

provide configuration information for the logical volume to a front-end virtualization participant at a front-end layer of virtualization participants and to a first back-end virtualization participant at a back-end layer of virtualization participants, wherein the configuration information includes a generation identifier indicative of a version of the configuration information;

implement each of said front-end layer of virtualization participants interacting directly with one or more storage consumers to receive external storage requests from said one or more storage consumers, wherein said one or more storage consumers are external to said front-end layer and said back-end layer of virtualization participants;

implement each of said back-end layer of virtualization participants providing said volume server and other ones of said front-end and said back-end layers of virtualization participants with access to one or more of said physical storage devices without being directly accessible by said one or more storage consumers;

send a first internal storage request including a target virtual address identifying a target block of the logical volume from the front-end virtualization participant to the first back-end virtualization participant, wherein the first internal storage request includes a front-end generation identifier corresponding to a latest version of the configuration information available at the front-end virtualization participant;

use the configuration information at the first back-end virtualization participant to translate the target virtual address to a corresponding physical block address of the first physical storage device; and

perform a first physical I/O operation on a first physical data block stored at the physical block address corresponding to the target virtual address.

16. The computer accessible storage medium as recited in claim 15 , wherein the one or more physical storage devices includes a second physical storage device, wherein the instructions are further computer-executable to:

provide access to the first physical storage device from the first back-end virtualization participant;

provide access to the second physical storage device from a second back-end virtualization participant at the back-end layer; and

provide the configuration information to the second back-end virtualization participant.

17. The computer accessible storage medium as recited in claim 16 , wherein the instructions are further computer-executable to:

generate the first internal storage request at the front-end virtualization participant in response to an external request from one of said one or more storage consumers;

receive a second internal storage request corresponding to the external request, including the target virtual address, at the second back-end virtualization participant;

use the configuration information at the second back-end virtualization participant to identify a second physical data block at the second physical storage device corresponding to the target virtual address; and

perform a second physical I/O operation on the second physical data block.

18. The computer accessible storage medium as recited in claim 17 , wherein the second internal storage request is sent to the second back-end virtualization participant by the first back-end virtualization participant.

19. The computer accessible storage medium as recited in claim 17 , wherein the second internal storage request is sent to the second back-end virtualization participant by the front-end virtualization participant.

20. The computer accessible storage medium as recited in claim 15 , wherein the target virtual address includes a logical volume identifier and an offset within the logical volume.

21. The computer accessible storage medium as recited in claim 15 , wherein the instructions are further computer-executable to:

verify that the front-end generation identifier in the first internal storage request matches a local generation identifier corresponding to a latest local version of the configuration information available at the first back-end virtualization participant prior to performing the first physical I/O operation.

Assignments (18)
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: 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 Mar 5, 2012
From: VERITAS OPERATING CORPORATION
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 027819/0462 →
CHANGE OF NAME Recorded Sep 26, 2007
From: VERITAS OPERATING CORPORATION
To: SYMANTEC CORPORATION
Reel/Frame 019872/0979 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 3, 2005
From: KARR, RONALD S.; JONNALA, RAMANA; JOSHI, DHANESH V.; VALIVETI, NARASIMHA R.
To: VERITAS OPERATING CORPORATION
Reel/Frame 016534/0474 →