web-dev-qa-db-fra.com

Pourquoi la taille d'un répertoire est-elle 0 ou 4096?

$ ls -l
total 28
drwxrwxrwx 1 t t 4096 May  8  2018  dir1
drwxrwxrwx 1 t t    0 Mar 12  2015  dir2
drwxrwxrwx 1 t t 4096 Jan 17  2014  dir3
drwxrwxrwx 1 t t 4096 Jun 12  2017  dir4
drwxrwxrwx 1 t t    0 Aug 24  2012  dir5

Pourquoi la taille d'un répertoire est-elle 0 ou 4096?

La taille d'un répertoire 0 est-elle parce que les entrées d'utilisation peuvent-elles entrer dans son inode?

La taille d'un répertoire ne doit-elle pas 0 car les entrées d'utilisation ne peuvent pas entrer dans son inode et ont donc besoin de certains blocs de données?

Pourquoi la taille non zéro d'un répertoire est-elle toujours 4096?

Merci.

Remarque Mon observation est la même dans le système de fichiers EXT4 et dans le système de fichiers NTFS. Cela signifie-t-il que les deux types de fichier de fichiers implémentent des répertoires de la même manière?

10
Tim

Certains systèmes de fichiers ont un espace dans l'inode qui peut être utilisé pour contenir de très petits répertoires. Mais une fois que le répertoire est suffisamment grand pour ne pas s'adapter dans cette zone, le système d'exploitation allouera une unité d'allocation de fichiers entière qui, dans votre cas, est apparemment 4096 octets.

Sur EXT4, cela est activé avec l'option Inline_Data ext4.

https://ext4.wiki.kernel.org/index.php/ext4_disk_layout#inline_directories

7
Ed Grimm

Environ 4096

Pour citer Réponse de Terry Wang :

Un répertoire est juste un fichier spécial contenant une gamme de noms de fichiers et de numéros d'inode. Lorsque le répertoire a été créé, le système de fichiers a alloué 1 inode au répertoire avec un "nom de fichier" (nom de la DIR en fait). Les points d'inode à un seul bloc de données (surcharge minimum), qui correspond à 4096 octets.

Les répertoires peuvent augmenter de plus de 4096, et l'un des bugs particuliers "de l'EXT4 Système de fichiers qui n'ont pas encore reçu de priorité, c'est que l'autre information de répertoire a dépassé 4096 octets, ce nombre n'est pas décrété si les fichiers sont supprimé. Et probablement le gros disque flash est que la manière dont les informations allouées pour un répertoire dépendent du système de fichiers et même des options activées/désactivées ( Source ), de sorte que le numéro spécial 4096 est spécifique à ext4 dans cette cas, mais pourrait être autre chose sur d'autres systèmes de fichiers tels que UFS par exemple.

Notez Toutefois, Terry parle d'Inode qui représente le répertoire, le répertoire lui-même étant un répertoire parent. Les contenus d'annuaire initial sont des préentses ou des liens . et ..


Environ 0

Le système de fichiers EXT4 est par défaut de créer des répertoires (même s'il est vide) avec une allocation de 4096 octets. C'est la clé. Selon - ServerFault et Arch Linux Forum Lorsque le répertoire indique que le répertoire indique que le répertoire est installé ou héberge un système de fichiers autre que EXT4.

Et ceci est vrai des systèmes de fichiers virtuels (qui ne sont effectivement pas des systèmes de fichiers physiques sur disque, mais sont plutôt une interface exposée par le noyau et sont contenues en mémoire):

$ ls -ld /proc /sys 
dr-xr-xr-x 243 root root 0 Feb 24 13:57 /proc
dr-xr-xr-x  13 root root 0 Feb 26 14:42 /sys
4
Sergiy Kolodyazhnyy