У меня есть 2 диска по 4 ТБ в аппаратном RAID1 (это может быть LSI MegaRaid) на Debian Wheezy. Размер физического блока составляет 4 КБ. Я собираюсь хранить 150-200 миллионов небольших файлов (от 3 до 10 КБ). Я прошу не о производительности, а о лучшей файловой системе и размерах блоков для экономии места. Я скопировал файл размером 8200 байт на ext4 с размером блока 4 КБ. Это заняло 32 КБ на диске !? Причина этого - ведение дневника? Итак, какие есть варианты экономии места для таких небольших файлов?
Если бы я был в такой ситуации, я бы посмотрел на базу данных, которая может хранить все данные в одном файле с компактным индексом на основе смещения, а не в виде отдельных файлов. Возможно, база данных имеет драйвер FUSE, доступный для взаимодействия с ней в виде файлов, когда это необходимо, без того, чтобы на самом деле все они были отдельными файлами.
В качестве альтернативы вы можете посмотреть, скажем, на 60–70-й процентиль размеров файлов и попытаться уместить этот размер файла непосредственно в узлы дерева файловой системы, а не в виде отдельных блоков на диске. Хранение 10 КБ на каждом узле, вероятно, является большой проблемой, но если бы вы могли разместить там 60% -70% файлов, это, вероятно, было бы огромной победой.
Только определенные файловые системы могут делать это вообще (reiserfs - одна из них), и я предполагаю, что все зависит от того, какого размера этот процентиль, будет ли он вписываться в дерево. Возможно, вы сможете его настроить. Думаю, остальное постараюсь уместить в один блок.
И не беспокойтесь о журналах; в любом случае у них есть верхний предел размера.