IP Library Granted Patent US 7,594,024
Granted Patent B2
US 7,594,024 · App. 10/077,696 · Granted Sep 22, 2009

Silicon-based storage virtualization

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,594,024
App. No.
10/077,696
Granted
Sep 22, 2009
Kind
B2
Abstract

A storage server in a storage area network (SAN) environment connecting host computers and storage devices. The storage server includes a plurality of storage processors and a switching circuit. Data is routed between the storage processors via the switching circuit according to routing tags. The routing tags are examined prior to completely receiving the data, allowing the data to be routed with minimal delay.

Claims (30)

1. A storage server in a storage area network connecting a plurality of host computers and a plurality of storage devices, the storage server comprising:

a switching circuit in the storage server that connects a plurality of storage processors and associates a first storage processor from the plurality of storage processors with said plurality of host computers and further associates a second storage processor from the plurality of storage processors with said plurality of storage devices, wherein said plurality of storage processors in the storage server receive a plurality of command packets and a plurality of data packets; and

a microengine in each of the plurality of storage processors to process said plurality of command packets and plurality of data packets using microcode and configure a routing path through said switching circuit to establish communication between the first storage processor and the second storage processor, wherein the microcode executing on the microengines from the first of the one or more of the plurality of storage processors is responsive to at least one command packet of said plurality of command packets and embeds routing instructions for the routing path directly in each data packet of said plurality of data packets over said path using one or more microcode instructions in the microcode thereby allowing initial routing operations for a data packet between said first storage processor and said second storage processor through said switching circuit to take place prior to completely receiving said data packet in the entirety, and further configures a plurality of paths between the second storage processor and a storage device from the plurality of storage devices in accordance with said command packet.

2. The storage server of claim 1 , wherein said first storage processor includes a lookup table that associates one or more virtual logical unit numbers (VLUNs) with one or more physical logical unit numbers (PLUNs), wherein said one or more PLUNs are associated with said plurality of storage devices, and wherein said one or more VLUNs are virtualizations of said one or more PLUNs.

3. The storage server of claim 1 , further comprising:

a plurality of microengines, wherein said plurality of microengines are components of said plurality of storage processors.

4. The storage server of claim 1 , wherein said plurality of data packets are received from one of said plurality of host computers.

5. The storage server of claim 1 , wherein said plurality of data packets are received from one of said plurality of storage devices.

6. The storage server of claim 1 , wherein said plurality of data packets are received from more than one of said plurality of storage devices.

7. The storage server of claim 1 , wherein said plurality of data packets are routed to one of said plurality of host computers.

8. The storage server of claim 1 , wherein said plurality of data packets are routed to one of said plurality of storage devices.

9. The storage server of claim 1 , wherein said plurality of data packets are routed to more than one of said plurality of storage devices.

10. The storage server of claim 1 , wherein said first storage processor receives said command packet from one of said plurality of host computers.

11. The storage server of claim 1 , wherein said first storage processor receives said command packet from one of said plurality of storage processors.

12. The storage server of claim 1 , wherein said first microengine uses a command handle in said command packet to perform a tree search to configure said path.

13. The storage server of claim 1 , wherein said first storage processor passes a handle to said second storage processor.

14. The storage server of claim 1 , wherein said first storage processor and said second storage processor are a single storage processor.

15. The storage server of claim 1 , wherein said first microengine routes said data packet according to a routing tag therein.

16. The storage server of claim 1 , further comprising:

a virtual server controller configured to program, via a configuration command, a lookup table in one of said plurality of storage processors, wherein said lookup table associates one or more virtual logical unit numbers (VLUNs) with one or more physical logical unit numbers (PLUNs).

17. A method of routing data in a storage area network having a storage server between a plurality of host computers and a plurality of storage devices, the method comprising:

associating a first storage processor from a plurality of storage processors with said plurality of host computers and a second storage processor from the plurality of storage processors with said plurality of storage devices wherein said plurality of storage processors are in the storage server;

receiving a plurality of command packets and a plurality of data packets to be processed on at least one microengine associated with the plurality of storage processors;

configuring a routing path between a first storage processor and a second storage processor of said plurality of storage processors in response to receipt of a command packet of said plurality of command packets; and

embedding routing instructions from the routing path directly in each data packet of said plurality of data packets to be transmitted over said routing path thereby allowing initial routing operations for a data packet between said first storage processor and said second storage processor to take place prior to completely receiving said data packet in the entirety; and

configuring a plurality of paths between the second storage processor and a storage device from the plurality of storage devices in accordance with said command packet.

18. The method of claim 17 , wherein the routing operations for said data packet over said path further comprises routing said data packet to one of said plurality of host computers.

19. The method of claim 17 , wherein the routing operations for said data packet over said path further comprises routing said data packet to one of said plurality of storage devices.

20. The method of claim 17 , wherein the routing operations for said data packet over said path further comprises routing said data packet to more than one of said plurality of storage devices.

21. The method of claim 17 , wherein the first storage processor includes a lookup table that associates one or more virtual logical unit numbers (VLUNs) with one or more physical logical unit numbers (PLUNs), wherein said one or more PLUNs are associated with said plurality of storage devices, and wherein said one or more VLUNs are virtualizations of said one or more PLUNs.

Assignments (4)
MERGER Recorded Dec 12, 2012
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 029452/0118 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2005
From: CANDERA, INC.
To: NETWORK APPLIANCE, INC.
Reel/Frame 015963/0680 →
CHANGE OF NAME Recorded Nov 4, 2002
From: CONFLUENCE NETWORKS, INC.
To: CANDERA INC.
Reel/Frame 013458/0704 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 24, 2002
From: SHAH, NILESH; IBRAHIM, RAHIM; TRAN, NGHIEP; NGUYEN, TUAN
To: CONFLUENCE NETWORKS, INC.
Reel/Frame 013039/0407 →