La limitación de los 32.000 ficheros por directorio de EXT3
Hace no mucho tiempo, desarrollé un programa que guardaba cierta información de los clientes en un directorio bajo
el sistema de ficheros EXT3 en Linux.
Todo funcionaba bien hasta que empezarón las pruebas de carga. De repente el programa dejó de funcionar; no podía crear
ficheros. Mi mente privilegiada pensó, hago un du -h para ver si tengo espacio en disco. Pues si, si tenía espacio en disco.
Al final me fui al sistema de ficheros, a la carpeta donde no se podían crear más ficheros e intenté crear uno más. Cual fue mi sorpresa
al darme cuenta que EXT3 tiene una limitación a la hora de crear ficheros en un directorio ( tanto ficheros como subdirectorios ).
Parece ser que tanto EXT2 como EXT3 tienen una limitación de 32000 links por inodo,
lo cual quiere decir que el número máximo de subdirectorios asciende a 31998 y por tanto 32000 ficheros debido a su limitación de
32000 links por inodo.
Existen algunos tipos de sistemas de ficheros como reiserfs, que cuentan con “inodos dinámicos”
Si quieres testear el número máximo de ficheros que puedes crear en tu sistema de ficheros, aquí os dejo un script para que os divirtais:
#!/bin/bash # # Test para controlar el número de ficheros por directorio # TESTDIR="/tmp/pruebas" LIMIT=100000 a=1 mkdir ${TESTDIR} while [ "$a" -le $LIMIT ] do echo "mkdir ${TESTDIR}/$a" mkdir "${TESTDIR}/$a" let "a+=1" done
Para contar el número de ficheros que tiene un directorio podemos hacer lo siguiente:
ls -l /path/al_directorio | wc -l