Gluster + ZFS, зайдите в тупик во время сравнительного тестирования: CPU 100% zfs_iput_taskq

Сначала некоторый фон: Я работаю в компании, которая выполняет PHP-webapplication. Нам смонтировали бэкенд устройства хранения данных по NFS на нескольких веб-серверах. Сегодня у нас есть проблема, если один веб-сервер пишет файл по NFS, иногда файл не появляется в других смонтированных клиентах до несколько минут спустя. Это также не избыточно, таким образом, мы не можем выполнить "невидимое" обслуживание.

Я смотрел на миграцию на решение GlusterFS (два или три дублируемых кирпича/машины для дублирования). Теперь, использование XFS как файловая система устройства хранения данных "позади" Gluster работает очень хорошо, мудрая производительность. Gluster также, кажется, не упоминает выше синхронизирующую проблему.

Однако я хотел бы использовать ZFS в качестве файловой системы бэкенда, при этом причины были бы;

  • Дешевое сжатие (в настоящее время хранящий несжатых 1.5 ТБ)
  • Очень легкий развернуть "живой" том (одна команда, сравнил путаницу LVM),
  • Создание снимков, защита разрядной гнили и все другие слава ZFS.

В моей демонстрационной установке решения у меня есть три сервера с Дублируемым Gluster с пулом бэкенда ZFS в отдельном диске на каждом сервере. Я использую CentOS 6.5 с ZFS на Linux (0.6.2) + GlusterFS 3.4. Я также попробовал Ubuntu 13.10. Все находится в VMware ESX.

Для тестирования этой установки, я смонтировал объем по Gluster и затем рабочему BlogBench (http://www.pureftpd.org/project/blogbench) для моделирования загрузки. Проблема, которую я имею, - то, что в конце теста, устройство хранения данных ZFS, кажется, застревает в мертвой блокировке. Все три машины имеют "zfs_iput_taskq", достигающий 90-100% ЦП и тестовых замораживаний. Если я прерываю тест, мертвая блокировка не уходит, только опция, кажется, "жесткая" перезагрузка.

Я попробовал:

  • Отключенный atime
  • Отключенный планировщик (noop)
  • Другое сжатие сжатия/нет
  • Blogbench непосредственно на ZFS хорошо работает
  • Blogbench на Gluster + XFS как бэкенд хорошо работает

Идеи? Я должен просто отбросить ZFS и пойти с чем-то еще? альтернативы?

Оскар отношений

6
задан 21 March 2014 в 11:14
1 ответ

ZFS на Linux нуждается в базовой настройке, чтобы хорошо работать под нагрузкой. Есть небольшая борьба между ZFS ARC и подсистемой виртуальной памяти Linux.

Для ваших CentOS-систем попробуйте следующее:

Создайте конфигурационный файл /etc/modprobe.d/zfs.conf. Он считывается во время загрузки/загрузки модуля.

Добавьте что-нибудь вроде:

options zfs zfs_arc_max=40000000000
options zfs zfs_vdev_max_pending=24

Где zfs_arc_max составляет примерно 40% оперативной памяти в байтах (Edit: try zfs_arc_max=1200000000). По умолчанию для zfs_vdev_max_pending скомпилировано 8 или 10, в зависимости от версии. Значение должно быть большим (48) для SSD-накопителей или дисков с малым временем ожидания. Может быть 12-24 для SAS. В противном случае, оставьте по умолчанию.

Вы также захотите иметь значения этажа в /etc/sysctl.conf

vm.swappiness = 10
vm.min_free_kbytes = 512000

Наконец, в CentOS, вы можете установить tuned и tuned-utils и настроить ваш профиль на virtual-guest с помощью tuned-adm профиля virtual-guest.

Попробуйте их и посмотрите, сохранилась ли проблема.

Редактирование:

Выполните zfs set xattr=sa storage. Вот почему. Возможно, вам придется стереть тома и начать все заново (Я бы определенно порекомендовал это сделать ).

.
4
ответ дан 3 December 2019 в 00:35

Теги

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