On 29 Feb 2016, at 13:31, Oleksandr Natalenko <oleksandr at
natalenko.name> wrote:>
> Hi.
>
> We have corporate Dovecot setup with GlusterFS as file storage. We store
maildirs on GlueterFS share, mounting it via NFS. Mounting share via native
GlusterFS FUSE client introduces visible performance overhead. Also, NFS mount
does not provide us with HA.
>
> That's why I have an idea to use GlusterFS C API to access maildirs
share. I'd like to preserve maildir structure, but get access to it not via
FS mount point but with GlusterFS C API calls.
>
> I've discovered that Dovecot source tree has src/lib-fs infrastructure
with fs-posix implemented on top of it. Is that the right place to start from?
GlusterFS C API calls are POSIX-like, so they could be easily used as
substitutions for VFS ops. Could such a backend be implemented as separate
plugin?
>
> Are there any examples of alternative storage backend to look at?
That isn't a small job. Currently the only mail storage backend that uses
only lib-fs calls is the commercial object storage plugin. All the other
storages use POSIX calls directly. Especially problematic is that lib-index uses
POSIX calls also. So one possibility might be that you implement a storage
backend that stores index files only locally, but if the user switches between
backends the performance will likely be bad because there are no indexes for the
user in the new server. I've some plans to change lib-index to use lib-fs
calls, but that's not going to happen anytime soon.