¿Cómo funciona Windows con NTFS con grandes volúmenes de archivos y directorios?
¿Hay alguna guía sobre los límites de archivos o directorios que puede colocar en un solo directorio antes de encontrarse con problemas de rendimiento u otros problemas?
Por ejemplo, ¿es correcto tener una carpeta con 100,000 carpetas dentro?
windows
performance
filesystems
ntfs
James Newton-King
fuente
fuente
Respuestas:
Aquí hay algunos consejos de alguien con un entorno donde tenemos carpetas que contienen decenas de millones de archivos.
Para responder a su pregunta más directamente: Si está viendo 100K entradas, no se preocupe. Ve a noquearte. Si está viendo decenas de millones de entradas, entonces:
a) Haga planes para subdividirlos en subcarpetas (por ejemplo, supongamos que tiene 100 millones de archivos. Es mejor almacenarlos en 1000 carpetas para que solo tenga 100,000 archivos por carpeta que almacenarlos en 1 carpeta grande). creará 1000 índices de carpeta en lugar de uno solo grande que sea más probable que alcance el límite máximo de # de fragmentos o
b) Haga planes para ejecutar contig.exe regularmente para mantener el índice de su carpeta grande desfragmentado.
Lea a continuación solo si está aburrido.
El límite real no está en el número de fragmentos, sino en el número de registros del segmento de datos que almacena los punteros al fragmento.
Entonces, lo que tiene es un segmento de datos que almacena punteros a los fragmentos de los datos del directorio. Los datos del directorio almacenan información sobre los subdirectorios y subarchivos que supuestamente almacenó el directorio. En realidad, un directorio no "almacena" nada. Es solo una función de seguimiento y presentación que presenta la ilusión de jerarquía para el usuario, ya que el medio de almacenamiento en sí es lineal.
fuente
contig.exe
No está en mi servidor. Una búsqueda en Google devolvió esta página de technet que no menciona subdirectorios ni desfragmentación de índice de carpeta.contig.exe
a un directorio, creo que hará el trabajo:contig -a .
da:C:\temp\viele-Dateien is in 411 fragments Summary: Number of files processed : 1 Average fragmentation : 411 frags/file
c:\my\big\directory
, oc:\my\big\directory\*
, o en$mft
? (o algo más?)También hay problemas de rendimiento con la creación de nombres de archivo cortos que ralentizan las cosas. Microsoft recomienda desactivar la creación de nombres de archivo cortos si tiene más de 300k archivos en una carpeta [1]. Cuanto menos únicos son los primeros 6 caracteres, más problemático es este.
[1] Cómo funciona NTFS en http://technet.microsoft.com , busque "300,000"
fuente
If you use large numbers of files in an NTFS folder (300,000 or more), disable short-file name generation for better performance, and especially if the first six characters of the long file names are similar.
: ahorra la búsqueda de la pista "300,000". Por cierto: escribir "300" será suficiente (= no hay necesidad de portapapeles aquí)Estoy creando una estructura de archivos para alojar hasta 2 mil millones (2 ^ 32) de archivos y realicé las siguientes pruebas que muestran una fuerte caída en el rendimiento de navegación + lectura en aproximadamente 250 archivos o 120 directorios por directorio NTFS en una unidad de estado sólido ( SSD):
Curiosamente, el número de directorios y archivos NO interfiere significativamente.
Entonces las lecciones son:
Estos son los datos (2 mediciones para cada archivo y directorio):
Y este es el código de prueba:
fuente
100,000 deberían estar bien.
He visto (anecdóticamente) a personas que tienen problemas con muchos millones de archivos y yo mismo he tenido problemas con Explorer simplemente porque no tengo idea de cómo contar más de 60 mil archivos, pero NTFS debería ser bueno para los volúmenes que está hablando.
En caso de que se lo pregunte, el número máximo técnico (y espero teórico ) de archivos es: 4,294,967,295
fuente
Para el acceso local, un gran número de directorios / archivos no parece ser un problema. Sin embargo, si está accediendo a ella a través de una red, hay un notable rendimiento después de unos pocos cientos (especialmente cuando se accede desde máquinas Vista (XP a Windows Server con NTFS parecía correr mucho más rápido en ese sentido)).
fuente
Cuando crea una carpeta con N entradas, crea una lista de N elementos a nivel de sistema de archivos. Esta lista es una estructura de datos compartidos en todo el sistema. Si luego comienza a modificar esta lista continuamente agregando / eliminando entradas, espero al menos cierta contención de bloqueo sobre los datos compartidos. Esta discusión, teóricamente , puede afectar negativamente el rendimiento.
Para escenarios de solo lectura, no puedo imaginar ninguna razón para la degradación del rendimiento de los directorios con una gran cantidad de entradas.
fuente
Tenía experiencia real con aproximadamente 100 000 archivos (cada uno de varios MB) en NTFS en un directorio mientras copiaba una biblioteca en línea.
Se tarda unos 15 minutos en abrir el directorio con Explorer o 7-zip.
Copia del sitio de escritura con
winhttrack
siempre se atascará después de un tiempo. También se ocupó del directorio, que contiene alrededor de 1 000 000 de archivos. Creo que lo peor es que el MFT solo puede atravesarse secuencialmente.Abrir el mismo bajo ext2fsd en ext3 dio casi el mismo tiempo. Probablemente mudarse a reiserfs (no reiser4fs) puede ayudar.
Intentar evitar esta situación es probablemente lo mejor.
Para sus propios programas que usan blobs sin ningún fs podría ser beneficioso. Así lo hace Facebook para almacenar fotos.
fuente