Claims
- 1. A method of processing a user request to perform an operation on a user file, comprising:
receiving one or more user requests to perform a specified operation on a specified user file; selecting, from among a group of rules, a rule applicable to the specified user file; each rule in the group of rules including at least one parameter specifying, for files to which the rule is applicable, how to distribute storage of each such file over the file servers in a group of file servers; and performing the specified operation in accordance with the selected rule, including, when the specified operation changes the size of the specified user file, sending commands to a plurality of the file servers so as to continue to distribute storage of the specified user file in accordance with the selected rule.
- 2. The method of claim 1, the performing step including updating storage of the user file over the group of file servers in accordance with the selected rule.
- 3. A method of processing a user request to perform an operation on a user file, comprising:
receiving one or more user requests to perform a specified operation on a specified user file; selecting, from among a group of rules, a rule applicable to the specified user file; each rule in the group of rules including a striping parameter specifying, for files to which the rule is applicable, a maximum size of file portions into which the files are divided, and a mirroring parameter specifying, for files to which the rule is applicable, a number of instances of each file portion are to be stored on file servers in a group of file servers; and performing the specified operation in accordance with the selected rule, including:
when the specified operation increases the size of the specified user file by more than the maximum file portion size specified by the selected rule, adding one or more file portions to the user file, including creating and storing on the group of file servers the specified number of instances of each added file portion, each created file portion instance having a size no greater than the maximum file portion size specified by the selected rule.
- 4. The method of claim 3, including
storing in a metadata file, separate from the file portion instances in which the specified user file is stored, data identifying a respective file server on which is stored each file portion instance of the specified user file.
- 5. The method of claim 4, including
when the specified operation accesses data previously stored within the specified user file, generating an index value corresponding to a location to be accessed within the specified user file divided by the maximum file portion size specified by the selected rule, accessing the metafile using the generated index value to identify the file server on which is stored a file portion instance containing the location to be accessed within the specified user file, and then accessing said file portion instance on the identified file server.
- 6. The method of claim 3, including
when the specified operation accesses data previously stored within the specified user file, generating an index value corresponding to a location to be accessed within the specified user file divided by the maximum file portion size specified by the selected rule, and then accessing a file portion instance of the specified user file corresponding to the generated index value.
- 7. The method of claim 3, including
when the specified operation accesses data previously stored within the specified user file, generating a set of index values in accordance with the selected rule, the set of index values corresponding to a range of locations to be accessed within the specified user file, and then accessing a set of file portion instances of the specified user file corresponding to the generated set of index values.
- 8. The method of claim 3, wherein each rule in the group of rules has an associated set of files to which the rule is applicable, wherein the set of files for a particular rule in the group of rules is specified by a specification selected from the group consisting essentially of A) files having a file path matching a specified file path, B) files of a specified file type.
- 9. The method of claim 3, wherein the rules in the group of rules are ordered, and each rule in the group of rules has an associated range of files to which the rule is applicable, wherein the range of files for a particular rule in the group of rules is specified by a specification selected from the group consisting essentially of A) files not falling within the range of any higher order rule and having a file path matching a specified file path, B) files not falling within the range of any higher order rule and comprising a file of a specified file type, C) files not falling within the range of any higher order rule and having a specified owner.
- 10. The method of claim 3, wherein
each rule in the group of rules includes a caching parameter specifying, for files to which the rule is applicable, a maximum cache size for caching portions of any particular file to which the rule is applicable; and when caching data retrieved from or written to the specified user file, caching no more data than specified by the caching parameter specified by the selected rule.
- 11. The method of claim 3, wherein
each rule in the group of rules includes a read ahead caching parameter specifying whether read ahead caching is enabled for files to which the rule is applicable; and when retrieved data from the specified user file, performing read ahead caching only if read ahead caching is enabled by the read ahead caching parameter specified by the selected rule.
- 12. The method of claim 3, including identifying a subset of the specified user file on which to perform the specified operation; and
wherein performing the specified operation includes: accessing a metafile that stores information identifying a set of file servers for storing the respective file portion instances of the specified user file; and when the specified operation accesses data previously stored within the specified user file, determining, based on the information stored in the metafile, a subset of the file servers that store an instance of each of the portions of the user file that together comprise the identified subset of the specified user file.
- 13. The method of claim 12, wherein accessing a metafile comprises accessing a cached information from the metafile.
- 14. 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 one or more user requests to perform a specified operation on a specified user file; selecting, from among a group of rules, a rule applicable to the specified user file; each rule in the group of rules including at least one parameter specifying, for files to which the rule is applicable, how to distribute storage of each such file over the file servers in a group of file servers; and performing the specified operation in accordance with the selected rule, including, when the specified operation changes the size of the specified user file, sending commands to a plurality of the file servers so as to continue to distribute storage of the specified user file in accordance with the selected rule.
- 15. The file switch of claim 14, the instructions for performing including instructions for updating storage of the user file over the group of file servers in accordance with the selected rule.
- 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 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 one or more user requests to perform a specified operation on a specified user file; selecting, from among a group of rules, a rule applicable to the specified user file; each rule in the group of rules including a striping parameter specifying, for files to which the rule is applicable, a maximum size of file portions into which the files are divided, and a mirroring parameter specifying, for files to which the rule is applicable, a number of instances of each file portion are to be stored on file servers in the group of file servers; and performing the specified operation in accordance with the selected rule, including:
when the specified operation increases the size of the specified user file by more than the maximum file portion size specified by the selected rule, adding one or more file portions to the user file, including creating and storing on the group of file servers the specified number of instances of each added file portion, each created file portion instance having a size no greater than the maximum file portion size specified by the selected rule.
- 17. The file switch of claim 16, wherein the one or more computer programs of the file aggregation module include instructions for:
storing in a metadata file, separate from the file portion instances in which the specified user file is stored, data identifying a respective file server on which is stored each file portion instance of the specified user file.
- 18. The file switch of claim 17, wherein the one or more computer programs of the file aggregation module include instructions for:
when the specified operation accesses data previously stored within the specified user file, generating an index value corresponding to a location to be accessed within the specified user file divided by the maximum file portion size specified by the selected rule, accessing the metafile using the generated index value to identify the file server on which is stored a file portion instance containing the location to be accessed within the specified user file, and then accessing said file portion instance on the identified file server.
- 19. The file switch of claim 16, wherein the one or more computer programs of the file aggregation module include instructions for:
when the specified operation accesses data previously stored within the specified user file, generating an index value corresponding to a location to be accessed within the specified user file divided by the maximum file portion size specified by the selected rule, and then accessing a file portion instance of the specified user file corresponding to the generated index value.
- 20. The file switch of claim 16, wherein the one or more computer programs of the file aggregation module include instructions for:
when the specified operation accesses data previously stored within the specified user file, generating a set of index values in accordance with the selected rule, the set of index value corresponding to a range of locations to be accessed within the specified user file, and then accessing a set of file portion instances of the specified user file corresponding to the generated set of index values.
- 21. The file switch of claim 16, wherein each rule in the group of rules has an associated set of files to which the rule is applicable, wherein the set of files for a particular rule in the group of rules is specified by a specification selected from the group consisting essentially of A) files having a file path matching a specified file path, B) files of a specified file type.
- 22. The file switch of claim 16, wherein the rules in the group of rules are ordered, and each rule in the group of rules has an associated range of files to which the rule is applicable, wherein the range of files for a particular rule in the group of rules is specified by a specification selected from the group consisting essentially of A) files not falling within the range of any higher order rule and having a file path matching a specified file path, B) files not falling within the range of any higher order rule and comprising a file of a specified file type, C) files not falling within the range of any higher order rule and having a specified owner.
- 23. The file switch of claim 16, wherein
each rule in the group of rules includes a caching parameter specifying, for files to which the rule is applicable, a maximum cache size for caching portions of any particular file to which the rule is applicable; and the one or more computer programs of the file aggregation module include instructions for caching no more data than specified by the caching parameter specified by the selected rule when caching data retrieved from or written to the specified user file.
- 24. The file switch of claim 16, wherein
each rule in the group of rules includes a read ahead caching parameter specifying whether read ahead caching is enabled for files to which the rule is applicable; and the one or more computer programs of the file aggregation module include instructions for performing read ahead caching, when retrieving data from the specified user file, only if read ahead caching is enabled by the read ahead caching parameter specified by the selected rule.
- 25. The file switch of claim 16, wherein
the one or more computer programs of the file aggregation module include instructions for including identifying a subset of the specified user file on which to perform the specified operation; and the instructions for performing the specified operation include instruction for:
accessing a metafile that stores information identifying a set of file servers for storing the respective file portion instances of the specified user file; and when the specified operation accesses data previously stored within the specified user file, determining, based on the information stored in the metafile, a subset of the file servers that store an instance of each of the portions of the user file that together comprise the subset of the specified user file.
- 26. The file switch of claim 25, wherein the instructions for accessing a metafile comprise instructions for accessing cached information from the metafile.
- 27. 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 one or more user requests to perform a specified transaction on a specified user file; means for selecting, from among a group of rules, a rule applicable to the specified user file; each rule in the group of rules including at least one parameter specifying, for files to which the rule is applicable, how to distribute storage of each such file over the file servers in a group of file servers; and means for performing the specified operation in accordance with the selected rule, including, when the specified operation changes the size of the specified user file, sending commands to a plurality of the file servers so as to continue to distribute storage of the specified user file in accordance with the selected rule.
- 28. The system of claim 27, the means for performing including means for updating storage of the user file over the group of file servers in accordance with the selected rule.
- 29. A system for use in a computer network having a plurality of client computers, the file switch 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 one or more user requests to perform a specified transaction on a specified user file; means for selecting, from among a group of rules, a rule applicable to the specified user file; each rule in the group of rules including a striping parameter specifying, for files to which the rule is applicable, a maximum size of file portions into which the files are divided, and a mirroring parameter specifying, for files to which the rule is applicable, a number of instances of each file portion are to be stored on file servers in a group of file servers; and means performing the specified operation in accordance with the selected rule, including, when the specified operation increases the size of the specified user file by more than the maximum file portion size specified by the selected rule, adding one or more file portions to the user file, including creating and storing on the group of file servers the specified number of instances of each added file portion, each created file portion instance having a size no greater than the maximum file portion size specified by the selected rule.
- 30. The system of claim 29, including
means for storing in a metadata file, separate from the file portion instances in which the specified user file is stored, data identifying a respective file server on which is stored each file portion instance of the specified user file.
- 31. The system of claim 29, wherein the means for performing includes means, operative when the specified operation accesses data previously stored within the specified user file, for generating an index value corresponding to a location to be accessed within the specified user file divided by the maximum file portion size specified by the selected rule, accessing the metafile using the generated index value to identify the file server on which is stored a file portion instance containing the location to be accessed within the specified user file, and then accessing said file portion instance on the identified file server.
- 32. The system of claim 29, wherein the means for performing includes means, operative when the specified operation accesses data previously stored within the specified user file, for generating an index value corresponding to a location to be accessed within the specified user file divided by the maximum file portion size specified by the selected rule, and then accessing a file portion instance of the specified user file corresponding to the generated index value.
- 33. The system of claim 29, wherein the means for performing includes means, operative when the specified operation accesses data previously stored within the specified user file, for generating a set of index values in accordance with the selected rule, the set of index values corresponding to a range of locations to be accessed within the specified user file, and then accessing a set of file portion instances of the specified user file corresponding to the generated set of index values.
- 34. The system of claim 29, wherein each rule in the group of rules has an associated set of files to which the rule is applicable, wherein the set of files for a particular rule in the group of rules is specified by a specification selected from the group consisting essentially of A) files having a file path matching a specified file path, B) files of a specified file type.
- 35. The system of claim 29, wherein the rules in the group of rules are ordered, and each rule in the group of rules has an associated range of files to which the rule is applicable, wherein the range of files for a particular rule in the group of rules is specified by a specification selected from the group consisting essentially of A) files not falling within the range of any higher order rule and having a file path matching a specified file path, B) files not falling within the range of any higher order rule and comprising a file of a specified file type, C) files not falling within the range of any higher order rule and having a specified owner.
- 36. The system of claim 29, wherein
each rule in the group of rules includes a caching parameter specifying, for files to which the rule is applicable, a maximum cache size for caching portions of any particular file to which the rule is applicable; the file switch including caching means for caching data retrieved from or written to the specified user file, the caching means including means for caching no more data than specified by the caching parameter specified by the selected rule.
- 37. The system of claim 29, wherein
each rule in the group of rules includes a read ahead caching parameter specifying whether read ahead caching is enabled for files to which the rule is applicable; and when retrieved data from the specified user file, performing read ahead caching only if read ahead caching is enabled by the read ahead caching parameter specified by the selected rule.
- 38. The system of claim 29, the file switch including means for identifying a subset of the specified user file on which to perform the specified operation;
wherein the means for performing the specified operation includes:
means for accessing a metafile that stores information identifying a set of file servers for storing the respective file portion instances of the specified user file; and means, operative when the specified operation accesses data previously stored within the specified user file, for determining, based on the information stored in the metafile, a subset of the file servers that store an instance of each of the portions of the user file that together comprise the identified subset of the specified user file.
- 39. The system of claim 29, wherein the means for accessing a metafile comprises means for accessing a cached information from the metafile.
- 40. 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 one or more user requests to perform a specified operation on a specified user file; selecting, from among a group of rules, a rule applicable to the specified user file; each rule in the group of rules including at least one parameter specifying, for files to which the rule is applicable, how to distribute storage of each such file over the file servers in a group of file servers; and performing the specified operation in accordance with the selected rule, including, when the specified operation changes the size of the specified user file, sending commands to a plurality of the file servers so as to continue to distribute storage of the specified user file in accordance with the selected rule.
- 41. The system of claim 40, the instructions for performing including instructions for updating storage of the user file over the group of file servers in accordance with the selected rule.
- 42. 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 one or more user requests to perform a specified operation on a specified user file; selecting, from among a group of rules, a rule applicable to the specified user file; each rule in the group of rules including a striping parameter specifying, for files to which the rule is applicable, a maximum size of file portions into which the files are divided, and a mirroring parameter specifying, for files to which the rule is applicable, a number of instances of each file portion are to be stored on file servers in the group of file servers; and performing the specified operation in accordance with the selected rule, including:
when the specified operation increases the size of the specified user file by more than the maximum file portion size specified by the selected rule, adding one or more file portions to the user file, including creating and storing on the group of file servers the specified number of instances of each added file portion, each created file portion instance having a size no greater than the maximum file portion size specified by the selected rule.
- 43. The system of claim 42, wherein the one or more computer programs of the file aggregation module include instructions for:
storing in a metadata file, separate from the file portion instances in which the specified user file is stored, data identifying a respective file server on which is stored each file portion instance of the specified user file.
- 44. The system of claim 43, wherein the one or more computer programs of the file aggregation module include instructions for:
when the specified operation accesses data previously stored within the specified user file, generating an index value corresponding to a location to be accessed within the specified user file divided by the maximum file portion size specified by the selected rule, accessing the metafile using the generated index value to identify the file server on which is stored a file portion instance containing the location to be accessed within the specified user file, and then accessing said file portion instance on the identified file server.
- 45. The system of claim 42, wherein the one or more computer programs of the file aggregation module include instructions for:
when the specified operation accesses data previously stored within the specified user file, generating an index value corresponding to a location to be accessed within the specified user file divided by the maximum file portion size specified by the selected rule, and then accessing a file portion instance of the specified user file corresponding to the generated index value.
- 46. The system of claim 42, wherein the one or more computer programs of the file aggregation module include instructions for:
when the specified operation accesses data previously stored within the specified user file, generating a set of index values in accordance with the selected rule, the set of index value corresponding to a range of locations to be accessed within the specified user file, and then accessing a set of file portion instances of the specified user file corresponding to the generated set of index values.
- 47. The system of claim 42, wherein each rule in the group of rules has an associated set of files to which the rule is applicable, wherein the set of files for a particular rule in the group of rules is specified by a specification selected from the group consisting essentially of A) files having a file path matching a specified file path, B) files of a specified file type.
- 48. The system of claim 42, wherein the rules in the group of rules are ordered, and each rule in the group of rules has an associated range of files to which the rule is applicable, wherein the range of files for a particular rule in the group of rules is specified by a specification selected from the group consisting essentially of A) files not falling within the range of any higher order rule and having a file path matching a specified file path, B) files not falling within the range of any higher order rule and comprising a file of a specified file type, C) files not falling within the range of any higher order rule and having a specified owner.
- 49. The system of claim 42, wherein
each rule in the group of rules includes a caching parameter specifying, for files to which the rule is applicable, a maximum cache size for caching portions of any particular file to which the rule is applicable; and the one or more computer programs of the file aggregation module include instructions for caching no more data than specified by the caching parameter specified by the selected rule when caching data retrieved from or written to the specified user file.
- 50. The system of claim 42, wherein
each rule in the group of rules includes a read ahead caching parameter specifying whether read ahead caching is enabled for files to which the rule is applicable; and the one or more computer programs of the file aggregation module include instructions for performing read ahead caching, when retrieving data from the specified user file, only if read ahead caching is enabled by the read ahead caching parameter specified by the selected rule.
- 51. The system of claim 42, wherein
the one or more computer programs of the file aggregation module include instructions for including identifying a subset of the specified user file on which to perform the specified operation; and the instructions for performing the specified operation include instruction for:
accessing a metafile that stores information identifying a set of file servers for storing the respective file portion instances of the specified user file; and when the specified operation accesses data previously stored within the specified user file, determining, based on the information stored in the metafile, a subset of the file servers that store an instance of each of the portions of the user file that together comprise the subset of the specified user file.
- 52. The system of claim 51, wherein the instructions for accessing a metafile comprise instructions for accessing cached information from the metafile.
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; Aggregated Lock Management for Locking Aggregated Files in a Switched File System, attorney docket 11187-008-999; and Aggregated Opportunistic Lock and Aggregated Implicit Lock Management for Locking Aggregated Files in a Switched File System, attorney docket 11187-009-999.