Это Производительность удаления моментальных снимков btrfs нормальная?

У меня есть несколько компьютеров с Debian 8, dovecot и btrfs. Я использую моментальные снимки btrfs для краткосрочного резервного копирования. Для этой цели я храню 14 снимков подобъема почты.

Производительность нормальная, пока не дойдет до удаления снимка: как только запускается btrfs-cleaner, все почти останавливается. Это приводит к тому, что drbd теряет подключение к вторичному узлу из-за тайм-аута. Это происходит на нескольких устройствах, поэтому проблема вряд ли связана с оборудованием.

Спайк - это место, где происходит удаление снимка: collectd load stats

Я не могу поверить, что это нормальное поведение. Итак, мой вопрос: есть ли у кого-нибудь опыт с этой проблемой, есть ли идеи о том, как ее решить или отладить, или, в крайнем случае, как ее избежать, действуя по-другому?

Системы: 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:

collectd load stats

Я бы сказал, что это намного хуже с точки зрения io. Единственное преимущество состоит в том, что я могу контролировать нагрузку ввода-вывода пользовательского пространства rm.

И еще одно изменение: Iops massacree

collectd iops stats

5
задан 22 March 2016 в 18:28
2 ответа

В мире CoW (BTRFS и ZFS, в основном) удаление моментального снимка / подобъема требует множества «тяжелых» операций с метаданными, что подразумевает множество поисков головы. Это происходит из-за того, что файловая система анализирует свои собственные структуры, чтобы определить блок, который используется исключительно ошибочным моментальным снимком. Это, в свою очередь, может поставить систему на колени.

Чтобы убедиться, что это проблема, сделайте следующее:

  • откройте два терминала с помощью screen
  • на первом терминале, запустите iostat -x -k 1
  • на втором терминале, удалить снимок
  • во время удаления, проверить первый терминал: вероятно, вы обнаружите, что ваши диски заняты 100%, читая много-много небольших блоков данных.

Если проблема подтверждается, вы можете попробовать сначала удалить содержимое моментального снимка (с помощью простого rm ), , затем удалить сам моментальный снимок.

Как Примечание: хотя файловые системы CoW чрезвычайно гибки, они не рассчитаны на чистую производительность. И хотя ZFS остается довольно быстрой, то же самое нельзя сказать о BTRFS.

В любом случае удаление больших вложенных томов было проблематичным и для ZFS (до тех пор, пока не был реализован процесс удаления в фоновом режиме ...)

5
ответ дан 3 December 2019 в 01:24

Похоже, малоизвестная ошибка в функции квот btrfs .
Просто отключите квоты btrfs следующей командой.
btrfs quota disable /

UPD: Я нашел подробный анализ проблемы . Это не ошибка, а функция.

2
ответ дан 3 December 2019 в 01:24

Теги

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