Eu recomendaria o ext3 / 4 para uso com o Linux como minha preferência pessoal.
Para a estrutura de arquivos, eu recomendaria a opção número 3 (um saldo de profundidade de diretórios e arquivos por diretório). Isso é apenas sobre a escolha de uma estrutura de dados de árvore . Para conseguir isso para os arquivos eu faria um hash md5sum de cada arquivo e usaria os primeiros x caracteres de cada arquivo como diretórios. Os caracteres serão sempre caracteres hexideclarais, de modo que cada ramificação terá 16 diretórios. O número de caracteres que você escolheu será a altura da estrutura da árvore.
Por exemplo:
kbrandt@alpine:~/scrap$ md5sum y.tab.h
03b01228467fbe94f8fedd9fcbb6d470 y.tab.h
Entraria em algo como ./0/3/b/y.tab.h
.
Como pré-criar diretórios no linux para armazenamento de arquivos? mostra como precrear os diretórios.
Esta é uma solução genérica que funciona muito bem para muitos casos de uso e deve criar uma boa distribuição de arquivos.