Можно переместить все файлы в структуру каталога, где на каждом уровне будет 256 поддиректорий.
1-й уровень вложенности - 256 папок
2-ой уровень вложенности -256^2 папок
......
n-ый уровень - 256^n
Можно получать хэш md5 от
md5sum filename - 9673a892a7d8c1c9ac598ebd06e3fb58
затем нарезать путь из директорий, выбирая по 2 символа на подгруппу:
/96/73/a8/filename
Таким образом, для трехуровневой структуры можно разложить порядка 4-х миллиардов файлов, где в конечной папке будет в среднем 256 файлов.
Триллион файлов - сделайте четыре уровня.
Одно дело, читать папку, в которой 256 объектов, другое дело - когда несколько десятков тысяч, скорость работы изменится на порядки.