GNU/Linux >> Znalost Linux >  >> Linux

Proč je velikost adresáře v unixu vždy 4096 bajtů?

Je to počáteční velikost nezbytná pro uložení metadat o souborech obsažených v tomto adresáři (včetně jmen). Počáteční alokace se rovná velikosti jednoho sektoru, ale v případě potřeby může překročit tuto velikost. Po přidělení se místo při odstranění souborů neuvolní, aby se snížila fragmentace.

Například:

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

zdroj


Někdy je 4096 bajtů nejmenší alokační jednotkou pro některé souborové systémy. To je důvod, proč má adresář 4096.

Totéž platí pro soubory. I když některé soubory mohou hlásit méně než 4096, ve skutečnosti zabírají nejméně 4096 místa na disku.


4096 je vyhrazeno pro snížení fragmentace, protože skutečná velikost obsažených metadat bude často kolísat v závislosti na obsahu adresáře. Pokud neustále roste a zmenšuje se (řekněme, že obsahoval soubory protokolu nebo dynamický obsah), mohlo by to zhoršit výkon. To by se pravděpodobně nestalo s jednou složkou, ale v celém systému souborů by se to rychle sčítalo.


Linux
  1. Proč používáme „./“ (lomítko) ke spuštění souboru v Linuxu/unixu?

  2. Proč bylo „~“ vybráno k reprezentaci domovského adresáře?

  3. Linux – Proč je kořenový adresář označen A / Sign?

  1. Linux – jak zkombinovat strom s velikostí adresáře?

  2. Proč Rsync trvá na tom, že je rozdíl, když jej spustím podruhé?

  3. proč je výstup `du` často tak odlišný od `du -b`

  1. Mohu předpokládat, že velikost long int je vždy 4 bajty?

  2. Proč by měla být velikost odkládacího oddílu dvojnásobkem velikosti RAM?

  3. Jak získat skutečnou velikost adresáře (mimo du)?