У меня есть несколько компьютеров с Debian 8, dovecot и btrfs. Я использую моментальные снимки btrfs для краткосрочного резервного копирования. Для этой цели я храню 14 снимков подобъема почты.
Производительность нормальная, пока не дойдет до удаления снимка: как только запускается btrfs-cleaner, все почти останавливается. Это приводит к тому, что drbd теряет подключение к вторичному узлу из-за тайм-аута. Это происходит на нескольких устройствах, поэтому проблема вряд ли связана с оборудованием.
Спайк - это место, где происходит удаление снимка:
Я не могу поверить, что это нормальное поведение. Итак, мой вопрос: есть ли у кого-нибудь опыт с этой проблемой, есть ли идеи о том, как ее решить или отладить, или, в крайнем случае, как ее избежать, действуя по-другому?
Системы: Dell R710, Debian 8, Kernel 3.16, Mount параметры: rw, noatime, nossd, space_cache
Изменить: дополнительная информация о системе
Двойной R710, 24 ГБ ОЗУ, H700 с кешем записи, 8x1 ТБ 7.2k Sata-диски как RAID6, протокол DRBD B, выделенная ссылка 1 ГБ / с для DRBD
Редактировать: Удаление содержимого снимка с помощью rm -rf. Ограничено для ввода-вывода, иначе он бы убежал, как это сделал btrfs-cleaner:
Я бы сказал, что это намного хуже с точки зрения io. Единственное преимущество состоит в том, что я могу контролировать нагрузку ввода-вывода пользовательского пространства rm.
И еще одно изменение: Iops massacree
В мире CoW (BTRFS и ZFS, в основном) удаление моментального снимка / подобъема требует множества «тяжелых» операций с метаданными, что подразумевает множество поисков головы. Это происходит из-за того, что файловая система анализирует свои собственные структуры, чтобы определить блок, который используется исключительно ошибочным моментальным снимком. Это, в свою очередь, может поставить систему на колени.
Чтобы убедиться, что это проблема, сделайте следующее:
screen
iostat -x -k 1
Если проблема подтверждается, вы можете попробовать сначала удалить содержимое моментального снимка (с помощью простого rm
), , затем удалить сам моментальный снимок.
Как Примечание: хотя файловые системы CoW чрезвычайно гибки, они не рассчитаны на чистую производительность. И хотя ZFS остается довольно быстрой, то же самое нельзя сказать о BTRFS.
В любом случае удаление больших вложенных томов было проблематичным и для ZFS (до тех пор, пока не был реализован процесс удаления в фоновом режиме ...)
Похоже, малоизвестная ошибка в функции квот btrfs .
Просто отключите квоты btrfs следующей командой.
btrfs quota disable /
UPD: Я нашел подробный анализ проблемы . Это не ошибка, а функция.