GNU/Linux >> Linux Esercitazione >  >> Linux

Perché la dimensione di una directory è sempre di 4096 byte in unix?

E' la dimensione iniziale necessaria per memorizzare i meta-dati sui file contenuti in quella directory (inclusi i nomi). L'allocazione iniziale è uguale alla dimensione di un settore, ma può crescere oltre se necessario. Una volta allocato, lo spazio non viene liberato se i file vengono rimossi, per ridurre la frammentazione.

Ad esempio:

$ 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/

fonte


A volte 4096 byte è l'unità di allocazione più piccola per alcuni filesystem. Ecco perché la directory ha 4096.

La stessa cosa vale per i file. Anche se alcuni file potrebbero riportare meno di 4096, in realtà occupano almeno 4096 di spazio di archiviazione dal disco.


4096 è riservato per ridurre la frammentazione, perché spesso la dimensione effettiva dei metadati contenuti fluttuerà in base al contenuto della directory. Se è in costante crescita e riduzione (diciamo che conteneva file di registro o contenuto dinamico) nel tempo potrebbe influire negativamente sulle prestazioni. Questo probabilmente non accadrebbe con una cartella, ma in tutto il file system si sommerebbe rapidamente.


Linux
  1. Perché è stato scelto "~" per rappresentare la home directory?

  2. Perché Rsync insiste sul fatto che c'è una differenza la seconda volta che lo eseguo?

  3. Posso presumere che la dimensione di long int sia sempre di 4 byte?

  4. Quale comando nella shell sh di Linux/UNIX restituisce la mia directory corrente?

  5. Perché il terribile 'rm -rf /' è persino permesso?

Come ottenere la dimensione di una directory in Linux

Come ottenere la dimensione di una directory in Linux

Come trovare la dimensione di una directory in Linux

Come trovare la dimensione totale di una directory in Linux

Come ottenere la dimensione effettiva della directory (da du)?

Perché le persone di Linux dicono sempre di leggere il manuale?