Question

Comment la longueur d'un nom de fichier restant espace affect stockage sur un disque?

Je sais que cela dépend système de fichiers. En particulier, je pense à la série EXT des systèmes de fichiers. Je ne comprends pas bien comment les inodes affectent l'espace disque et la façon dont le nom lui-même est stocké. Il est difficile d'obtenir des résultats de recherche pertinents pour cette question aussi. Voilà pourquoi je demande ici. Sur linux, la longueur du nom de fichier maximale est généralement de 255 ou 256 caractères. Lorsque le système de fichiers est créé, est la quantité d'espace « réservé » pour chaque nom de fichier? En d'autres termes, est le stockage sur disque non affecté par le nom du fichier, car le maximum est déjà utilisé? Ou est-ce plus compliqué que cela?

Supposons, j'ai un fichier nommé « joe.txt » et le renommer « joe2.txt ». Est-ce que la quantité d'espace disque disponible a diminué après cela? Qu'en est-il des noms plus longs comme « joe_version.txt » ou « joe_original_version_with_bug_that_Jim_solved.txt »? Je suis inquiet au sujet des seuils à 8, 16, 32, 64, etc caractères. J'entreposez des millions d'images. Je ne l'ai jamais pris la peine à se soucier de cette question avant, donc je ne suis pas tout à fait sûr de savoir comment cela fonctionne.

Bien que EXT est le seul système de fichiers que je utilise, discuter FAT et d'autres pourraient être utiles à quelqu'un d'autre qui a une question similaire.

Était-ce utile?

La solution

Les noms de fichier sous Linux (ou plus généralement, les systèmes de fichiers de type Unix) sont stockés, qui contiennent dans inodes d'entrée de répertoire une liste des correspondances (nom de fichier, numéro d'inode) pour chaque fichier dans le répertoire. Je crois comprendre que pour chaque nom de fichier, il y a un espace réservé pour les caractères NAME_MAX. Et en effet, sur Linux NAME_MAX est de 255.

Alors, pour vous répondre à la question, lorsque le système de fichiers est créé, il n'y a pas d'espace réservé aux noms de fichiers, mais une fois que vous créez un fichier octets NAME_MAX sont réservés pour le nom. De plus, pour le inode de répertoire, je crois comprendre que, au moins sur l'espace ext2 / 3/4 est attribué dans le bloc de disque (4 Ko, sauf si vous faites quelque chose de très étrange) granularité au besoin. C'est à dire. un répertoire occupe au minimum 4 KB (plus d'une entrée dans le répertoire parent inode), et si la liste des (filename, inode) paires ne correspond pas à ce que 4 KB (moins d'autres frais généraux, par exemple les autorisations de répertoire), il alloue un nouveau bloc de 4 Ko pour continuer la liste, et ainsi de suite (ext2 / 3 utilise un schéma de principe de indirect, alors que ext4 utilisations étendues).

Autres conseils

FAT16 pré-Alloue.

FAT32 utilise un travail autour de fournir les noms longs; comme le nom du fichier devient plus, des blocs de fichiers de répertoire supplémentaires sont nécessaires pour stocker les caractères supplémentaires - et un fichier de répertoire est un fichier régulier, donc ce consomme de l'espace disque supplémentaire. Cependant, la plus petite allocation est un cluster, donc à moins que le magasin de nom de fichier supplémentaire dépasse la limite du cluster, pas d'espace disque supplémentaire est consommé à partir de ce que vous pourriez avoir utilisé autrement.

Je ne suis pas familier avec désinvolture la façon dont les noms de fichiers sont traités dans les systèmes de fichiers de type UNIX.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top