NFSv4 delegation
Tom Talpey
tom at talpey.com
Tue Aug 18 19:23:06 UTC 2015
On 8/18/2015 11:37 AM, Alessio Cecchi wrote:
>
>
> Il 18/08/2015 17:25, Tom Talpey ha scritto:
>> On 8/18/2015 10:46 AM, Alessio Cecchi wrote:
>>> Hi,
>>>
>>> in this tipical setup (Dovecot/Director thate share Maildir via NFS) on
>>> your NFS Server you have (about) 90% of read operations and only 10% of
>>> write operations.
>>>
>>> If you see detailed stats for NFS operations you have 40-50% of GETATTR,
>>> this means that NFS/Dovecot clients are caching data (mainly dovecot
>>> index files) but they have to revalidate the cache frequently asking to
>>> the NFS Server if the file is changed (via GETATTR) but the file never
>>> change because only this client opens it.
>>>
>>> So the NFS Server is wasting operations with (unnecessary) GETATTR
>>> request.
>>>
>>> With NFSv4 and delegation you can practically eliminate these (GETATTR)
>>> requests and speed up your NFS server (instead of buy SSD disk).
>>>
>>> This because with delegation a client open file and since is the only
>>> client to open these file (that is true with Director) the NFS server
>>> delegate the client to manage the file without check if was changed (via
>>> GETATTR) on the NFS share.
>>
>> Enabling delegations on Maildir is going to scale very badly. The NFS
>> client will end up requesting one on every message open, and because an
>> NFS server can only support a limited number of active delegations, it
>> will be forced to constantly recall them, only to issue new short-lived
>> ones to the next message open.
>
> Sure, but in my test there wasn't a scale problem, only few users was
> online but the "lock" error in dovecot.log come immediately.
Ok, but I don't see how this is a Dovecot problem. Centos is returning
EIO to the lock request, you need to track down why that's happening.
NFS v4.0 delegations require a callback port to be open on the client,
have you verified that it's set up properly?
>
>> While it's a decent idea for indexes, the client has no way to request
>> delegations selectively for them. Perhaps if you used mdbox where the
>> file count is lower, but even then, there will be many users and many
>> mailboxes so it is important to be sure there are enough delegations
>> available at the NFS server. That's a NetApp question in your case,
>> and not a Dovecot one.
>
> An idea could be to have a NFS share for index only and enable
> delegation on it.
More information about the dovecot
mailing list