Ang laki ng mga direktoryo ay hindi katumbas ng aming pagsisikap

Ito ay isang ganap na walang silbi, hindi kailangan sa praktikal na aplikasyon, ngunit nakakatawang maliit na post tungkol sa mga direktoryo sa *nix system. Biyernes ngayon.

Sa panahon ng mga panayam, ang mga boring na tanong ay madalas na bumangon tungkol sa mga inode, everything-is-files, na kakaunting tao ang makakasagot nang matino. Ngunit kung maghuhukay ka ng kaunti pa, makakahanap ka ng mga kawili-wiling bagay.

Upang maunawaan ang post, ilang puntos:

  • lahat ay isang file. ang direktoryo ay isa ring file
  • ang inode ay nag-iimbak ng metadata mula sa file, ngunit ang pangalan ng file ay hindi nakaimbak doon
  • ang pangalan ng file ay naka-imbak sa data ng direktoryo
  • Ang laki ng direktoryo, ang parehong ipinapakita sa ls at 4Kb bilang default, ay depende sa bilang ng mga file sa direktoryo at sa haba ng kanilang mga pangalan
  • Malinaw, mas maraming mga file, mas malaki ang laki ng direktoryo

Ngayon narito ang kawili-wiling bahagi: lumikha kami ng isang direktoryo na may isang milyong mga file, suriin ang laki ng direktoryo, at pagkatapos ay tanggalin ang lahat ng mga file at tingnan ang laki ng direktoryo.

$ mkdir niceDir && cd niceDir
# Π² зависимости ΠΎΡ‚ скорости носитСля, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ 2-10 ΠΌΠΈΠ½ΡƒΡ‚
$ 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 .

Tulad ng nakikita mo, ang laki ng direktoryo ay hindi nagbago, bagaman tila :)

Maaari mo lamang ayusin ang laki ng isang direktoryo (nang hindi tinatanggal ito) gamit ang fsck (at ang -D na opsyon) sa isang hindi naka-mount na estado.

Ngunit nang hinanap ko kung bakit nagkaganito, lumabas na 10 taon na ang nakararaan ay nagkaroon na ng ganoong pag-uugali napag-usapan sa lkml. At ayon sa mga developer, ang pag-aayos ay hindi katumbas ng pagsisikap.

Pinagmulan: www.habr.com

Magdagdag ng komento