C обычной ФС вылезет потребность в костылях "файл не нашелся" и вообще
непонятно как определять "файлы все есть?" и "а в них всё ок, картинка
сломалась или такой залили?"

Поэтому, учитывая "надо этим управлять" я бы подумал над запихиванием файлов
в контейнеры "управляемого" размера - грубо говоря, зип-архивы по 500М - это
и "раз плюнуть" вычитать-проверить-пропихнуть по сети, и 1ТБ - это 2000 файлов.

Т.к. сомневаюсь, что файлы там "оч нужно" часто удалять - решение выглядит весьма
удобным. Удаление - это будет просто отметка в БД, и по мере достижения "удалить
Х% в контейнере" - нужно будет распаковать - грохнуть - упаковать. 500М - легко
распаковываются на рамдиск и пакуются обратно.

та не - доступ нужен сразу, а не "распаковать раз плюнуть". Проверка на наличие - ну это больше вопрос к обслуживанию , потому как потеря некоторых файлов не критична в принципе, просто нужен некий механизм бесперебойности с условным падением на уровне пары часов. А бесперебойность нынче - это больше чем один сервер, да и масштабируемость горизонтальная тоже будет не лишней