Live migrating index/control files
azurit at pobox.sk
azurit at pobox.sk
Mon Apr 26 16:26:05 EEST 2021
Hi,
i think you cannot do this without preventing users to log in. We were
doing similar thing few years ago and i wrote a Python script for this
purpose - you can use it if you find it usefull (script is copying
only control files as indexes are transparently recreated):
Citát Eirik Rye <rye at trojka.no>:
> Hello,
>
> We are running a director-based dovecot cluster where the user's
> maildir and the indexes/control files are, for legacy reasons,
> stored on separate NFS-backends, i.e.:
>
> mail_location =
> maildir:~/Maildir:CONTROL=/mail/control/%1u/%2u/%u:INDEX=/mail/index/%1u/%2u/%u
>
> Both ~/Maildir and /mail/{control,index}/ are separate NFS-mounts,
> and we now want to consolidate all files to the user's home
> directory instead. The end goal is to stop using NFS altogether.
>
> I have devised a four step plan for gradually migrating the
> index/control files into the user's maildir, on a per-user basis:
>
> 1. Kick the user in an attempt to flush the user's index files:
>
> `doveadm director kick <username>`
>
> 2. Rsync the index/control files into the user's maildir:
>
> `rsync -uav /mail/{index,control}/${user:0:1}/${user:0:2}/${user}/
> /mail/${user:0:1}/${user:0:2}/${user}/Maildir/;`
>
> 3. Update the (redis-based) userdb for the specific user to override
> mail_location to use the default CONTROL/INDEX locations:
>
> `{"mail": "maildir:~/Maildir"}`
>
> 4. Kick the user one last time so that they reconnect using the new settings.
>
> Unfortunately, after running this for a small batch of users, we
> recieved a couple reports that their clients had started to
> resynchronize and redownload their mailboxes, which is exactly what
> we're trying to avoid. There are no index related error messages
> related to the few users that reported these issues.
>
> From my understanding, clients become confused when the control
> files are changed or lost (`dovecot-uidlist` and
> `dovecot-uidvalidity`), so I suspect the kick + rsync + kick
> procedure is not robust enough for this.
>
> Does anyone have any experience with performing such a migration
> without taking systems offline for the duration? Any suggestions to
> make this process more transparent for our users, so as to not
> induce panic when their mailboxes abruptly appear empty?
>
> Best regards,
> Eirik
More information about the dovecot
mailing list