Андозаи маълумотномаҳо ба саъю кӯшиши мо намеарзад

Ин як паёми комилан бефоида, дар татбиқи амалӣ нолозим, аммо як паёми хандаовар дар бораи директорияҳо дар системаҳои *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. Ва ба гуфтаи таҳиягарон, ислоҳ танҳо ба саъю кӯшиш намеарзад.

Манбаъ: will.com

Илова Эзоҳ