IP Library Granted Patent US 7,260,576
Granted Patent B2
US 7,260,576 · App. 10/288,153 · Granted Aug 21, 2007

Implementing a distributed file system that can use direct connections from client to disk

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,260,576
App. No.
10/288,153
Granted
Aug 21, 2007
Kind
B2
Abstract

One embodiment of the present invention provides a distributed file system that is able to use direct connections between clients and disks to perform file system operations. Upon receiving a request at a client to access a file, the client performs a lookup in a local cache to determine what physical disk blocks are associated with the request. If the lookup cannot be satisfied from the local cache, the client forwards the request to a server. In response to the forwarded request, the client receives a block map for the file from the server. This block map includes location information specifying physical disk blocks containing the file. The client uses this block map to determine which physical disk blocks are involved in the request and then accesses the file directly from the disk without going through the server.

Claims (46)

1. A method for implementing a distributed file system on a storage area network, comprising:

accepting a request at a client to access a file;

performing a lookup in a local cache to determine what physical disk blocks are associated with the request; and

if the lookup cannot be satisfied in the local cache,

forwarding the request from the client to a server,

receiving a block map for the file from the server, wherein the block map includes location information specifying physical blocks corresponding to the file,

maintaining a block map list at the server, wherein the block map list is used to keep track of the block maps that have been communicated to the clients, and wherein if the request to access the file is a write request, the method further comprises using the block map list at the server to:

cause the server to invalidate outstanding block maps for the file on other clients; and

grant an exclusive block map to the client that initiated the write request, and

using information from the block map at the client to access the file on the storage device directly without going through the server, wherein using information from the block map to access the file allows the client to directly access the storage blocks on the storage device;

wherein if a direct path between the client and the storage device does not exist, the method further comprises sending all requests associated with the storage device from the client through the server to the storage device via an independent port.

2. The method of claim 1 , wherein the block map includes only a portion of the location information for the file.

3. The method of claim 2 , wherein if the request to access the file is a read request, the method further comprises prefetching additional portions of the block map as they are needed.

4. The method of claim 1 , further comprising invalidating the exclusive block map prior to accepting a read request for the file.

5. The method of claim 1 , wherein an underlying file system includes a UNIX® file system.

6. The method of claim 5 , wherein the underlying file system does not reorder blocks so that the block map remains correct after the block map has been received from the server.

7. A storage device storing instructions that when executed by a computer cause the computer to perform a method for implementing a distributed file system on a storage area network, the method comprising:

accepting a request at a client to access a file;

performing a lookup in a local cache to determine what physical disk blocks are associated with the request; and

if the lookup cannot be satisfied in the local cache,

forwarding the request from the client to a server,

receiving a block map for the file from the server, wherein the block map includes location information specifying physical blocks corresponding to the file,

maintaining a block map list at the server, wherein the block map list is used to keep track of the block maps that have been communicated to the clients, and wherein if the request to access the file is a write request, the method further comprises using the block map list at the server to:

cause the server to invalidate outstanding block maps for the file on other clients; and

grant an exclusive block map to the client that initiated the write request, and

using information from the block map at the client to access the file on the storage device directly without going through the server, wherein using information from the block map to access the file allows the client to directly access the storage blocks on the storage device;

wherein if a direct path between the client and the storage device does not exist, the method further comprises sending all requests associated with the storage device from the client through the server to the storage device via an independent port.

8. The storage device of claim 7 , wherein the block map includes only a portion of the location information for the file.

9. The storage device of claim 8 , wherein if the request to access the file is a read request, the method further comprises prefetching additional portions of the block map as they are needed.

10. The storage device of claim 7 , the method further comprising invalidating the exclusive block map prior to accepting a read request for the file.

11. The storage device of claim 7 , wherein an underlying file system includes a UNIX® file system.

12. The storage device of claim 11 , wherein the underlying file system does not reorder blocks so that the block map remains correct after the block map has been received from the server.

13. An apparatus for implementing a file system on a storage area network, comprising:

a lookup mechanism that is configured to perform a lookup in a local cache to determine what physical disk blocks are associated with a file system request;

a forwarding mechanism that is configured to forward the request from the client to a server if the lookup cannot be satisfied by the local cache;

a receiving mechanism that is configured to receive a block map for the file from the server, wherein the block map includes location information specifying physical blocks corresponding to the file;

a maintaining mechanism that is configured to maintain a block map list at the server, wherein the block map list is used to keep track of the block maps that have been communicated to the clients,

an invalidating mechanism configured to use the block map list at the server to invalidate outstanding block maps for the file on other clients if the request to access the file is a write request;

a granting mechanism configured to grant an exclusive block map to the client that initiated the write request;

an accessing mechanism that is configured to use information from the block map at the client to access the file on the storage device directly without going through the server, wherein using information from the block map to access the file allows the client to directly access the storage blocks on the storage device; and

a sending mechanism configured to send all requests associated with the storage device from the client through the server to the storage device via an independent port.

14. The apparatus of claim 13 , wherein the block map includes only a portion of the location information for the file.

15. The apparatus of claim 14 , further comprising a prefetching mechanism configured to prefetch additional portions of the block map as they are needed.

16. The apparatus of claim 13 , wherein the invalidating mechanism is further configured to invalidate the exclusive block map prior to accepting a read request for the file.

17. The apparatus of claim 13 , wherein an underlying file system includes a UNIX® file system.

18. The apparatus of claim 17 , wherein the underlying file system does not reorder blocks so that the block map remains correct after the block map has been received from the server.

Assignments (1)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037302/0843 →