የማውጫዎቹ መጠን ጥረታችን ዋጋ የለውም

ይህ ሙሉ በሙሉ ከንቱ ነው፣ በተግባራዊ አተገባበር ውስጥ አላስፈላጊ ነገር ግን በ*nix systems ውስጥ ስላለው ማውጫዎች አስቂኝ ትንሽ ልጥፍ ነው። አርብ ነው።

በቃለ-መጠይቆች ወቅት አሰልቺ ጥያቄዎች ብዙውን ጊዜ ስለ inodes, ስለ ሁሉም ነገር-ፋይሎች ይነሳሉ, ጥቂት ሰዎች ጤናማ መልስ ሊሰጡ የሚችሉት. ነገር ግን ትንሽ ከጠለቀ, አስደሳች ነገሮችን ማግኘት ይችላሉ.

ልጥፉን ለመረዳት ጥቂት ነጥቦች፡-

  • ሁሉም ነገር ፋይል ነው። ማውጫ እንዲሁ ፋይል ነው።
  • inode ከፋይሉ ሜታዳታ ያከማቻል፣ የፋይሉ ስም ግን እዚያ አልተቀመጠም።
  • የፋይሉ ስም በማውጫው ውስጥ ተከማችቷል
  • የማውጫው መጠን፣ በ ls ውስጥ የሚታየው ተመሳሳይ እና በነባሪ 4Kb ነው፣ በማውጫው ውስጥ ባለው የፋይሎች ብዛት እና በስማቸው ርዝመት ይወሰናል።
  • በግልጽ ለማየት እንደሚቻለው, ብዙ ፋይሎች, የማውጫውን መጠን ይበልጣል

አሁን አስደናቂው ክፍል ይኸውና ከአንድ ሚሊዮን ፋይሎች ጋር ማውጫ እንፈጥራለን, የማውጫውን መጠን እንፈትሻለን, ከዚያም ሁሉንም ፋይሎች ሰርዝ እና የማውጫውን መጠን እንመለከታለን.

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

እንደሚመለከቱት ፣ ምንም እንኳን ቢመስልም የማውጫው መጠን አልተቀየረም :)

የ fsck (እና የ -D አማራጭን) በመጠቀም የማውጫውን መጠን (ሳይሰርዙት) ብቻ ማስተካከል ይችላሉ።

ግን ይህ ለምን እንደ ሆነ ለመፈለግ በሄድኩበት ጊዜ ከ 10 ዓመታት በፊት እንዲህ ዓይነቱ ባህሪ ቀድሞውኑ እንደነበረ ታወቀ ተወያይተዋል። በ lkml. እና እንደ ገንቢዎች ከሆነ, ጥገናው ጥረቱን ብቻ ዋጋ የለውም.

ምንጭ: hab.com

አስተያየት ያክሉ