
Estoy usando CentOS 5 con Plesk 9 (64 bits), estoy ejecutando un sitio donde los usuarios cargarán imágenes. Con un sistema operativo de 64 bits, ¿existe algún límite en cuanto a la cantidad de archivos que puedo almacenar? Lo único que me importa es el rendimiento y la distribución de los archivos. Preferiría no tener 4 directorios de archivos dispersos. Sin embargo, espero que en algún momento pueda tener entre 200 y 300 mil imágenes.
Respuesta1
Si usted esusando ext3, Encontréesta cita(advertencia: sitio de habla hispana)
"Hay un límite de 32k (32768) subdirectorios en un solo directorio, una limitación que probablemente sea sólo de interés académico, ya que muchas personas ni siquiera tienen tantos archivos (aunque es posible que los grandes servidores de correo deban tenerlo en cuenta). La especificación del inodo ext2 permite que más de 100 billones de archivos residan en un solo directorio"
Otras lecturasmostró que ext3notiene una limitación de 32K, que se puede probar empíricamente con
a=0; i=1; while [ $a == 0 ]; do touch $i; a=$?; let i++; done
perosi tieneun límite de carpeta de 32 K por carpeta, que se puede probar con
a=0; i=1; while [ $a == 0 ]; do mkdir $i; a=$?; let i++; done
Esta afirmación (infundada)dice que
ReiserFS no tiene ningún problema con cientos de miles de archivos en un único directorio. flabdablet - 1 de febrero de 2007
Esta preguntadel sitio hermano stackoverflow.com también podría ayudar.
En general:
- Alláesun límite a la cantidad de directorios,
- Túdeberíamantenga sus archivos/directorios por debajo de 32 K, peropoderir mucho más lejos,
- El sistema de archivos que estás utilizando sí importa.
Respuesta2
Esto depende en gran medida del sistema de archivos que utilice. Ciertas versiones anteriores de ext3 eran atroces con esto, y así es como surgieron los btrees. Reiser tiene mucho más rendimiento con una gran cantidad de archivos como ese. En el pasado, tenía un directorio Novell NSS en un servidor NetWare con 250.000 archivos de 4 kb debido a un error de GroupWise y funcionó bien. Enumerar el directorio fue una mierda, pero acceder a un archivo específico en ese directorio funcionó tan rápido como se esperaba. Como esto fue hace 8 años, debo suponer que los sistemas de archivos Linux modernos pueden manejar eso con aplomo.
Respuesta3
Depende del sistema de archivos que esté utilizando, no de los 64 bits del sistema operativo. Con cada sistema de archivos, habrá algún punto en el que los grandes costos del algoritmo utilizado para buscar en el directorio sacarán lo mejor de la computadora.
Si puede dividir la jerarquía de archivos incluso en una jerarquía de dos (2) niveles, verá una mejor escalabilidad a largo plazo.
Respuesta4
Si vas a ir más allá de unos pocos cientos de imágenes, definitivamente considera dos cosas:
- Jerarquías anidadas con nombres de archivos hash;
- No usar ext3
Recomendaría usar XFS o, en su defecto, ReiserFS, con una jerarquía de directorios de dos o tres profundidades dividida por pares de dos bytes. p.ej
11/2f/112f667c786eac323e300632b5b2a78d.jpg
49/2f/49ef6eb6169cc57d95218c842d3dee5c.jpg
0a/26/0a26f9f363f1d05b94ceb14ff5f27284.jpg
Esto le dará 256 directorios en los primeros niveles, dividiendo las imágenes en un total de 65535 directorios separados (lo cual es más que suficiente para 100-200k imágenes y más). Hará las cosas mucho más rápidas y escalables, y también hará que su mantenimiento sea mucho más fácil en el futuro.