Правильно ли GLusterFS / Fuse поддерживает mmap ()?

Общие сведения

У меня возникли проблемы с блокировкой файлов при запуске хранилища Dovecot IMAP на томе Gluster с тройной репликацией. Том смонтирован с типом glusterfs с использованием значений по умолчанию. Это подразумевает крепление FUSE. Операционная система - Fedora 28, ядро ​​4.18.18-200.fc28.x86_64.

<host>:/volume        /mount                  glusterfs       defaults,x-systemd.automount,noauto     0 0

Ошибки блокировки файлов появляются в журналах файлов dovecot.index * при перемещении большого количества почты в моем электронном письме. -почтовый клиент (Thunderbird). Изучая проблему, я обнаружил некоторую документацию Dovecot относительно совместно используемых файловых систем.

Вопрос

Предложения, сделанные по настройке lock_method , кажутся мне ясными. У меня есть конкретный вопрос относительно раздела «Отображение памяти»:

По умолчанию Dovecot mmap () s индексные файлы. Это может не работать со всеми кластерными файловыми системами , и определенно не будет работать с NFS. Установка mmap_disable = yes отключает mmap (), а Dovecot выполняет собственное внутреннее кэширование. Если ваша файловая система поддерживает mmap (), нельзя быть уверенным, что она даст лучшую производительность. Попробуйте выполнить сравнительный анализ, чтобы убедиться.

Подействует ли это на меня? Поддерживает ли FUSE + GlustFS mmap () должным образом?

Исследование

Когда я рылся в Интернете, пытаясь найти ответ, я обнаружил следующий хаос:

  • Некоторые проблемы с разработчиком python на SO , пытающимся использовать mmap () в общем режиме.
  • Закрытый PR в Numpy. пытаюсь исправить интерфейс mmap () .

Но оба они связаны с Python, и я не уверен, как Dovecot реализует mmap () . Я также нашел патч на lwm.net :

From:    Tejun Heo <tj@kernel.org>
To:      Miklos Szeredi <mszeredi@suse.cz>, lkml <linux-kernel@vger.kernel.org>,
    fuse-devel@lists.sourceforge.net
Subject: [PATCH] FUSE/CUSE: implement direct mmap support
Date:    Tue, 09 Feb 2010 15:08:36 +0900
Cc:      Lars Wendler <polynomial-c@gentoo.org>,
    Andrew Morton <akpm@linux-foundation.org>

Implement FUSE direct mmap support. The server can redirect client mmap
requests to any SHMLBA aligned offset in the custom address space attached
to the fuse channel. The address space is managed by the server using
mmap/munmap(2). The SHMLBA alignment requirement is necessary to avoid
cache aliasing issues on archs with virtually indexed caches as FUSE
direct mmaps are basically shared memory between clients and the server

Но это касается FUSE в целом и не дает точного ответа на мой вопрос.

0
задан 18 December 2018 в 15:04
1 ответ

В целом GlusterFS отлично поддерживает mmap () . Если что-то пойдет не так, это будет ошибкой. GlusterFS имеет несколько функций повышения производительности, которые могут создавать проблемы для многопоточных или многоклиентских рабочих нагрузок. Вы можете поэкспериментировать с отключением всех или некоторых из этих опций:

  • performance.read-forward
  • performance.write-behind
  • performance.readdir-forward и performance.parallel-readdir
  • performance.quick -read
  • performance.stat-prefetch
  • performance.io-cache

Например: gluster volume set $ {VOLUMENAME} performance.read-advance off

В вики Dovecot На странице, на которую вы ссылались , есть параграф о FUSE / GlusterFS:

FUSE кэширует данные и атрибуты файлов внутренне. Если вы используете несколько клиентов GlusterFS для доступа к одним и тем же почтовым ящикам, у вас могут возникнуть проблемы. Худших из этих проблем можно избежать, используя очистку кэша NFS, которая просто так работает и с FUSE:

mail_nfs_index = yes mail_nfs_storage = yes

Скорее всего, они не работают идеально.

Я не знаю, почему это не работает идеально ... Было бы неплохо получить некоторые подробности об этом. Для большинства рабочих нагрузок GlusterFS ведет себя почти так же, как NFS, поэтому рекомендации будут такими же.

1
ответ дан 4 December 2019 в 15:47

Теги

Похожие вопросы