IP Library Granted Patent US 7,383,288
Granted Patent B2
US 7,383,288 · App. 10/336,835 · Granted Jun 3, 2008

Metadata based file switch and switched file system

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,383,288
App. No.
10/336,835
Granted
Jun 3, 2008
Kind
B2
Abstract

An apparatus and method are provided in a computer network to decouple client computers from file servers, by placing a transparent network node, also termed a file switch or file switch computer, between the client computers and the file servers. Usage of such a file switch allows reduced latency in file transfers, as well as scalable mirroring, striping, spillover, and other features. The file switch preferably includes at least one processing unit for executing computer programs, at least one port for exchanging information with the file servers and client computers, and a file aggregation module. The file aggregation module includes computer programs for determining a set of file servers from the group of file servers for storing a specified user file, creating a metadata file storing information identifying the set of file servers for storing the user file; and updating directory structures on the set of file servers to indicate storage of the user file.

Claims (121)

1. A method for determining storage locations of a user file in a group of file servers in a computer network, wherein a plurality of client computers are coupled to the group of file servers through a file switch, the method comprising:

determining at the file switch a set of file servers from the group of file servers for storing the user file;

under control of the file switch, creating a metafile corresponding to the user file, the metafile storing information identifying the set of file servers for storing the user file; and

under control of the file switch, updating directory structures on the set of file servers to indicate storage of the user file.

2. The method of claim 1 , including storing a plurality of copies of the metafile on a corresponding plurality of the file servers in the group of file servers.

3. The method of claim 1 , including mapping a file path of the user file into a determined file path for the metafile in the group of file servers and storing the metafile at a directory location in a file server in the group of file servers, the directory location corresponding to the determined file path.

4. The method of claim 1 , including

dividing the user file into portions;

storing user file portions in a plurality of data files that are stored on the set of file servers;

assigning each data file in the plurality of data files a respective unique identifier; and determining a respective file path for each data file in the plurality of data files that based at least in part on the unique identifier;

the storing including storing each data file at a directory location in a file servers of the set of file server, the directory location corresponding to the respective file path determined for the data file.

5. The method of claim 4 , wherein the file path for each data file in the plurality of data files includes a plurality of directory levels whose identities are functions of the respective unique identifier determined for the data file.

6. The method of claim 1 , wherein

the user file is striped and mirrored in accordance with a predefined set of aggregation rules;

the metafile identifies at least one file server for storing each stripe of the user file and identifies at least one file server for storing each mirror of the user file.

7. The method of claim 1 , wherein

the user file is striped and mirrored in accordance with a predefined set of aggregation rules;

the metafile includes a multidimensional array of information identifying file servers within the set of file servers, a first dimension of the multidimensional array of information corresponding to stripes of the user file, and a second dimension of the multidimensional array of information corresponding to mirrors of the user file.

8. The method of claim 7 , wherein the metafile storage location information for data files that together comprise the user file, each data file corresponding to a particular stripe and a particular mirror of the user file; the storage location information indicating the file server on which each of the data files is stored;

the method including, when adding information to a data file for a last stripe of the user file, and the file server on which the data file is stored becomes full, continuing storage of the last stripe of the user file in a spillover file stored on a different file server in the group of file servers, the spillover file comprising one of the data files that together comprise the user file.

9. The method of claim 1 , including:

mapping a file request with respect to the user file into a plurality of file requests directed to a plurality of the file servers in the set of file servers, the mapping including reading at least a subset of the information from the metafile to determine the plurality of file servers.

10. The method of claim 9 , wherein

the user file is striped and mirrored in accordance with the predefined set of aggregation rules; and

the mapping includes applying a load balancing procedure for selecting a mirror of a plurality of mirrors of the user file to which to map the file request.

11. The method of claim 10 , wherein the load balancing procedure is a round robin allocation procedure.

12. The method of claim 9 , wherein the mapping includes:

emulating a unified file server when responding to the file request; and

emulating at least one client when sending the plurality of file requests to the plurality of file servers.

13. 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 instruction for:

determining a set of file servers from the group of file servers for storing the user file;

creating a metafile corresoonding to the user file, the metafile storing information identifying the set of file servers for storing the user file; and

updating structures on the set of file servers to indicate storage of the user file.

14. The file switch of claim 13 , wherein the computer programs of the file aggregation module include instruction for storing a plurality of copies of the metafile on a corresponding plurality of the file servers in the group of file servers.

