Quiesce a DVS-projected File System
Describes how quiesce works and provides several use cases.
- Quiesce a directory that is being used by DataWarp
- Quiesce a directory on every DVS server
To use DVS quiesce, an administrator writes into /proc/fs/dvs/quiesce, as shown in the following use cases.
Use Case 1: Quiesce a single directory on a single DVS server
- On the DVS server, quiesce the directory.
dvs1# echo quiesce /gpfs/test/foo > /proc/fs/dvs/quiesce
When the directory quiesce has completed, the shell prompt will return to user control. There is no command output.
- When finished with the directory, unquiesce it.
dvs1# echo unquiesce /gpfs/test/foo > /proc/fs/dvs/quiesce
- Ensure that the directory is no longer on the quiesced list.
dvs1# cat /proc/fs/dvs/quiesce
Use Case 2: Quiesce all directories on a DVS server
- On the DVS server, quiesce all directories on that server.
dvs1# echo quiesce / > /proc/fs/dvs/quiesce
When the quiesce has completed, the shell prompt will return to user control. There is no command output.
- To allow traffic to this server to resume, unquiesce all of its projected directories.
dvs1# echo unquiesce / > /proc/fs/dvs/quiesce
How Quiesce Works: the Userspace Application View
- Entirely normally, if the directory is quiesced only on servers that the application is not using.
- Useable but with degraded performance, if the application finds that its main server is quiesced and must query other servers.
How Quiesce Works: the Server View
- Adds that directory to the server's list of quiesced directories
- Iterates over all open files, closing any file that resides in the quiesced directory and setting a flag to indicate that the file was closed due to the directory being quiesced
When a DVS server receives a request from a client, DVS checks the request path against the list of quiesced directories. The comparison between the path name in the request and the quiesced directory is a simple string compare to avoid any access of the underlying file system that has been quiesced. If DVS finds that the request is for a quiesced file system, it sends a reply indicating that the request could not be completed due to a quiesce and noting which directory is quiesced. If the client request is for a file that has been closed due to quiesce, the server returns a reply to the client indicating that the request could not be completed due to a quiesce.
When an admin unquiesces a directory on a DVS server, DVS simply removes that directory from the server's list of quiesced directories and clears all quiesce-related flags for that directory.
How Quiesce Works: the Client View
- path name request
- If the request is a path name request (lookup, stat, file open, etc.), then DVS reattempts the operation on a different server in a round-robin fashion until it finds a server that allows the operation to complete successfully.
- open file
- If the request is for an open file (read, write, lseek, etc.), then DVS attempts the operation on a different server. If the file is not open on any other servers, DVS attempts to open on the file on a server in a round robin fashion until it gets a successful open. DVS will then attempt to perform the operation.
If a client receives a reply indicating a quiesced directory, the client adds that directory to a list of quiesced directories held on the DVS superblock. This is intended to reduce network traffic by avoiding requests that target quiesced directories. The client's list of quiesced directories expires about every 60 seconds, thereby allowing clients to try those directories again in case one or more have been unquiesced during that time. This mechanism enables DVS to strike a balance between the timely unquiescing of a file system and a large reduction in network traffic and requests coming into the server. It also has the effect of naturally staggering clients when they start to use a server.