¿Qué sistema de archivos de Linux elegirías para la mejor velocidad en el siguiente escenario:
- cien millones de archivos
- ~ 2k tamaño de archivo en promedio
- > 95% de acceso de lectura
- bastante acceso aleatorio
- alta concurrencia (> 100 procesos)
Nota: Los archivos se almacenan en un árbol jerárquico profundo para evitar directorios grandes. Cada directorio de hoja contiene alrededor de mil archivos.
¿Cómo lo compararías?
linux
filesystems
benchmark
bene
fuente
fuente
Respuestas:
Aquí hay algunos resultados que comparan todos los principales FS de linux con bonnie ++ que puede usar como punto de partida.
En términos de búsquedas aleatorias, Reiser gana, seguido de EXT4, seguido de JFS. No estoy seguro de si esto se correlacionará exactamente con las búsquedas de directorio, pero parece que sería un indicador. Tendrás que hacer tus propias pruebas para eso específicamente. EXT2 supera todo para los tiempos de creación de archivos, probablemente debido a la falta de un diario, aún EXT4 supera todo excepto Reiser, que es posible que no desee utilizar debido al estado actual de Hans Reiser.
Es posible que desee buscar unidades que admitan NCQ y asegurarse de que su instalación esté configurada para usarla. Bajo una búsqueda intensa, debería proporcionar un aumento de velocidad.
Por último, asegúrese de que su máquina tenga una tonelada de ram. Como los archivos no se actualizan a menudo, Linux terminará almacenando en caché la mayoría de ellos en RAM si tiene espacio libre. Si sus patrones de uso son correctos, esto le dará un aumento de velocidad masivo.
fuente
Estoy de acuerdo con la mayoría de lo que dijo Andrew, excepto que recomendaría Reiser4 o el ReiserFS más antiguo (pero mejor compatible) . Como indican esas pruebas (y la documentación de ReiserFS), está diseñado para la situación sobre la que está preguntando (gran cantidad de archivos o directorios pequeños). He usado ReiserFS en el pasado con Gentoo y Ubuntu sin ningún problema.
En cuanto al estado de Hans Reiser, no lo veo como un problema con el código o la estabilidad del sistema de archivos. Reiser4 incluso está patrocinado por DARPA y Linspire, por lo que si bien estoy de acuerdo en que el desarrollo posterior del Sistema de archivos Reiser es indeterminado, no creo que sea un factor decisivo sobre si alguien debería usarlo o no.
fuente
Sé que esta no es una respuesta directa a su pregunta, pero en estos casos creo que una base de datos podría ser más adecuada para alojar esto. Los archivos pequeños pueden almacenarse en formato binario en una tabla de base de datos y recuperarse en wil. Sin embargo, el software que está utilizando estos archivos debería ser capaz de soportar esto ...
fuente
Alguien en el Unix StackExchange creó un punto de referencia (con fuente) para probar solo este escenario:
P: ¿Cuál es el sistema de archivos Linux de más alto rendimiento para almacenar muchos archivos pequeños (HDD, no SSD)?
El mejor rendimiento de lectura parece provenir de ReiserFS.
fuente
En mi experiencia, ext2 sopla ext4 fuera del agua para archivos pequeños. Si no te importa la integridad de la escritura, es genial. Por ejemplo, subversion crea montones y montones y montones de archivos pequeños, que ext4 y otros sistemas de archivos (XFS) se ahogan (ejecute un trabajo cron que sincronice los datos con ext4 desde ext2 cada media hora más o menos prácticamente resuelve el problema).
La ejecución de estos comandos hace que ext2 sea aún más rápido (aunque la mayoría de estas opciones hacen que el sistema de archivos sea inestable después de un bloqueo, a menos que ejecute la sincronización antes de que falle). Estos comandos casi no tienen efecto en ext4 con archivos pequeños.
fuente
Supongo que ext3 (o ext4), tal vez JFS sería una buena solución. Sería cauteloso con ext4 y btrfs (los sistemas de archivos son complicados; prepárese con copias de seguridad si desea utilizar las últimas novedades).
También hay varios parámetros que puede ajustar durante el tiempo de mkfs para ajustar el sistema de archivos a su gusto.
Sin duda lo recomendaría contra XFS. No porque sea un mal sistema de archivos, sino que la creación / eliminación es una operación costosa.
Para evitar problemas con las búsquedas en el directorio, use un esquema de nombres inteligente, por ejemplo:
o esquemas similares, más complicados. Esto acelerará sus búsquedas en el directorio y, por lo tanto, las velocidades de acceso generales. (Es un viejo truco de Unix, creo que desde V7)
fuente
La mayoría de los FS se ahogarán con más de 65K archivos en un directorio, creo que eso sigue siendo cierto para ext4. Los sistemas de archivos Reiser no tienen ese límite (la gente de mp3.com pagó para asegurarse de eso). No estoy seguro de nada más, pero ese es uno de los escenarios de uso para los que se creó ReiserFS.
fuente
ls
o complete la pestaña, funcionará rápidamente. Probablemente debido al índice.