¿De qué manera la longitud de un nombre de archivo afecta restante espacio de almacenamiento en un disco?

StackOverflow https://stackoverflow.com/questions/3775080

Pregunta

¿Cómo funciona la longitud de un nombre de archivo afectar restante espacio de almacenamiento en un disco?

Me di cuenta que es el sistema de archivos dependientes. En particular, estoy pensando en la serie EXT de sistemas de archivos. No entiendo completamente cómo afectan ínodos espacio en disco y cómo se almacena el nombre del archivo en sí. Es difícil conseguir resultados relevantes para esta pregunta también. Es por eso que estoy pidiendo aquí. En Linux, la longitud máxima del nombre del archivo es normalmente de 255 o 256 caracteres. Cuando se crea el sistema de archivos, es la cantidad de espacio "reservado" para todos y cada nombre de archivo? En otras palabras, es el almacenamiento en disco no se ve afectado por el nombre real del archivo debido a que el máximo ya se utiliza? O es más complicado que eso?

Supongamos, tengo un archivo llamado "joe.txt" y cambiarle el nombre a "joe2.txt". la cantidad de espacio disponible en disco ha disminuido después de esto? ¿Qué pasa con nombres largos, como "joe_version.txt" o "joe_original_version_with_bug_that_Jim_solved.txt"? Estoy preocupado por rangos en los caracteres de 8, 16, 32, 64, etc. Me va a almacenar millones de imágenes. Nunca me he tomado la molestia de preocuparse acerca de un tema tan antes, así que no estoy completamente seguro de cómo funciona este.

Aunque EXT es el único sistema de ficheros estoy usando, discutiendo FAT y otros podrían ser útiles a otra persona que tenga una pregunta similar.

¿Fue útil?

Solución

En Linux (o, más generalmente, de tipo Unix) sistemas de archivos nombres de los archivos se almacenan en inodos entrada de directorio, que contienen una lista de nombres de archivos, (número de inodo) asignaciones para cada archivo en el directorio. Mi entendimiento es que para cada nombre de archivo existe espacio reservado para los personajes NAME_MAX. Y de hecho, en Linux NAME_MAX es 255.

Por lo tanto, para responder a la pregunta, cuando se crea el sistema de archivos no hay un espacio reservado para los nombres de archivo, pero una vez que se crea un archivo de bytes NAME_MAX están reservados para el nombre. Por otra parte, para el i-nodo del directorio, mi entendimiento es que al menos en el espacio ext2 / 3/4 se asigna en bloque de disco (4 KB, a menos que usted está haciendo algo muy extraño) granularidad, según sea necesario. Es decir. un directorio ocupa como mínimo 4 KB (además de una entrada en el inode directorio padre), y si la lista de (filename, inode) pares no encaja en que 4 KB (menos otros gastos generales, por ejemplo, permisos de directorio), asigna un nuevo bloque de 4 KB para continuar la lista, y así sucesivamente (ext2 / 3 utiliza un esquema de bloque indirecto, mientras que los usos ext4 extensiones).

Otros consejos

FAT16 pre-asigna.

FAT32 utiliza una solución alternativa para proporcionar los nombres de archivo largos; como el nombre del archivo se hace más largo, se requieren bloques de archivo del directorio adicionales para almacenar los caracteres adicionales - y un archivo de directorio es un archivo normal, por lo que este espacio de disco adicional consume. Sin embargo, la asignación más pequeño es un racimo, por lo menos la tienda de nombre de archivo adicional excede el límite de clúster, no hay espacio de disco adicional se consume de lo que de otro modo podría haber utilizado.

No estoy familiarizado con la forma improvisada nombres de archivos se manejan en los sistemas de ficheros de tipo UNIX.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top