Назад | Перейти на главную страницу

Должен ли я отключить btrfs CoW для / var / lib / docker?

Я увидел, что использовать функциональность btrfs CoW для больших файлов, таких как каталоги данных базы данных PostgreSQL, - не лучшая идея.

Поскольку я использую докер для баз данных, я спрашиваю себя, следует ли мне отключить CoW для всего /var/lib/docker каталог. Но я не уверен, потому что многоуровневая файловая система докера использует эту функцию или нет?

Или возможно отключить CoW только для определенных объемов?

Я не думаю docker напрямую подключается к поведению CoW BTRFS (или любой файловой системы); скорее, он может использовать снимки и / или ссылки, чтобы избежать репликации целых образов контейнеров.

Хотя отключение CoW, безусловно, улучшит производительность, имейте в виду, что:

  • отключение означает отсутствие контрольной суммы данных и защиты от потери данных;
  • создание моментального снимка тома автоматически повторно включает CoW;
  • рефссылка больше не будет работать;
  • существующий файл останется с поддержкой CoW (пока вы не удалите и не создадите заново).

В то время как для базы данных (например, PostgreSQL) указанные выше моменты могут не вызывать проблем (например: контрольная сумма данных выполняется на уровне записи БД, а моментальные снимки предоставляются на уровне транзакций), для виртуальной машины или контейнера, у которых отсутствуют эти функции, могут возникнуть проблемы.

В любом случае, я действительно предлагаю вам прочитать BTRFS FAQ по nodatacow