CITI ASC status

From Linux NFS

Revision as of 16:19, 12 October 2006 by Peterhoneyman (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

I started with the May 2006 report, which we can bring up to date for the October 2006 report.

Contents

University of Michigan/CITI NFSv4 ASC alliance

Status of May 2006

Task 1. Demonstration of pNFS with multiple back end methods (PVFS and File) including layout recall — LANL will replicate this demonstration at LANL working with CITI remotely.

Development.

We developed a pVFS2 layout pNFS server and are testing a pNFS server developed by IBM for GPFS file layout. Network Appliance has promised CITI their file layout pNFS server simulator.

We combined pNFS client and server prototypes efforts into a single code base, bringing together Garth Goodson’s Network Appliance file layout client, the file layout server jointly developed by CITI and IBM Almaden, and Dean Hildebrand’s pVFS2 layout client and server.

We isolated the generic and layout specific portions of the pNFS client code so that layout drivers can be loaded as modules. We defined a pair of communication interfaces between the layout driver and the generic pNFS client, one for operations and their callbacks and the other for layout policies.

We developed prototype implementations of pNFS operations: o OP_GETDEVICELIST, o OP_GETDEVICEINFO, o OP_LAYOUTGET, and o OP_LAYOUTCOMMIT.

We are testing the prototype’s ability to send direct I/O data to data servers.

Milestones

At the Feb/March 2006 Connectathon, we tested the ability of CITI’s Linux pNFS client to operate with multiple layouts. We configured a Linux pNFS client with (1) a pVFS2 layout to access direct I/O on pVFS2 servers, and (2) a file layout to access data striped across Network Appliance servers. We demonstrated support for multiple layouts by copying files between the pVFS2 and Network Appliance data domains,.

Activities

We are rewriting the pNFS client, beginning to measure I/O performance over pNFS, and designing OP_LAYOUTRETURN and recall.

In cooperation with EMC, we are developing a block layout driver module for the generic pNFS client.

Task 2. Migration of client from one mount/metadata server to another to be demonstrated. This demonstration may be replicated at LANL depending on success of this work.

When a file system moves, the former server notifies clients with NFS4ERR_MOVED. Clients then reclaim state held on the former server by engaging in reboot recovery with the new server. For cluster file systems, server-to-server state transfer lets clients avoid the reclaim.

We redesigned state bookkeeping to ensure that state created on NFSv4 servers exporting the same cluster file system will not collide. We are rewriting the interface that clients use when saving NFSv4 server state in stable storage to also support the server-server state transfer.

It remains to inform clients that state established with the former server remains valid on the new server. IETF is considering solutions, e.g., augmented FS_LOCATIONS information or a new error code NFS4ERR_MOVED_DATA_AND_STATE.

Task 3. Analysis of caching and lock coherency, demonstration of caching and lock performance with scaling, under various levels of conflict, using byte range locks (looking at lock splitting issues etc.).

We have set up test machines and begun planning for tests. We have some immediate concerns over the memory footprint imposed by server lock structures.

Task 4. Analysis of directory delegations – how well does it work and when, when does it totally not work.

Development

We have implemented directory delegations in the Linux client and server. Our server implementation of directory delegations follows the file delegations architecture. We extended the lease API in the Linux VFS to support read-only leases on directories and NFS-specific lease-breaking semantics.

We implemented a /proc interface for enabling or disabling directory delegation at run time. At startup, the client queries the server for directory delegation support.

Directory delegations promise to extend the usefulness of negative dentry caching on the client. Negative caching is unsafe without cache invalidation (positive caching can be treated as a hint). To give an example, opening a file that does not exist produces an OPEN RPC that fails. Open-to-close semantics and the lack of consistent negative caching requires that subsequent opens of the same non-existent file yield repeated OPEN RPC calls being sent to the server. This example is played out frequently when searching for an executable in PATH or a shared library in LD_LIBRARY_PATH.

Directory delegation enables negative caching by assuring that no entries have been added or modified in a cached directory. This should markedly decrease unnecessary repeated checks for non-existent files. We are testing this use case.

The server has hooks for a policy layer to control the granting of directory delegations. (No policy is implemented yet.) When and whether to acquire delegations is also a client concern.

Testing

We are testing delegation grant and recall in a test rig with one or two clients. Testing consists mostly of comparing NFS operation-counts when directory delegations is enabled or disabled.

Tests range from simple UNIX utilities — ls, find, touch — to hosting a CVS repository or compiling with shared libraries and header files on NFS servers. Tests will become more specific.

We have extended PyNFS to support directory delegations. So far, the support is basic and the tests are trivial. Tests will become more specific.

We are designing mechanisms that allow simulation experiments to compare delegation policies on NFSv4 network traces.

Task 5. How do you specify/measure NFS Server load.

We have no progress to report on this task.

Personal tools