ver subdirectorios sintaxis listar ejemplos directorios crear contenido consola comandos comando carpeta basicos archivo linux performance ext4 xfs

subdirectorios - Almacenamiento y acceso a hasta 10 millones de archivos en Linux



listar directorios y subdirectorios linux (2)

Definitivamente debes almacenar los archivos en subdirectorios.

EXT4 y XFS utilizan métodos de búsqueda eficientes para los nombres de archivos, pero si alguna vez necesita ejecutar herramientas en directorios como ls o find que estará muy contento de tener los archivos en partes manejables de entre 1.000 y 10.000 archivos.

La cuestión del número de inodos es mejorar el rendimiento del acceso secuencial de los sistemas de archivos EXT. Los metadatos se almacenan en inodos y si accede a estos inodos fuera de orden, los accesos de los metadatos son aleatorios. Al leer sus archivos en orden de inodo, también hace que el acceso a los metadatos sea secuencial.

Estoy escribiendo una aplicación que necesita almacenar muchos archivos hasta aproximadamente 10 millones.

Actualmente están nombrados con un UUID y tendrán un tamaño de alrededor de 4 MB, pero siempre del mismo tamaño. Leer y escribir desde / hacia estos archivos siempre será secuencial.

2 preguntas principales que estoy buscando respuestas para:

1) Qué sistema de archivos sería mejor para esto. ¿XFS o ext4? 2) ¿Sería necesario almacenar los archivos debajo de los subdirectorios para reducir la cantidad de archivos dentro de un solo directorio?

Para la pregunta 2, observo que las personas han intentado descubrir el límite de XFS para la cantidad de archivos que puede almacenar en un solo directorio y no han encontrado el límite que supera los millones. No observaron problemas de rendimiento. ¿Qué hay de debajo de ext4?

Al buscar en Google con personas que hacen cosas similares, algunas personas sugirieron almacenar el número de inodo como un enlace al archivo en lugar del nombre de archivo para el rendimiento (esto se encuentra en un índice de base de datos, que también estoy usando). Sin embargo, no veo una API utilizable para abrir el archivo por número de inodo. Parecía ser más una sugerencia para mejorar el rendimiento en ext3 que no pretendo usar por cierto.

¿Cuáles son los límites ext4 y XFS? ¿Qué beneficios de rendimiento hay de uno sobre el otro y podría ver una razón para usar ext4 sobre XFS en mi caso?


Los sistemas de archivos modernos le permitirán almacenar 10 millones de archivos en el mismo directorio si lo desea. Pero las herramientas (ls y sus amigos) no funcionarán bien.

Recomiendo poner un solo nivel de directorios, un número fijo, quizás 1,000 directorios, y poner los archivos allí (10,000 archivos son tolerables para el shell y "ls").

He visto sistemas que crean muchos niveles de directorios, esto es realmente innecesario y aumenta el consumo de inodo y hace que el recorrido sea más lento.

Los archivos 10M tampoco deberían ser un problema, a menos que necesite realizar operaciones en masa en ellos.

Supongo que tendrá que podar los archivos antiguos, pero algo como "tmpwatch" probablemente funcionará bien con los archivos 10M.