15. The file switch of claim 13 , wherein the computer programs of the file aggregation module include instructions for:

mapping a file path of the user file into a determined file path for the metafile in the group of file servers and storing the metafile at a directory location in a file server in the group of file servers, the directory location corresponding to the determined file path.

16. The file switch of claim 15 , wherein the computer programs of the file aggregation module include instructions for:

dividing the user file into portions;

storing the user file portions in a plurality of data files that are stored on the set of file servers;

assigning each data file in the plurality of data files a respective unique identifier; and determining a respective file path for each data file in the plurality of data files that is based at least in part on the unique identifier;

the storing including storing each data file at a directory location in a file server of the set of file servers, the directory location corresponding to the respective file path determined for the data file.

17. The file switch of claim 16 , wherein the file path for each data file in the plurality of data files includes a plurality of directory levels whose identities are functions of the respective unique identifier determined for the data file.

18. The file switch of claim 13 , wherein

the computer programs of the file aggregation module include instructions for striping and mirroring the user file in accordance with a predefined set of aggregation rules; and

the metafile identifies at least one file server for storing each stripe of the user file and identifies at least one file server for storing each mirror of the user file.

19. The file switch of claim 13 , wherein the computer programs of the file aggregation module include instructions for striping and mirroring the user file in accordance with a predefined set of aggregation rules; and

the metafile includes a multidimensional array of information identifying file servers within the set of file servers, a first dimension of the multidimensional array of information corresponding to stripes of the user file, and a second dimension of the multidimensional array of information corresponding to mirrors of the user file.

20. The file switch of claim 19 , wherein a third dimension of the multidimensional array of information corresponds to spillovers of the user file.

21. The file switch of claim 13 , wherein the computer programs of the file aggregation module include instructions for mapping a file request with respect to the user file into a plurality of file requests directed to a plurality of the file servers in the set of file servers, the mapping including reading at least a subset of the information from the metafile to determine the plurality of file servers.

22. The file switch of claim 21 , wherein

the computer programs of the file aggregation module includes instructions for striping and mirroring the user file in accordance with a predefined set of aggregation rules; and

the instructions for mapping a file request include instructions for applying a load balancing procedure for selecting a mirror of a plurality of mirrors of the user file to which to map the file request.

23. The file switch of claim 22 , wherein the load balancing procedure is a round robin allocation procedure.

24. The file switch of claim 21 , wherein the instructions for mapping a file request include instructions for:

emulating a unified file server when responding to the file request; and

emulating at least one client when sending the plurality of file requests to the plurality of file servers.

25. The file switch of claim 13 ; wherein

the at least one port includes:

at least a first network interface port for exchanging information with the file servers; and

at least a second network interface port for exchanging information with the client computers;

the file aggregation module includes:

a first module coupled with the first network interface port for exchanging information with the file servers:

a second module coupled to the second network interface port for exchanging information with the client computers; and

a third module logically coupled between the first module and the second module and providing file aggregation services to the file switch.

26. 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;

means for determining a set of file servers from the group of file servers for storing the user file;

means for creating a metafile corresponding to the user file, the metafile storing information identifying the set of file servers for storing the user file; and

means for updating directory structures on the set of file servers to indicate storage of the user file.

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;

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:

determining a set of file servers from the group of file servers for storing the user file;

creating a metafile corresponding to the user file, the metafile storing information identifying the set of file servers for storing the user file; and

updating directory structures on the set of file servers to indicate storage of the user file.

28. The system of claim 27 , wherein the computer programs of the file aggregation module include instructions for storing a plurality of copies of the metafile on a corresponding plurality of the file servers in the group of file servers.

29. The system of claim 27 , wherein the computer programs of the file aggregation module include instructions for:

mapping a file path of the user file into a determined file path for the metafile in the group of file servers and storing the metafile at a directory location in a file server in the group of file servers, the directory location corresponding to the determined file path.

30. The system of claim 29 , wherein the computer programs of the file aggregation module include instructions for:

dividing the user file into portions;

storing the user file portions in a plurality of data files that are stored on the set of file servers;

assigning each data file in the plurality of data files a respective unique identifier; and

determining a respective file path for each data file in the plurality of data files that based at least in part on the unique identifier;

