Գրացուցակների չափը չարժե մեր ջանքերը

Սա բոլորովին անիմաստ, անհարկի գործնական կիրառման մեջ, բայց զվարճալի փոքրիկ գրառում է *nix համակարգերի դիրեկտորիաների մասին: Ուրբաթ է։

Հարցազրույցների ժամանակ հաճախ ձանձրալի հարցեր են ծագում inodes-ի, ամեն ինչ-է-ֆայլերի մասին, որոնց քչերը կարող են ողջամտորեն պատասխանել: Բայց եթե մի քիչ խորանաք, կարող եք հետաքրքիր բաներ գտնել։

Գրառումը հասկանալու համար մի քանի կետ.

  • ամեն ինչ ֆայլ է: գրացուցակը նույնպես ֆայլ է
  • inode-ը պահում է մետատվյալները ֆայլից, բայց ֆայլի անունը այնտեղ չի պահվում
  • ֆայլի անունը պահվում է գրացուցակի տվյալների մեջ
  • Գրացուցակի չափը, նույնը, որը ցուցադրվում է ls-ով և լռելյայն 4 Կբ է, կախված է գրացուցակում գտնվող ֆայլերի քանակից և դրանց անունների երկարությունից:
  • Ակնհայտ է, որ որքան շատ ֆայլեր, այնքան մեծ է գրացուցակի չափը

Այժմ ահա հետաքրքիր մասը. մենք ստեղծում ենք գրացուցակ միլիոնավոր ֆայլերով, ստուգում ենք գրացուցակի չափը, այնուհետև ջնջում ենք բոլոր ֆայլերը և նայում գրացուցակի չափին:

$ 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-ով։ Եվ ըստ մշակողների, շտկումը պարզապես չարժե ջանք գործադրել:

Source: www.habr.com

Добавить комментарий