Оптимизировать ext4 для постоянной работы

Наше приложение записывает данные на диск в виде огромного кольцевого буфера (от 30 до 150 ТБ); запись новых файлов при удалении старых файлов. Таким образом, по определению, диск всегда «почти полностью».

Процесс записи создает различные файлы с чистой скоростью ввода около 100-150 Мбит / с. Файлы данных представляют собой смесь файлов данных объемом 1 ГБ и нескольких небольших файлов метаданных. (Скорость ввода постоянна, но обратите внимание, что новые наборы файлов создаются только один раз в две минуты).

Существует отдельный процесс удаления, который удаляет «самые старые» файлы каждые 30 секунд . Он продолжает удаляться, пока он не достигнет 15 ГБ свободного места на диске.

Таким образом, при стабильной работе все разделы данных имеют только 15 ГБ свободного места.

В этом вопросе SO, касающемся замедления файловой системы, DepressedDaniel прокомментировал:

Синхронизация висит просто означает, что файловая система упорно работает, чтобы сохранить последние операции последовательно. Это, безусловно, пытается перетасовать данные на диске за это время. Я не знаю подробностей, но я уверен, что если ваша файловая система сильно фрагментирована, ext4 попытается что-то предпринять. И это не может быть хорошо, если файловая система заполнена почти на 100%. Единственный разумный способ использования файловой системы при почти 100% емкости – это статически инициализировать ее некоторыми файлами, а затем перезаписать те же самые файлы на месте (во избежание фрагментации). Вероятно, лучше всего работает с ext2 / 3.

Является ли ext4 плохим выбором для этого приложения? Поскольку мы работаем вживую, какую настройку можно выполнить с помощью ext4, чтобы избежать фрагментации, замедления или других ограничений производительности? Изменение с ext4 было бы довольно сложно …

(и повторная запись статически созданных файлов означает переписывание всего приложения)

Благодаря!