Velikost map ni vredna našega truda

To je povsem nepomemben, v praksi nepotreben, a zabaven kratek prispevek o direktorijih v *nix sistemih. Petek je vendarle.

Na razgovorih za delo pogosto naletimo na dolgočasna vprašanja o inode-ih, vse-je-dosje, na katera redko kdo lahko razumno odgovori. Toda, če malo poglobimo, lahko najdemo zanimive stvari.

Za razumevanje prispevka nekaj tez:

  • vse je datoteka. direktorij je prav tako datoteka
  • v inode-u so shranjeni meta-podatki o datoteki, vendar ime datoteke tam ni shranjeno
  • ime datoteke je shranjeno v podatkih direktorija
  • velikost direktorija, tista, ki jo vidimo pri ls in je privzeto 4KB, je odvisna od števila datotek v direktoriju in dolžine njihovih imen
  • očividno je, da več kot je datotek, večja je velikost direktorija

Zdaj zanimivo: ustvarimo direktorij z milijonom datotek, preverimo velikost direktorija, potem pa izbrišemo vse datoteke in pogledamo velikost direktorija.

$ mkdir niceDir && cd niceDir
# odvisno od hitrosti nosilca, naslednji ukaz lahko traja 2-10 minut
$ for ((i=1;i<133700;i++)); do touch long_long_looong_man_sakeru_$i ; done
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M 2. avg 13:37 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M  2. avg 13:37 .

Kot lahko opazite, velikost direktorija se ni spremenila, čeprav se zdi 🙂

Velikost direktorija (brez brisanja) lahko popravite le s pomočjo fsck (in opcije -D) v odmontiranem stanju.

Ko sem šel iskati, zakaj je to tako, sem ugotovil, da je pred 10 leti to obnašanje že bilo raspravljali v lkml. Po mnenju razvijalcev popravilo preprosto ni vredno vloženih prizadevanj.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster