GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi la taille d'un répertoire est-elle toujours de 4096 octets sous Unix ?

C'est la taille initiale nécessaire pour stocker les métadonnées sur les fichiers contenus dans ce répertoire (y compris les noms). L'allocation initiale est égale à la taille d'un secteur, mais peut augmenter au-delà si nécessaire. Une fois alloué, l'espace n'est pas libéré si les fichiers sont supprimés, afin de réduire la fragmentation.

Par exemple :

$ mkdir testdir
$ cd testdir
$ ls -ld .
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:28 ./
$ for ((i=0; i<1000; i++)); do touch some_longish_file_name_$i; done
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ rm some_longish_file_name_*
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ cd ..
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 testdir/
$ rmdir testdir ; mkdir testdir
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:29 testdir/

sources


Parfois, 4096 octets est la plus petite unité d'allocation pour certains systèmes de fichiers. C'est pourquoi le répertoire a 4096.

La même chose s'applique aux fichiers. Même si certains fichiers peuvent signaler moins de 4096, ils prennent en fait au moins 4096 de stockage sur le disque.


4096 est réservé pour réduire la fragmentation, car souvent la taille réelle des métadonnées contenues fluctue en fonction du contenu du répertoire. S'il augmente et diminue constamment (par exemple, il contient des fichiers journaux ou du contenu dynamique) au fil du temps, cela pourrait nuire aux performances. Cela ne se produirait probablement pas avec un dossier, mais dans l'ensemble du système de fichiers, cela s'additionnerait rapidement.


Linux
  1. Linux - Pourquoi le répertoire racine est-il désigné par un signe / ?

  2. Trouver la taille du secteur d'une partition ?

  3. Pourquoi Rsync insiste-t-il qu'il y a une différence la deuxième fois que je l'exécute ?

  4. pourquoi la sortie de `du` est-elle souvent si différente de `du -b`

  5. Puis-je supposer que la taille de long int est toujours de 4 octets?

Comment obtenir la taille d'un répertoire sous Linux

Comment obtenir la taille d'un répertoire sous Linux

Comment trouver la taille d'un répertoire sous Linux

Comment trouver la taille totale d'un répertoire sous Linux

Quelle commande du shell sh Linux/UNIX renvoie mon répertoire actuel ?

Pourquoi le terrible 'rm -rf /' est-il même autorisé ?