the storing including storing each data file at a directory location in a file server of the set of file servers, the directory location corresponding to the respective file path determined for the data file.

31. The system of claim 30 , wherein the file path for each data file in the plurality of data files includes a plurality of directory levels whose identities are functions of the respective unique identifier determined for the data file.

32. The system of claim 27 , wherein

the computer programs of the file aggregation module include instructions for striping and mirroring the user file in accordance with a predefined set of aggregation rules; and

the metafile identifies at least one file server for storing each stripe of the user file and identifies at least one file server for storing each mirror of the user file.

33. The system of claim 27 , wherein

the computer programs of the file aggregation module include instructions for striping and mirroring the user file in accordance with a predefined set of aggregation rules; and

the metafile includes a multidimensional array of information identifying file servers within the set of file servers, a first dimension of the multidimensional array of information corresponding to stripes of the user file, and a second dimension of the multidimensional array of information corresponding to mirrors of the user file.

34. The system of claim 33 , wherein a third dimension of the multidimensional array of information corresponds to spillovers of the user file.

35. The system of claim 27 , wherein the computer programs of the file aggregation module include instructions for mapping a file request with respect to the user file into a plurality of file requests directed to a plurality of the file servers in the set of file servers, the mapping including reading at least a subset of the information from the metafile to determine the plurality of file servers.

36. The system of claim 35 , wherein

the computer programs of the file aggregation module include instructions for striping and mirroring the user file in accordance with a predefined set of aggregation rules; and

the instructions for mapping a file request include instructions for applying a load balancing procedure for selecting a mirror of a plurality of mirrors of the user file to which to map the file request.

37. The system of claim 36 , wherein the load balancing procedure is round robin allocation procedure.

38. The system of claim 35 , wherein the instructions for mapping a file request include instructions for:

emulating a unified file server when responding to the file request; and

emulating at least one client when sending the plurality of file requests to the plurality of file servers.

39. The system of claim 27 , wherein

the at least one port includes:

at least a first network interface port for exchanging information with the file servers; and

at least a second network interface port for exchanging information with the client computers;

the file aggregation module includes:

a first module coupled to the first network interface port for exchanging information with the file servers;

a second module coupled to the second network interface port for exchanging information with the client computers; and

a third module logically coupled between the first module and the second module and providing file aggregation services to the file switch.

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;

means for determining a set of file servers from the group of file servers for storing the user file;

means for creating a metafile corresponding to the user file, the metafile storing information identifying the set of file servers for storing the user file; and

means for updating directory structures on the set of file servers to indicate storage of the user file.

Assignments (10)
RELEASE OF SECURITY INTEREST Recorded Oct 26, 2020
From: JEFFERIES FINANCE LLC
To: RPX CORPORATION
Reel/Frame 054486/0422 →
PATENT SECURITY AGREEMENT Recorded Oct 23, 2020
From: RPX CLEARINGHOUSE LLC; RPX CORPORATION
To: BARINGS FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 054198/0029 →
PATENT SECURITY AGREEMENT Recorded Oct 23, 2020
From: RPX CLEARINGHOUSE LLC; RPX CORPORATION
To: BARINGS FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 054244/0566 →
SECURITY INTEREST Recorded Dec 13, 2018
From: RPX CORPORATION
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 048432/0260 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 24, 2018
From: F5 NETWORKS, INC
To: RPX CORPORATION
Reel/Frame 046950/0480 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 20, 2009
From: ATTUNE SYSTEMS, INC.
To: F5 NETWORKS, INC.
Reel/Frame 022562/0397 →
CHANGE OF NAME Recorded Nov 15, 2005
From: Z-FORCE COMMUNICATIONS, INC.
To: ATTUNE SYSTEMS, INC.
Reel/Frame 016769/0861 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2005
From: MILOUSHEV, VLADIMIR; NICKOLOV, PETER
To: Z-FORCE COMMUNICATIONS, INC.
Reel/Frame 016775/0604 →
GRANT OF PATENT SECURITY INTEREST Recorded Oct 4, 2004
From: Z-FORCE COMMUNICATIONS, INC.
To: LYNN, AS COLLATERAL AGENT, BARRY X
Reel/Frame 015213/0227 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 7, 2003
From: MILOUSHEV, VLADIMIR; NICKOLOV, PETER
To: Z-FORCE, INC.
Reel/Frame 014058/0572 →