డైరెక్టరీల పరిమాణం మా కృషికి విలువైనది కాదు

ఇది పూర్తిగా పనికిరానిది, ఆచరణాత్మక అనువర్తనంలో అనవసరం, కానీ *nix సిస్టమ్‌లోని డైరెక్టరీల గురించి చిన్న చిన్న పోస్ట్. ఇది శుక్రవారం.

ఇంటర్వ్యూల సమయంలో, ఐనోడ్‌లు, ప్రతిదీ ఫైల్‌ల గురించి తరచుగా బోరింగ్ ప్రశ్నలు తలెత్తుతాయి, దీనికి కొంతమంది వ్యక్తులు తెలివిగా సమాధానం ఇవ్వగలరు. కానీ మీరు కొంచెం లోతుగా త్రవ్వినట్లయితే, మీరు ఆసక్తికరమైన విషయాలు కనుగొనవచ్చు.

పోస్ట్‌ను అర్థం చేసుకోవడానికి, కొన్ని పాయింట్‌లు:

  • ప్రతిదీ ఒక ఫైల్. డైరెక్టరీ కూడా ఒక ఫైల్
  • ఐనోడ్ ఫైల్ నుండి మెటాడేటాను నిల్వ చేస్తుంది, కానీ ఫైల్ పేరు అక్కడ నిల్వ చేయబడదు
  • ఫైల్ పేరు డైరెక్టరీ డేటాలో నిల్వ చేయబడుతుంది
  • డైరెక్టరీ పరిమాణం, అదే 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 లో. మరియు డెవలపర్‌ల ప్రకారం, పరిష్కారం కేవలం కృషికి విలువైనది కాదు.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి