File server having a file system cache and protocol for truly safe asynchronous writes
First Claim
1. A method of operating a file server having a cache memory and storage, said method comprising the steps of:
- (a) the file server receiving a write request from a client, and in response to the write request, writing new file attributes to the cache memory and thereafter writing new file data to the cache memory, and acknowledging to the client completion of a write operation before writing the new file attributes and the new file data to the storage, the new file attributes including pointers to locations in the storage where the new file data is written; and
thereafter(b) the file server receiving a commit request from the client, and in response to the commit request, acknowledging to the client completion of a commit operation after the new file attributes and the new file data are written to the storage;
wherein the file server writes the new file attributes to the storage after the file server writes the new file data to the storage.
8 Assignments
0 Petitions
Accused Products
Abstract
A conventional network file server has a file system that permits file attributes and file data to be written in any order. The conventional network file server may also support an asynchronous write protocol, in which file attributes and file data need not be written to disk storage until a client sends a commit request. This asynchronous write protocol has a data security problem if the attributes are written before the data and the server crashes before completing the writing of the data to disk storage. This security problem is solved by adding a file system cache and following a protocol that writes the attributes to storage after writing the data to storage. For example, the attributes and data are stored in the file system cache and are not written down to storage until receipt of a commit request. When the commit request is received, the data is sent first from the file system cache to storage. Then the attributes are sent from the file system cache to storage. Then the file server acknowledges completion of the commit operation. In a preferred embodiment, storage is provided by an integrated cached disk array (ICDA) having a buffer cache and an array of disk drives, and the file system cache is distributed in a plurality of data mover computers interfaced to the ICDA. The addition of the file system cache to solve the security problem also reduces the burden on the buffer cache in the ICDA.
403 Citations
25 Claims
-
1. A method of operating a file server having a cache memory and storage, said method comprising the steps of:
-
(a) the file server receiving a write request from a client, and in response to the write request, writing new file attributes to the cache memory and thereafter writing new file data to the cache memory, and acknowledging to the client completion of a write operation before writing the new file attributes and the new file data to the storage, the new file attributes including pointers to locations in the storage where the new file data is written; and
thereafter(b) the file server receiving a commit request from the client, and in response to the commit request, acknowledging to the client completion of a commit operation after the new file attributes and the new file data are written to the storage; wherein the file server writes the new file attributes to the storage after the file server writes the new file data to the storage. - View Dependent Claims (2, 3, 4)
-
-
5. A method of operating a file server having a volatile semiconductor cache memory and nonvolatile storage, said method comprising the steps of:
-
(a) the file server receiving a write request from a client, and in response to the write request, writing new file attributes to the volatile semiconductor cache memory and thereafter writing new file data to the volatile semiconductor cache memory, and acknowledging to the client completion of a write operation before writing the new file attributes and the new file data to the nonvolatile storage, the new file attributes including pointers to locations in the nonvolatile storage where the new file data is written; and
thereafter(b) the file server receiving a commit request from the client, and in response to the commit request, acknowledging to the client completion of a commit operation after the new file attributes and the new file data are written to the nonvolatile storage; wherein the file server writes the new file attributes to the nonvolatile storage after the file server writes the new file data to the nonvolatile storage. - View Dependent Claims (6, 7)
-
-
8. A method of operating a file server having a cache memory and nonvolatile storage, the method comprising the steps of:
-
(a) the file server receiving a write request from a client, and in response to the write request, writing new file attributes to the cache memory and thereafter writing new file data to the cache memory, and acknowledging to the client completion of a write operation before writing the new file attributes and the new file data to the nonvolatile storage, the new file attributes including pointers to locations in the nonvolatile storage where the new file data is written; and
thereafter(b) the file server receiving a commit request from the client, and in response to the commit request, writing the new file data from the cache memory to the nonvolatile storage and thereafter writing the new file attributes from the cache memory to the nonvolatile storage, and acknowledging to the client completion of a commit operation after the new file attributes and the new file data are written to the nonvolatile storage; wherein the file server does not write the new file attributes and the new file data to the nonvolatile storage until after the file server receives the commit request from the client. - View Dependent Claims (9)
-
-
10. A file server comprising, in combination:
-
a cache memory; storage; means responsive to a write request from a client for writing new file attributes to the cache memory and thereafter writing new file data to the cache memory, and acknowledging to the client completion of a write operation before writing the new file attributes and the new file data to the storage, the new file attributes including pointers to locations in the storage where the new file data is written; means for writing the new file data to the storage and thereafter writing the new file attributes to the storage; and means responsive to a commit request from the client for acknowledging to the client completion of a commit operation after the new file attributes and new file data are written to the storage. - View Dependent Claims (11)
-
-
12. A file server comprising, in combination:
-
a cache memory; storage; means responsive to a write request from a client for writing new file attributes to the cache memory and thereafter writing new file data to the cache memory, and acknowledging to the client completion of a write operation before writing the new file attributes and new file data to the storage, the new file attributes including pointers to locations in the storage where the new file data is written; and means responsive to a commit request from the client for writing the new file data from the cache memory to the storage, and thereafter writing the new file attributes from the cache memory to the storage, and thereafter acknowledging to the client completion of a commit operation. - View Dependent Claims (13)
-
-
14. A file server comprising, in combination:
-
a file system layer for mapping file names to data storage locations in response to a write request from a client; a file system cache connected to the file system layer for storing new file attributes and new file data in response to the write request from the client; and nonvolatile storage connected to the file system layer for storing the new file attributes and the new file data in response to a commit request from the client; wherein the file system layer is programmed for responding to the write request from the client by writing the new file attributes to the file system cache and thereafter writing the new file data to the file system cache, and acknowledging to the client completion of a write operation before writing the new file attributes and the new file data to the nonvolatile storage, the new file attributes including pointers to locations in the nonvolatile storage where the new file data is written; and wherein the file system layer is programmed for responding to the commit request from the client by writing the new file data from the file system cache to the nonvolatile storage and thereafter writing the new file attributes from the file system cache to the nonvolatile storage, and thereafter acknowledging to the client completion of the commit operation. - View Dependent Claims (15, 16, 17)
-
-
18. A file server comprising, in combination:
-
a file system layer for mapping file names to data storage locations in response to a write request from a client; a file system cache connected to the file system layer for storing new file attributes and new file data in response to the write request from the client; and a buffer cache including random access memory connected to the file system layer for storing the new file attributes and the new file data in response to a commit request from the client; disk storage; and a storage layer connected to the buffer cache and disk storage for performing management of the buffer cache including setting write pending flags and later writing data from the buffer cache to the disk storage as directed by the write pending flags; wherein the file system layer is programmed for responding to the write request from the client by writing the new file attributes to the file system cache and thereafter writing the new file data to the file system cache, and acknowledging to the client completion of a write operation before writing the new file attributes and the new file data to the storage layer, the new file attributes including pointers to locations in the disk storage where the new file data is written; and wherein the file system layer is programmed for responding to the commit request from the client by writing the new file data from the file system cache to the storage layer, and after receiving an acknowledgement from the storage layer that the new file data has been written in the buffer cache, writing the new file attributes from the file system cache to the storage layer, and after receiving an acknowledgement from the storage layer that the new file attributes have been written in the buffer cache, acknowledging to the client completion of the commit operation. - View Dependent Claims (19, 20, 21, 22)
-
-
23. A file server comprising, in combination:
-
a computer including a file system layer for mapping file names to data storage locations in response to a write request from a client, and a file system cache connected to the file system layer for storing new file attributes and new file data in response to the write request from the client; and an integrated cached disk array including a random access memory buffer cache and an array of disk drives, the integrated cached disk array being connected to the computer for storing the new file attributes and the new file data; wherein the file system layer is programmed for responding to the write request from the client by writing the new file attributes to the file system cache, thereafter writing the new file data to the file system cache, and thereafter acknowledging to the client completion of a write operation before writing the new file attributes and the new file data to the integrated cached disk array, and not writing any of the new file attributes and any of the new file data to the integrated cached disk array until receipt of the commit request, the new file attributes including pointers to disk storage locations where the new file data is written in the integrated cached disk array; and wherein the file system layer is programmed for responding to the commit request from the client by writing the new file data from the file system cache to the integrated cached disk array, and after receiving an acknowledgement from the integrated cached disk array that the new file data has been written in the buffer cache, writing the new file attributes from the file system cache to the integrated cached disk array, and after receiving an acknowledgement from the integrated cached disk array that the new file attributes have been written in the buffer cache, acknowledging to the client completion of the commit operation. - View Dependent Claims (24, 25)
-
Specification