IP Library Granted Patent US 8,051,246
Granted Patent B1
US 8,051,246 · App. 12/005,147 · Granted Nov 1, 2011

Method and apparatus for utilizing a semiconductor memory of a node as a disk cache

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,051,246
App. No.
12/005,147
Filed
Dec 21, 2007
Granted
Nov 1, 2011
Kind
B1
Examiner
GU, SHAWN X
Art Unit
2188
USPC
711/113
Abstract

A method and apparatus for utilizing a semiconductor memory of a node as disk cache is described. In one embodiment, a method of utilizing a semiconductor memory of a second server for a first server, comprising generating a storage access request at a first server, routing the storage access request through a communication link to a second server and performing the storage access request using a semiconductor memory of the second server.

Claims (83)

1. A method, comprising:

establishing a relationship between a first server and a second server, wherein

the relationship designates the first server as a primary server and the second server as a secondary server;

configuring a semiconductor memory of the secondary server as a disk cache for the primary server;

generating a storage access request at the first server;

routing the storage access request through a communication link to the second server;

performing the storage access request using the semiconductor memory of the second server; and

upon failure of the first server, establishing a new relationship between the second server and a third server, wherein

the new relationship designates the second server as the primary server and the third server as the secondary server.

2. The method of claim 1 , wherein

the configuring the semiconductor memory of the second server further comprises:

the first server establishing control over the semiconductor memory of the second server.

3. The method of claim 1 , wherein the performing the storage access request further comprises:

processing the storage access request from the first server, wherein

the storage access request comprises a read request for a data block;

determining the data block resides in the semiconductor memory of the second server; and

communicating the data block to the first server through the communication link.

4. The method of claim 1 , wherein the performing the storage access request further comprises:

processing the storage access request from the first server, wherein

the storage access request comprises a read request for a data block;

determining the data block does not reside in the semiconductor memory of the second server; and

communicating the storage access request to a disk.

5. The method of claim 1 , wherein the performing the storage access request further comprises:

processing the storage access request from the first server, wherein

the storage access request comprises a write request for a data block;

storing the data block in the semiconductor memory as cached data; and

communicating the data block to a disk.

6. The method of claim 5 , further comprising managing the cached data in accordance with a caching policy to increase a speed of the performance of the storage access request.

7. The method of claim 1 , further comprising pre-fetching at least one data block from the semiconductor memory of the second server for communication to the first server.

8. The method of claim 1 , wherein performing the storage access request further comprises:

generating a block device using a portion of the semiconductor memory of the second server; and

presenting the block device to the first server.

9. The method of claim 1 , further comprising coupling the first server with the second server using the communication link.

10. An apparatus, comprising:

a logic in a first server, wherein the logic is configured to establish a relationship between the first server and a second server, wherein the relationship designates the first server as a primary server and the second server as a secondary server;

a primary caching driver in the first server, wherein the primary caching driver is configured to configure a semiconductor memory of the secondary server as a disk cache for the primary server, and

communicate a storage access request to the second server, wherein

the storage access request is communicated to the second server via a communication link that couples the first server with the second server; and

a secondary caching driver in the first server, wherein

the secondary caching driver is configured to perform a received storage access request from an other primary caching driver on a third server using a semiconductor memory on the first server, wherein

the semiconductor memory on the first server is configured by the other primary caching driver as a disk cache for the third server, and

upon failure of the third server, switch to the primary caching driver on the first server.

11. The apparatus of claim 10 , wherein the secondary caching driver is further configured to

generate a network block device using a portion of the semiconductor memory of the first server, and

present the network block device to the third server.

12. The apparatus of claim 10 , wherein the secondary caching driver is further configured to

read a data block from the semiconductor memory of the first server, wherein

the received storage access request from the other primary caching driver comprises a read request for the data block, and

communicate the data block to the other primary caching driver.

13. The apparatus of claim 10 , wherein the secondary caching driver is further configured to

determine an absence of a data block in the semiconductor memory of the first server, wherein

the received storage access request from the other primary caching driver comprises a read request for the data block, and

communicate the read request to a disk driver.

14. The apparatus of claim 10 , wherein the secondary caching driver is further configured to

store a data block in the semiconductor memory of the first server, wherein

the received storage access request from the other primary caching driver comprises a write request for the data block, and

communicate the write request to a disk driver.

15. A system, comprising:

a first node, comprising:

a logic, wherein the logic is configured to establish a relationship between the first node and a second node, wherein the relationship designates the first node as a primary node and the second node as a secondary node;

a primary caching driver, wherein the primary caching driver is configured to configure a semiconductor memory of the secondary node as disk cache for the primary node, and

communicate a storage access request to the second node;

a communication link that connects the first node to the second node; and

the second node, comprising:

a secondary caching driver, wherein the secondary caching driver is configured to

perform the storage access request from the primary caching driver using the semiconductor memory of the second node, and

upon failure of the first node, switch to an other primary caching driver; and

the other primary caching driver, wherein the other primary caching driver is configured to

establish a new relationship between the second node and a third node, wherein

the new relationship designates the second node as the primary node and the third node as the secondary node.

16. The system of claim 15 , further comprising a plurality of nodes, wherein the plurality of nodes comprises the first node, the second node, and the third node.

17. The system of claim 15 , wherein the secondary caching driver is further configured to

generate a network block device using the semiconductor memory of the second node, and

present the network block device to the first node.

18. The system of claim 15 , wherein the secondary caching driver is associated with mapping information, wherein the mapping information represents an allocation of at least one data block in the semiconductor memory.

19. The system of claim 15 , wherein the secondary caching driver is further configured to

read a data block from the semiconductor memory, wherein

the storage access request comprises a read request from the primary caching driver, and

communicate the data block to the first node.

20. The system of claim 15 , wherein the secondary caching driver is further configured to

determine an absence of a data block in the semiconductor memory, wherein

the storage access request comprises a read request from the primary caching driver, and

communicate the read request to a disk driver.