On Tue, Apr 2, 2019 at 9:21 AM Daniel Gryniewicz <dang(a)redhat.com> wrote:
On 4/2/19 9:07 AM, fanzi2009(a)hotmail.com wrote:
> Thanks for Daniel and Soumya!
> Putting whole cluster into grace period, will it cause performance issue?
>
> Is it OK that we save all the session informations into backend. When ServerA
crashed and client connect ServerB, ServerB can resume session from backend including open
and locking resource.
You have to do that, and you also have to put the cluster into Grace.
When the client connects to the new server, it will re-acquire any state
it had before, and so the new server needs to know what clients can do this.
As I said, NFS is not a great clustered protocol. If you have multiple
servers serving the same data, and any of them goes down, you need to
put them all into Grace. This is to keep any *other* clients from
getting locks that should belong to the clients that were connected to
the down server. Yes, this will have performance issues, but it's the
only way to avoid data corruption.
I mostly agree with everything Dan said here. Clustered environments
require extra care, and we don't currently have a way to migrate
clients between different ganesha heads that are exporting the same
clustered fs. I've done some experimentation with v4 migration here,
but there's nothing in stock ganesha today for this.
You can, however, avoid putting all of the other cluster nodes into
the grace period if you know that none of the other cluster nodes can
acquire state that will need to be reclaimed by a clients of the node
that is restarting. We have some tentative plans to implement this for
FSAL_CEPH + the RADOS recovery backends someday, but it requires
support in the Ceph MDS and userland client libraries that does not
yet exist.
--
Jeff Layton <jlayton(a)poochiereds.net>