Há alguns anos, comecei a escrever um sistema de armazenamento semelhante ao ceph. Então eu descobri ceph e o que eles tinham trabalhado melhor, então eu joguei meu desenvolvimento.
Durante o processo de desenvolvimento, eu perguntei a uma pergunta semelhante à sua mas em SA Eu fiz muitos cálculos ao lidar com muitos arquivos pequenos e descobri que nomear arquivos (assumindo que eles podem ser qualquer coisa) por uuid e dividi-los em 3 níveis de profundidade era suficiente para minhas necessidades.
Da memória, usei as 3 primeiras letras para formar o nível superior, depois as 3 seguintes para formar o nível 2 e, em seguida, usei o uuid completo para o nome do arquivo.
Meu cálculo foi baseado no número de arquivos que eu queria e na quantidade de dados por unidade armazenada e quais eram os limites para o tipo de sistema de arquivos.
Para um UUID, se você usar a versão hexadecimal, obterá A-Z, a-z, 0-9, 26 + 26 + 9 ou 61. Para 3 níveis de profundidade, isso é 61 * 61 * 61 = 226,981. Eu imaginei 226k combinações de diretório é amplo. Para o XFS, tudo bem. Mas para NTFS não tenho certeza. Então é melhor você descobrir quais são os limites reais. Apenas listar esses diretórios abrindo o explorador pode fazer com que seu servidor seja um pouco difícil. Então você pode querer criar um esquema que não tenha tantas pastas no nível superior. Talvez usando uma única letra e vá a 4 níveis de profundidade ou algo assim.