Меня долгое время занимало почему у btrfs есть конфигурируемый параметр flushonocommit — какие последствия могут быть от его включения/выключения и почему вообще пользователю этот параметр дали конфигурировать — из документации это мне было не очевидно.
Сегодня я нашёл, что его переключение это выбор между возможностью наступления двух маловероятных событий:
1. В значении по умолчанию (noflushoncommit) возможно появление дырок в файлах, если пользовательский процесс что-то писал в файл, когда система или диск вдруг аварийно остановились.
2. При установке flushoncommit, возможна другая ситуация — если у вас есть процесс который записывает данные быстрее, чем они успевают быть перенесены на диск из очереди в памяти, то fsync никогда не завершится, а диск заполнится на 100%. При этом, набор данных, с точки зрения пользовательских программ, может быть и небольшим (просто постоянно обновляемым) — диск же заполнят, созданные в рамках работы CoW, метаданные и копии данных.
https://www.spinics.net/lists/linux-btrfs/msg109823.html
https://github.com/Zygo/bees/issues/68
Post #2457
209
Forwarded from Лукьян Излучина
- 🤯 1