IP Library Granted Patent US 6,857,059
Granted Patent B2
US 6,857,059 · App. 10/046,070 · Granted Feb 15, 2005

Storage virtualization system and methods

Assignee: YottaYotta, Inc.
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 6,857,059
App. No.
10/046,070
Filed
Jan 11, 2002
Granted
Feb 15, 2005
Kind
B2
Art Unit
2187
USPC
711/209
Abstract

Storage virtualization systems and methods that allow customers to manage storage as a utility rather than as islands of storage which are independent of each other. A demand mapped virtual disk image of up to an arbitrarily large size is presented to a host system. The virtualization system allocates physical storage from a storage pool dynamically in response to host I/O requests, e.g., SCSI I/O requests, allowing for the amortization of storage resources through a disk subsystem while maintaining coherency amongst I/O RAID traffic. In one embodiment, the virtualization functionality is implemented in a controller device, such as a controller card residing in a switch device or other network device, coupled to a storage system on a storage area network (SAN). The resulting virtual disk image that is observed by the host computer is larger than the amount of physical storage actually consumed.

Claims (49)

1. A method of dynamically mapping addresses between a virtual disk address and one or more physical block addresses for a storage system in response to a write operation requested by a host system, the method comprising:

receiving a write request from a host, said write request including a virtual memory address and one or more blocks of data;

determining whether memory space in the storage system has been allocated for the one or more blocks of data based on the virtual memory address;

if it is determined that memory space has been allocated, completing the write operation to the allocated memory space; and

if it is determined that no memory space has been allocated:

automatically allocating memory space in the storage system for the one or more blocks of data, wherein automatically allocating includes automatically updating a mapping table to include an entry linking the virtual address and one or more physical block addresses of the storage system; and

completing the write operation to the allocated memory space.

2. The method of claim 1 , wherein determining includes determining whether the mapping table includes a link between the virtual address and one or more physical block addresses of the storage system.

3. The method of claim 1 , wherein if it is determined that no memory space has been allocated, the method further comprises:

determining the number of blocks of memory space in the storage system to be allocated.

4. The method of claim 3 , wherein the number of blocks allocated is greater than the number of data blocks included with the write request.

5. The method of claim 1 , wherein the storage system includes a plurality of storage devices.

6. A method of dynamically mapping addresses between a virtual disk address and one or more physical block addresses for a storage system in response to a request from a host system to perform an operation on the storage system, the method comprising:

receiving a request from a host to perform an operation on one or more blocks of the storage system, said request including a virtual memory address;

determining from a mapping table whether memory space in the storage system has been allocated for the virtual memory address;

if it is determined that memory space has been allocated, completing the operation on the allocated memory space; and

if it is determined that no memory space has been allocated:

automatically allocating memory space in the storage system for the virtual address, wherein automatically allocating includes automatically updating a mapping table to include an entry linking the virtual address and one or more physical block addresses of the storage system; and

completing the operation on the allocated memory space.

7. The method of claim 6 , wherein the operation is a read operation, and wherein if it is determined that memory space has been allocated, completing the operation includes retrieving the data from the allocated memory space.

8. The method of claim 7 , wherein the operation is a read operation, and wherein if it determined that no memory space has been allocated, completing the operation includes returning a default formatted page without retrieving any data from the storage system.

9. The method of claim 6 , wherein the operation is a write operation and wherein the request includes one or more blocks of data to be written to the storage system.

10. The method of claim 9 , wherein if it is determined that no memory space has been allocated, the method further comprises:

determining the number of blocks of memory space in the storage system to be allocated.

11. The method of claim 10 , wherein the number of blocks allocated is greater than the number of data blocks included with the write request.

12. The method of claim 6 , wherein determining includes determining whether the mapping table includes a link between the virtual address and one or more physical block addresses of the storage system.

13. The method of claim 6 , wherein the storage system includes a plurality of storage devices.

14. A method of dynamically mapping addresses between a virtual disk address and one or more physical block addresses for a storage system in response to a write operation requested by a host system, the method comprising:

receiving a write request from a host, said write request including a virtual memory address and one or more blocks of data;

determining whether memory space in the storage system has been allocated for the one or more blocks of data based on the virtual memory address;

if it is determined that memory space has been allocated, completing the write operation to the allocated memory space; and

if it is determined that no memory space has been allocated:

automatically allocating memory space in the storage system for the one or more blocks of data, including determining a number of blocks of memory space in the storage system to be allocated, wherein the number of blocks allocated is greater than the number of data blocks included with the write request; and

completing the write operation to the allocated memory space.

15. A method of dynamically mapping addresses between a virtual disk address and one or more physical block addresses for a storage system in response to a request from a host system to perform an operation on the storage system, the method comprising:

receiving a request from a host to perform an operation on one or more blocks of the storage system, said request including a virtual memory address;

determining from a mapping table whether memory space in the storage system has been allocated for the virtual memory address;

if it is determined that memory space has been allocated, completing the operation on the allocated memory space; and

if it is determined that no memory space has been allocated:

automatically allocating memory space in the storage system for the virtual address; and

completing the operation on the allocated memory space;

wherein the operation is a read operation, and wherein if it determined that no memory space has been allocated, completing the operation includes returning a default formatted page without retrieving any data from the storage system.

16. A method of dynamically mapping addresses between a virtual disk address and one or more physical block addresses for a storage system in response to a request from a host system to perform an operation on the storage system, the method comprising:

receiving a request from a host to perform an operation on one or more blocks of the storage system, said request including a virtual memory address, wherein the operation is a write operation and wherein the request includes one or more blocks of data to be written to the storage system;

determining from a mapping table whether memory space in the storage system has been allocated for the virtual memory address;

if it is determined that memory space has been allocated, completing the operation on the allocated memory space; and

if it is determined that no memory space has been allocated:

automatically allocating memory space in the storage system for the virtual address, including determining a number of blocks of memory space in the storage system to be allocated, wherein the number of blocks allocated is greater than the number of data blocks included with the write request; and

completing the operation on the allocated memory space.

Assignments (13)
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: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2008
From: EMC CORPORATION OF CANADA
To: EMC CORPORATION
Reel/Frame 021936/0238 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 22, 2008
From: YOTTAYOTTA, INC.
To: EMC CORPORATION OF CANADA
Reel/Frame 021561/0597 →
SECURITY AGREEMENT Recorded Apr 10, 2007
From: YOTTAYOTTA, INC.
To: 1172038 ALBERTA ULC; PRYCES (BARBADOS) LTD. (C/O US VENTURES); TECHNOANGE, INC.; BANC OF AMERICA STRATEGIC INVESTMENTS CORPORATION; SHIGEMURA, BARTON; KARPOFF, WAYNE
Reel/Frame 019140/0340 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 10, 2002
From: KARPOFF, WAYNE; LAKE, BRIAN
To: YOTTA YOTTA, INC.
Reel/Frame 012788/0895 →
Continuity (2)
Provisional Application 6026114000 · Jan 11, 2001
Related Publication 20020112113A1 · Aug 15, 2002