[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nfsv4] Validation of migrated clientids



I brought this issue up during the last NFSv4.1 - minor version document 
review conference call.

Given an NFSv4.0 exported cluster file system, we want to use migration to 
load balance clients across the parallel NFSv4.0 servers.

NFSv4.0 servers exporting a cluster file system all see the same data, ACLs 
and file handles. We want to follow section 8.14.1 and migrate a clients state 
from the old server to the new server, avoiding any lock recovery by the 
client and grace period by the exported cluster.

rfc3530 section 8.14.1 states: 

    "if the servers are successful in
    transferring all state, the client will continue to use stateids
    assigned by the original server.  Therefore the new server must
    recognize these stateids as valid.  This holds true for the clientid 
    as well."

During a migration event, the old server will transfer the nfs_client_id4 
structure with verifier and id, the unique 64bit clientid, and the setclientid 
principal to the new server.

Say the new server checks it's cache of existing nfs_client_id4 and associated 
64bit clientids and finds no conflicts with the migrated nfs_client_id4 and 
64bit clientid (e.g. all unique on new server), so the new server is ready to 
service the migrated client.

In NFSv4.0, this results in two concerns:

First, the client knows that a file system has migrated - but as Trond points 
out, how does the client know if the state has also migrated?

I suggested sending a RENEW to the new server. Tronds concern is that NFS4_OK 
on the RENEW return doesn't guarentee that the 64bit clientid sent by the 
migrated client is associated with the client's migrated state on the new 
server - it could be that the 64bit clientid just happens to represent a 
different client's state.

Is there any solution to this problem in NFSv4.0? Any suggestions for NFSv4.1? 

Second, if the migrated client reboots and therefore negotiates a new 
clientid, the (new) server will not be able to associate the new 
nfs_client_id4 id field with the old migrated nfs_client_id4 field due to the 
use of server ip addresses.  Instead of immediately releasing all state 
associated with the old instance of the client, the (new) server will be 
forced to wait the lease period ends.

This is not so bad.

Any other consequences that I missed?

Thanks

-->Andy






_______________________________________________
nfsv4 mailing list
nfsv4 at ietf.org
https://www1.ietf.org/mailman/listinfo/nfsv4