Digamos que estamos usando o ext4 (com o dir_index ativado) para hospedar cerca de 3 milhões de arquivos (com uma média de tamanho de 750 KB) e precisamos decidir qual esquema de pastas usaremos.
Na primeira solução , aplicamos uma função de hash ao arquivo e usamos a pasta de dois níveis (sendo 1 caractere para o primeiro nível e 2 caracteres para o segundo nível): portanto, sendo o filex.for
hash igual a abcde1234 , vamos armazená-la no / path / a / bc /abcde1234-filex.for.
Na segunda solução , aplicamos uma função de hash ao arquivo e usamos a pasta de dois níveis (sendo 2 caracteres para o primeiro nível e 2 caracteres para o segundo nível): portanto, sendo o filex.for
hash igual a abcde1234 , vamos armazená-la no / path / ab / de /abcde1234-filex.for.
Para a primeira solução, teremos o seguinte esquema /path/[16 folders]/[256 folders]
com uma média de 732 arquivos por pasta (a última pasta, onde o arquivo residirá).
Enquanto na segunda solução, teremos /path/[256 folders]/[256 folders]
uma média de 45 arquivos por pasta .
Considerando que vamos escrever / desvincular / ler arquivos ( mas principalmente ler ) desse esquema (basicamente o sistema de cache nginx), isso agrega, no sentido do desempenho, se escolhermos uma ou outra solução?
Além disso, quais são as ferramentas que poderíamos usar para verificar / testar essa configuração?
hdparm -Tt /dev/hdX
mas pode não ser a ferramenta mais apropriada.
hdparm
não é a ferramenta certa, é uma verificação do desempenho bruto do dispositivo de bloco e não um teste do sistema de arquivos.