Claims
- 1. A method of caching data from user files stored in shared data computer network, where each user file of at least a plurality of the user files is divided into portions stored on a plurality of file servers, among a group of file servers in a computer network, comprising:
receiving a user request to access a subset of a specified user file, the request including a request for an opportunistic lock on the subset of the specified user file; identifying a subset of file servers that store portions of the user file that together comprise the subset of the specified user file; sending an oplock request to each file server in the subset of file servers, and receiving oplock request replies from the subset of file servers; aggregating the received oplock request replies to produce an aggregated oplock reply, such that the aggregated oplock reply is an oplock grant only when all the received oplock request replies are oplock grants; and sending the aggregated oplock reply to a sender of the user request, thereby enabling the sender to cache data from the subset of the specified user file only when the aggregate oplock reply is an oplock grant.
- 2. The method of claim 1, further including:
receiving an oplock break from a respective file server in the set of file servers; forwarding the oplock break to the sender of the user request.
- 3. The method of claim 1, further including:
waiting to receive an oplock break acknowledgement from the sender of the user request, and upon receiving the oplock break acknowledgement from the sender of the user request, forwarding the oplock break acknowledgement to the respective file server in the set of file servers.
- 4. The method of claim 1, further including:
upon receiving the oplock break, disabling caching of data from the subset of the specified user file.
- 5. The method of claim 1, further including:
upon receiving the oplock break, disabling caching of data from the subset of the specified user file within a file switch logically positioned between the sender of the user request and the set of file servers.
- 6. A method of caching data from user files stored in shared data computer network, where each user file of at least a plurality of the user files is divided into portions stored on a plurality of file servers, among a group of file servers in a computer network, comprising:
receiving a user request to access a specified user file, the request including a request for an opportunistic lock on the specified user file; accessing metadata identifying a set of file servers for storing respective defined portions of the specified user file; identifying, based on the metadata, a subset of the file servers that store portions of the user file that together comprise the specified user file; sending an oplock request to each file server in the subset of file servers, and receiving oplock request replies from the subset of file servers; aggregating the received oplock request replies to produce an aggregated oplock reply, such that the aggregated oplock reply is an oplock grant only when all the received oplock request replies are oplock grants; and sending the aggregated oplock reply to a sender of the user request, thereby enabling the sender to cache data from the subset of the specified user file only when the aggregate oplock reply is an oplock grant.
- 7. The method of claim 6, further including:
receiving an oplock break from a respective file server in the set of file servers; forwarding the oplock break to the sender of the user request.
- 8. The method of claim 7, further including:
waiting to receive an oplock break acknowledgement from the sender of the user request, and upon receiving the oplock break acknowledgement from the sender of the user request, forwarding the oplock break acknowledgement to the respective file server in the set of file servers.
- 9. The method of claim 7, further including:
upon receiving the oplock break, disabling caching of data from the subset of the specified user file.
- 10. The method of claim 7, further including:
upon receiving the oplock break, disabling caching of data from the subset of the specified user file within a file switch logically positioned between the sender of the user request and the set of file servers.
- 11. The method of claim 6, the accessing metadata step including accessing a metafile that stores information identifying a set of file servers for storing respective defined portions of the specified user file.
- 12. A method of caching data from user files stored in shared data computer network, where each user file of at least a plurality of the user files is divided into portions stored on a plurality of file servers, among a group of file servers in a computer network, comprising:
within a file switch logically positioned between a client and the group of file servers: receiving a user request to access a subset of a specified user file; identifying a subset of file servers that store portions of the user file that together comprise the subset of the specified user file; sending an oplock request to each file server in the subset of file servers, and receiving oplock request replies from the subset of file servers; aggregating the received oplock request replies to produce an aggregated oplock reply, such that the aggregated oplock reply is an oplock grant only when all the received oplock request replies are oplock grants; and caching data from the subset of the specified user file only when the aggregate oplock reply is an oplock grant.
- 13. The method of claim 12, further including:
receiving an oplock break from a respective file server in the set of file servers; and disabling said caching of data from the subset of the specified user file.
- 14. The method of claim 12, wherein identifying the subset of file servers includes:
accessing a metafile that stores information identifying a set of file servers for storing respective defined portions of the specified user file; and determining, based on the information stored in the metafile, a subset of the file servers that store portions of the user file that together comprise the subset of the specified user file.
- 15. The method of claim 12, wherein the user request does not include an oplock request.
- 16. A file switch for use in a computer network having a group of file servers and a plurality of client computers, the file switch comprising:
at least one port for exchanging information with the file servers and client computers, the information exchanged including information concerning a specified user file; a file aggregation module including: means for receiving a user request to access a subset of a specified user file, the request including a request for an opportunistic lock on the subset of the specified user file; means for accessing metadata identifying a set of file servers for storing respective defined portions of the specified user file; means for determining, based on the metadata, a subset of the file servers that store portions of the user file that together comprise the subset of the specified user file; means for sending a lock request to each file server in the subset of file servers, and receiving lock request replies from the subset of file servers; means for aggregating the received lock request replies to produce an aggregated lock reply, such that the aggregated lock reply is a lock grant only when all the received lock request replies are lock grants; means for sending the aggregated lock reply to a sender of the user request, thereby enabling the sender to cache data from the subset of the specified user file only when the aggregate lock reply is a lock grant.
- 17. A file switch for use in a computer network having a group of file servers and a plurality of client computers, the file switch comprising:
at least one processing unit for executing computer programs; at least one port for exchanging information with the file servers and client computers, the information exchanged including information concerning a specified user file; a file aggregation module including one or more computer programs, the computer programs including instructions for: receiving a user request to access a subset of a specified user file, the request including a request for an opportunistic lock on the subset of the specified user file; accessing metadata identifying a set of file servers for storing respective defined portions of the specified user file; identifying, based on the metadata, a subset of the file servers that store portions of the user file that together comprise the subset of the specified user file; sending an oplock request to each file server in the subset of file servers, and receiving oplock request replies from the subset of file servers; aggregating the received oplock request replies to produce an aggregated oplock reply, such that the aggregated oplock reply is an oplock grant only when all the received oplock request replies are oplock grants; sending the aggregated oplock reply to a sender of the user request, thereby enabling the sender to cache data from the subset of the specified user file only when the aggregate oplock reply is an oplock grant.
- 18. The file switch of claim 17, the file aggregation module further including instructions for:
receiving an oplock break from a respective file server in the set of file servers; forwarding the oplock break to the sender of the user request.
- 19. The file switch of claim 17, the file aggregation module further including instructions for:
waiting to receive an oplock break acknowledgement from the sender of the user request, and upon receiving the oplock break acknowledgement from the sender of the user request, forwarding the oplock break acknowledgement to the respective file server in the set of file servers.
- 20. The file switch of claim 17, the file aggregation module further including instructions for:
upon receiving the oplock break, disabling caching of data from the subset of the specified user file.
- 21. The file switch of claim 17, the file aggregation module further including instructions for:
upon receiving the oplock break, disabling caching, within the file switch, of data from the subset of the specified user file.
- 22. The file switch of claim 17, wherein the file switch is logically positioned between a client computer from which the user request is received and the group of file servers.
- 23. A file switch for use in a computer network having a group of file servers and a plurality of client computers, the file switch comprising:
at least one port for exchanging information with the file servers and client computers, the information exchanged including information concerning a specified user file; a file aggregation module including: means for receiving a user request to access a subset of a specified user file, the request including a request for an opportunistic lock on the subset of the specified user file; means for identifying a subset of file servers that store portions of the user file that together comprise the subset of the specified user file; means for sending an oplock request to each file server in the subset of file servers, and receiving oplock request replies from the subset of file servers; means for aggregating the received oplock request replies to produce an aggregated oplock reply, such that the aggregated oplock reply is a lock grant only when all the received oplock request replies are oplock grants; and means for sending the aggregated oplock reply to a sender of the user request, thereby enabling the sender to cache data from the subset of the specified user file only when the aggregate oplock reply is an oplock grant.
- 24. A file switch for use in a computer network having a group of file servers and a plurality of client computers, the file switch comprising:
at least one processing unit for executing computer programs; at least one port for exchanging information with the file servers and client computers, the information exchanged including information concerning a specified user file; a file aggregation module including one or more computer programs, the computer programs including instructions for:
receiving a user request to access a subset of a specified user file, the request including a request for an opportunistic lock on the subset of the specified user file; identifying a subset of file servers that store portions of the user file that together comprise the subset of the specified user file; sending an oplock request to each file server in the subset of file servers, and receiving oplock request replies from the subset of file servers; aggregating the received oplock request replies to produce an aggregated oplock reply, such that the aggregated oplock reply is an oplock grant only when all the received oplock request replies are oplock grants; and sending the aggregated oplock reply to a sender of the user request, thereby enabling the sender to cache data from the subset of the specified user file only when the aggregate oplock reply is an oplock grant.
- 25. The file switch of claim 24, the file aggregation module further including instructions for:
receiving an oplock break from a respective file server in the set of file servers; forwarding the oplock break to the sender of the user request.
- 26. The file switch of claim 24, the file aggregation module further including instructions for:
waiting to receive an oplock break acknowledgement from the sender of the user request, and upon receiving the oplock break acknowledgement from the sender of the user request, forwarding the oplock break acknowledgement to the respective file server in the set of file servers.
- 27. The file switch of claim 24, the file aggregation module further including instructions for:
upon receiving the oplock break, disabling caching of data from the subset of the specified user file.
- 28. The file switch of claim 24, the file aggregation module further including instructions for:
upon receiving the oplock break, disabling caching of data within the file switch from the subset of the specified user file.
- 29. The file switch of claim 24, wherein the file switch is logically positioned between a client computer from which the user request is received and the group of file servers.
- 30. A file switch for use in a computer network having a group of file servers and a plurality of client computers, the file switch comprising:
at least one processing unit for executing computer programs; at least one port for exchanging information with the file servers and client computers, the information exchanged including information concerning a specified user file; a file aggregation module including one or more computer programs, the computer programs including instructions for:
receiving a user request to access a subset of a specified user file; identifying a subset of file servers that store portions of the user file that together comprise the subset of the specified user file; sending an oplock request to each file server in the subset of file servers, and receiving oplock request replies from the subset of file servers; aggregating the received oplock request replies to produce an aggregated oplock reply, such that the aggregated oplock reply is an oplock grant only when all the received oplock request replies are oplock grants; and caching data from the subset of the specified user file only when the aggregate oplock reply is an oplock grant; wherein the file switch is logically positioned between a client computer from which the user request is received and the group of file servers.
- 31. The file switch of claim 30, the file aggregation module further including instructions for:
receiving an oplock break from a respective file server in the set of file servers; and disabling said caching of data from the subset of the specified user file.
- 32. The file switch of claim 30, the file aggregation module further including instructions for:
accessing a metafile that stores information identifying a set of file servers for storing respective defined portions of the specified user file; and identifying, based on the information stored in the metafile, a subset of the file servers that store portions of the user file that together comprise the subset of the specified user file.
- 33. The file switch of claim 30, wherein the user request does not include an oplock request.
- 34. A method of caching data from user files stored in shared data computer network, where each user file of at least a plurality of the user files is divided into portions stored on a plurality of file servers, among a group of file servers in a computer network, comprising:
receiving a user request to access a subset of a specified user file, wherein the request does not include a request for lock on the subset of the specified user file; identifying a subset of file servers that store portions of the user file that together comprise the subset of the specified user file; sending a lock request to each file server in the subset of file servers, and receiving lock replies from the subset of file servers; aggregating the received lock replies to produce an aggregated lock reply, such that the aggregated lock reply is a lock grant only when all the received oplock request replies are oplock grants; and only when the aggregated lock reply is a lock grant, continuing processing of the user request by performing an operation on the subset of the specified user file.
- 35. The method of claim 34, including:
when the aggregated lock reply is not a lock grant, deferring processing of the user request and then repeating performance of the lock acquisition operation at each file server in the subset of file servers.
- 36. The method of claim 34, including:
wherein the method is performed by a file switch logically positioned between a client computer from which the user request is received and the group of file servers.
- 37. The method of claim 36, wherein identifying the subset of file servers includes:
accessing a metafile that stores information identifying a set of file servers for storing respective defined portions of the specified user file; and
determining, based on the information stored in the metafile, a subset of the file servers that store portions of the user file that together comprise the subset of the specified user file.
- 38. A file switch for use in a computer network having a group of file servers and a plurality of client computers, the file switch comprising:
at least one port for exchanging information with the file servers and client computers, the information exchanged including information concerning a specified user file; a file aggregation module including: means for receiving a user request to access a subset of a specified user file, wherein the request does not include a request for lock on the subset of the specified user file; means for identifying a subset of file servers that store portions of the user file that together comprise the subset of the specified user file; means for sending a lock request to each file server in the subset of file servers, and receiving lock replies from the subset of file servers; means for aggregating the received lock replies to produce an aggregated lock reply, such that the aggregated lock reply is a lock grant only when all the received oplock request replies are oplock grants; and means, operative only when the aggregated lock reply is a lock grant, for continuing processing of the user request by performing an operation on the subset of the specified user file.
- 39. A file switch for use in a computer network having a group of file servers and a plurality of client computers, the file switch comprising:
at least one processing unit for executing computer programs; at least one port for exchanging information with the file servers and client computers, the information exchanged including information concerning a specified user file; a file aggregation module including one or more computer programs, the computer programs including instructions for: receiving a user request to access a subset of a specified user file, wherein the request does not include a request for lock on the subset of the specified user file; identifying a subset of file servers that store portions of the user file that together comprise the subset of the specified user file; sending a lock request to each file server in the subset of file servers, and receiving lock replies from the subset of file servers; aggregating the received lock replies to produce an aggregated lock reply, such that the aggregated lock reply is a lock grant only when all the received oplock request replies are oplock grants; and only when the aggregated lock reply is a lock grant, continuing processing of the user request by performing an operation on the subset of the specified user file.
- 40. The file server of claim 39, the file aggregation module further including instructions for:
when the aggregated lock reply is not a lock grant, deferring processing of the user request and then repeating performance of the lock acquisition operation at each file server in the subset of file servers.
- 41. The file server of claim 39, wherein the method is performed by a file switch logically positioned between a client computer from which the user request is received and the group of file servers.
- 42. The file server of claim 39, wherein the instructions for identifying the subset of file servers includes instructions for:
accessing a metafile that stores information identifying a set of file servers for storing respective defined portions of the specified user file; and determining, based on the information stored in the metafile, a subset of the file servers that store portions of the user file that together comprise the subset of the specified user file.
- 43. A system for use in a computer network having a plurality of client computers, the system comprising:
a group of file servers; a file switch, the file switch including: at least one port for exchanging information with the file servers and client computers, the information exchanged including information concerning a specified user file; at least one processing unit for executing computer programs; a file aggregation module including one or more computer programs, the computer programs including instructions for:
receiving a user request to access a subset of a specified user file, the request including a request for an opportunistic lock on the subset of the specified user file; accessing metadata identifying a set of file servers for storing respective defined portions of the specified user file; identifying, based on the metadata, a subset of the file servers that store portions of the user file that together comprise the subset of the specified user file; sending an oplock request to each file server in the subset of file servers, and receiving oplock request replies from the subset of file servers; aggregating the received oplock request replies to produce an aggregated oplock reply, such that the aggregated oplock reply is an oplock grant only when all the received oplock request replies are oplock grants; sending the aggregated oplock reply to a sender of the user request, thereby enabling the sender to cache data from the subset of the specified user file only when the aggregate oplock reply is an oplock grant.
- 44. The system of claim 43, the file aggregation module further including instructions for:
receiving an oplock break from a respective file server in the set of file servers; forwarding the oplock break to the sender of the user request.
- 45. The system of claim 43, the file aggregation module further including instructions for:
waiting to receive an oplock break acknowledgement from the sender of the user request, and upon receiving the oplock break acknowledgement from the sender of the user request, forwarding the oplock break acknowledgement to the respective file server in the set of file servers.
- 46. The system of claim 43, the file aggregation module further including instructions for:
upon receiving the oplock break, disabling caching of data from the subset of the specified user file.
- 47. The system of claim 43, the file aggregation module further including instructions for:
upon receiving the oplock break, disabling caching, within the file switch, of data from the subset of the specified user file.
- 48. The system of claim 43, wherein the file switch is logically positioned between a client computer from which the user request is received and the group of file servers.
- 49. A system for use in a computer network having a plurality of client computers, the system comprising:
a group of file servers; a file switch, the file switch including: at least one port for exchanging information with the file servers and client computers, the information exchanged including information concerning a specified user file; means for receiving a user request to access a subset of a specified user file, the request including a request for an opportunistic lock on the subset of the specified user file; means for identifying a subset of file servers that store portions of the user file that together comprise the subset of the specified user file; means for sending an oplock request to each file server in the subset of file servers, and receiving oplock request replies from the subset of file servers; means for aggregating the received oplock request replies to produce an aggregated oplock reply, such that the aggregated oplock reply is a lock grant only when all the received lock request replies are oplock grants; and means for sending the aggregated oplock reply to a sender of the user request, thereby enabling the sender to cache data from the subset of the specified user file only when the aggregate lock reply is an oplock grant.
- 50. A system for use in a computer network having a plurality of client computers, the system comprising:
a group of file servers; a file switch, the file switch including: at least one port for exchanging information with the file servers and client computers, the information exchanged including information concerning a specified user file; at least one processing unit for executing computer programs; a file aggregation module including one or more computer programs, the computer programs including instructions for:
receiving a user request to access a subset of a specified user file, the request including a request for an opportunistic lock on the subset of the specified user file; identifying a subset of file servers that store portions of the user file that together comprise the subset of the specified user file; sending an oplock request to each file server in the subset of file servers, and receiving oplock request replies from the subset of file servers; aggregating the received oplock request replies to produce an aggregated oplock reply, such that the aggregated oplock reply is an oplock grant only when all the received oplock request replies are oplock grants; and sending the aggregated oplock reply to a sender of the user request, thereby enabling the sender to cache data from the subset of the specified user file only when the aggregate oplock reply is an oplock grant.
- 51. The system of claim 50, the file aggregation module further including instructions for:
receiving an oplock break from a respective file server in the set of file servers; forwarding the oplock break to the sender of the user request.
- 52. The system of claim 50, the file aggregation module further including instructions for:
waiting to receive an oplock break acknowledgement from the sender of the user request, and upon receiving the oplock break acknowledgement from the sender of the user request, forwarding the oplock break acknowledgement to the respective file server in the set of file servers.
- 53. The system of claim 50, the file aggregation module further including instructions for:
upon receiving the oplock break, disabling caching of data from the subset of the specified user file.
- 54. The system of claim 50, the file aggregation module further including instructions for:
upon receiving the oplock break, disabling caching of data within the file switch from the subset of the specified user file.
- 55. The system of claim 50, wherein the file switch is logically positioned between a client computer from which the user request is received and the group of file servers.
- 56. A system for use in a computer network having a plurality of client computers, the system comprising:
a group of file servers; a file switch, the file switch including: at least one port for exchanging information with the file servers and client computers, the information exchanged including information concerning a specified user file; at least one processing unit for executing computer programs; a file aggregation module including one or more computer programs, the computer programs including instructions for:
receiving a user request to access a subset of a specified user file; identifying a subset of file servers that store portions of the user file that together comprise the subset of the specified user file; sending an oplock request to each file server in the subset of file servers, and receiving oplock request replies from the subset of file servers; aggregating the received oplock request replies to produce an aggregated oplock reply, such that the aggregated oplock reply is an oplock grant only when all the received oplock request replies are oplock grants; and caching data from the subset of the specified user file only when the aggregate oplock reply is an oplock grant; wherein the file switch is logically positioned between a client computer from which the user request is received and the group of file servers.
- 57. The system of claim 56, the file aggregation module further including instructions for:
receiving an oplock break from a respective file server in the set of file servers; and disabling said caching of data from the subset of the specified user file.
- 58. The system of claim 56, the file aggregation module further including instructions for:
accessing a metafile that stores information identifying a set of file servers for storing respective defined portions of the specified user file; and identifying, based on the information stored in the metafile, a subset of the file servers that store portions of the user file that together comprise the subset of the specified user file.
- 59. The system of claim 56, wherein the user request does not include an oplock request.
RELATED APPLICATIONS
[0001] This application claims priority from U.S. patent application Ser. No. 10/043,413, entitled File Switch and Switched File System, filed Jan. 10, 2002, and U.S. Provisional Patent Application No. 60/261,153, entitled FILE SWITCH AND SWITCHED FILE SYSTEM and filed Jan. 11, 2001, both of which are incorporated herein by reference.
[0002] This application is furthermore related to the following applications, each of which is filed on the same date as this application and is hereby incorporated by reference in its entirety: Transaction Aggregation in a Switched File System, attorney docket 11187-0004-999; Directory Aggregation for Files Distributed Over A Plurality of Servers in a Switched File System, attorney docket 11187-0005-999; Metadata Based File Switch And Switched File, attorney docket 11187-0006-999; Rule Based Aggregation of Files and Transactions in a Switched File System, attorney docket 11187-007-999; and Aggregated Lock Management for Locking Aggregated Files in a Switched File System, attorney docket 11187-008-999.