See on tĂ€iesti kasutu, praktilises rakendamises vajalik, kuid lĂ”bus vĂ€ike postitus *nix sĂŒsteemide kataloogide kohta. Reede ju.
Tööintervjuudel kasutatakse sageli igavaid kĂŒsimusi inodide kohta, kus kĂ”ik on failid, millele keegi ei oska mĂ”istlikult vastata. Kuid kui sĂŒgavamale kaevata, vĂ”ib leida huvitavaid asju.
Postituse mÔistmiseks mÔned teesid:
- kÔik on fail. kataloog on samuti fail
- inodis hoitakse faili metaandmeid, kuid faili nime seal ei hoita
- faili nimi hoitakse katalooge andmetes
- katalooge suurus, see, mis kuvatakse kÀsuga ls ja vaikimisi on 4KB, sÔltub kataloogis olevate failide arvust ja nende nimede pikkusest
- ilmne on, et mida rohkem faile, seda suurem on katalooge suurus
Ja nĂŒĂŒd huvitav: loome katalooge miljoni failiga, kontrollime katalooge suurust ja seejĂ€rel kustutame kĂ”ik failid ja vaatame katalooge suurust.
$ mkdir niceDir && cd niceDir
# sÔltuvalt kandja kiirusest vÔib jÀrgmine kÀsk vÔtta 2-10 minutit
$ 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 Aug 2 13:37 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M Aug 2 13:37 .Nagu vĂ”ib mĂ€rgata, ei ole katalooge suurus muutunud, kuigi see vĂ”iks tunduda đ
Katalooge suuruse parandamiseks (ilma kustutamiseta) saab teha ainult fsck abil (ja valikuga -D) lahti monteeritud seisundis.
Aga kui ma hakkasin otsima, miks see nii on, selgus, et 10 aastat tagasi oli selline kÀitumine juba lkml. Ja arendajate arvates ei tasu parandamine lihtsalt Àra pingutusi.
Allikas: habr.com
