అందరికి వందనాలు! మీరు ఇప్పటికే ప్రేమలో పడిన కోర్సుల కోసం మేము కొత్త స్ట్రీమ్లను ప్రారంభించడం కొనసాగిస్తున్నాము మరియు ఇప్పుడు మేము కొత్త కోర్సులను ప్రారంభిస్తున్నామని ప్రకటించడానికి తొందరపడుతున్నాము
వర్చువల్ ఫైల్ సిస్టమ్లు ఒక రకమైన మాయా నైరూప్యత వలె పనిచేస్తాయి, ఇది Linux యొక్క తత్వశాస్త్రం "ప్రతిదీ ఒక ఫైల్" అని చెప్పడానికి అనుమతిస్తుంది.
ఫైల్ సిస్టమ్ అంటే ఏమిటి? Linux యొక్క మొదటి సహకారులు మరియు రచయితలలో ఒకరి మాటల ఆధారంగా
ఫైల్ సిస్టమ్ బేసిక్స్
Linux కెర్నల్కు ఫైల్ సిస్టమ్గా పరిగణించబడే ఎంటిటీకి కొన్ని అవసరాలు ఉన్నాయి. అందుకు సంబంధించిన పద్ధతులను అమలు చేయాలి open()
, read()
и write()
పేర్లను కలిగి ఉండే స్థిరమైన వస్తువుల కోసం. వస్తువు-ఆధారిత దృక్కోణం నుండి
మనం ఒక ఎంటిటీని తెరవగలిగితే, చదవగలిగితే మరియు వ్రాయగలిగితే, ఆ ఎంటిటీ ఫైల్గా పరిగణించబడుతుంది, పైన ఉన్న కన్సోల్లోని ఉదాహరణ నుండి మనం చూడవచ్చు.
VFS దృగ్విషయం Unix-వంటి పరిశీలన "అంతా ఒక ఫైల్" అని మాత్రమే నొక్కి చెబుతుంది. పైన ఉన్న చిన్న /dev/console ఉదాహరణ కన్సోల్ వాస్తవానికి ఎలా పనిచేస్తుందో చూపడం ఎంత విచిత్రంగా ఉందో ఆలోచించండి. చిత్రం ఇంటరాక్టివ్ బాష్ సెషన్ను చూపుతుంది. కన్సోల్కు స్ట్రింగ్ను పంపడం (వర్చువల్ కన్సోల్ పరికరం) దానిని వర్చువల్ స్క్రీన్లో ప్రదర్శిస్తుంది. VFS ఇతర, అపరిచిత లక్షణాలను కలిగి ఉంది. ఉదాహరణకు, ఇది ద్వారా శోధించడానికి మిమ్మల్ని అనుమతిస్తుంది
ext4, NFS మరియు /proc వంటి సుపరిచితమైన సిస్టమ్లు C డేటా నిర్మాణంలో మూడు ముఖ్యమైన విధులను కలిగి ఉంటాయి read()
ఒక ఫైల్ సిస్టమ్ ఆపై పద్ధతిని ఉపయోగించండి write ()
డేటా అవుట్పుట్ కోసం మరొక ఫైల్ సిస్టమ్.
బేస్ VFS రకాలకు చెందిన ఫంక్షన్ నిర్వచనాలు ఫైల్లలో ఉన్నాయి fs/
నిర్దిష్ట ఫైల్ సిస్టమ్లను కలిగి ఉంటుంది. కోర్ వంటి అంశాలు కూడా ఉన్నాయి cgroups
, /dev
и tmpfs
, ఇవి బూట్ ప్రాసెస్ సమయంలో అవసరం మరియు కనుక కెర్నల్ సబ్ డైరెక్టరీలో నిర్వచించబడతాయి init/
. అది గమనించండి cgroups
, /dev
и tmpfs
"పెద్ద మూడు" ఫంక్షన్లను కాల్ చేయవద్దు file_operations
, కానీ నేరుగా చదవండి మరియు మెమరీకి వ్రాయండి.
Linux సిస్టమ్లలో సాధారణంగా మౌంట్ చేయబడిన వివిధ రకాల ఫైల్సిస్టమ్లను యూజర్స్పేస్ ఎలా యాక్సెస్ చేస్తుందో దిగువ రేఖాచిత్రం చూపుతుంది. నిర్మాణాలు చూపబడలేదు pipes
, dmesg
и POSIX clocks
, ఇది నిర్మాణాన్ని కూడా అమలు చేస్తుంది file_operations
, VFS లేయర్ ద్వారా యాక్సెస్ చేయబడింది.
VFS అనేది సిస్టమ్ కాల్లు మరియు నిర్దిష్టమైన వాటి అమలుల మధ్య "ర్యాపర్ లేయర్" file_operations
, వంటి ext4
и procfs
. విధులు file_operations
పరికర డ్రైవర్లు లేదా మెమరీ యాక్సెస్ పరికరాలతో పరస్పర చర్య చేయవచ్చు. tmpfs
, devtmpfs
и cgroups
ఉపయోగించవద్దు file_operations
, కానీ నేరుగా మెమరీని యాక్సెస్ చేయండి.
VFS ఉనికి కోడ్ని తిరిగి ఉపయోగించుకునే అవకాశాన్ని అందిస్తుంది, ఎందుకంటే ఫైల్ సిస్టమ్లతో అనుబంధించబడిన ప్రాథమిక పద్ధతులు ప్రతి రకమైన ఫైల్ సిస్టమ్ ద్వారా మళ్లీ అమలు చేయవలసిన అవసరం లేదు. సాఫ్ట్వేర్ ఇంజనీర్లలో కోడ్ పునర్వినియోగం ఒక సాధారణ పద్ధతి! అయితే, పునర్వినియోగ కోడ్ కలిగి ఉంటే
/tmp: సాధారణ సూచన
సిస్టమ్లో VFS ఉన్నట్లు గుర్తించడానికి సులభమైన మార్గం టైప్ చేయడం mount | grep -v sd | grep -v :/
, ఇది అన్ని మౌంట్ చేయబడి చూపుతుంది (mounted
) డిస్క్-రెసిడెంట్ మరియు NFS కాని ఫైల్ సిస్టమ్లు, ఇది చాలా కంప్యూటర్లలో నిజం. జాబితా చేయబడిన మౌంట్లలో ఒకటి (mounts
) VFS నిస్సందేహంగా ఉంటుంది /tmp
, సరియైనదా?
ఆ నిల్వ గురించి అందరికీ తెలుసు / tmp
భౌతిక మాధ్యమంలో - పిచ్చి!
ఎందుకు నిల్వ చేయడం అవాంఛనీయమైనది /tmp
భౌతిక మాధ్యమాలపైనా? ఎందుకంటే ఫైళ్లు లోపల ఉన్నాయి /tmp
తాత్కాలికం మరియు నిల్వ పరికరాలు tmpfs సృష్టించబడిన మెమరీ కంటే నెమ్మదిగా ఉంటాయి. అంతేకాకుండా, భౌతిక మాధ్యమం మెమరీ కంటే ఓవర్రైట్ చేయబడినప్పుడు ధరించడానికి ఎక్కువ అవకాశం ఉంది. చివరగా, /tmpలోని ఫైల్లు సున్నితమైన సమాచారాన్ని కలిగి ఉంటాయి, కాబట్టి ప్రతి రీబూట్లో వాటిని అదృశ్యం చేయడం ఒక ముఖ్యమైన లక్షణం.
దురదృష్టవశాత్తూ, కొన్ని Linux పంపిణీ ఇన్స్టాలేషన్ స్క్రిప్ట్లు డిఫాల్ట్గా నిల్వ పరికరంలో /tmpని సృష్టిస్తాయి. మీ సిస్టమ్కి కూడా ఇదే జరిగితే నిరాశ చెందకండి. కొన్ని సాధారణ సూచనలను అనుసరించండి tmpfs
ఇతర ప్రయోజనాల కోసం అందుబాటులో లేకుండా పోతుంది. మరో మాటలో చెప్పాలంటే, పెద్ద tmpfs మరియు పెద్ద ఫైల్లతో కూడిన సిస్టమ్ మెమరీ అయిపోతుంది మరియు క్రాష్ అవుతుంది. మరొక సూచన: ఫైల్ను సవరించేటప్పుడు /etc/fstab
, ఇది తప్పనిసరిగా కొత్త లైన్తో ముగియాలని గుర్తుంచుకోండి, లేకపోతే మీ సిస్టమ్ బూట్ చేయబడదు.
/proc మరియు /sys
పాటు /tmp
, Linux వినియోగదారులకు బాగా తెలిసిన VFS (వర్చువల్ ఫైల్ సిస్టమ్స్). /proc
и /sys
. (/dev
షేర్డ్ మెమరీలో నివసిస్తుంది మరియు లేదు file_operations
) ఈ రెండు భాగాలు ఎందుకు? ఈ సమస్యను పరిశీలిద్దాం.
procfs
కెర్నల్ యొక్క స్నాప్షాట్ మరియు అది పర్యవేక్షించే ప్రక్రియలను సృష్టిస్తుంది userspace
. ది /proc
కెర్నల్ అంతరాయాలు, వర్చువల్ మెమరీ మరియు షెడ్యూలర్ వంటి అందుబాటులో ఉన్న వాటి గురించి సమాచారాన్ని ప్రింట్ చేస్తుంది. అంతేకాకుండా, /proc/sys
పారామితులు కమాండ్తో కాన్ఫిగర్ చేయబడిన ప్రదేశం sysctl
, అందుబాటులో userspace
. వ్యక్తిగత ప్రక్రియల స్థితి మరియు గణాంకాలు కేటలాగ్లలో ప్రదర్శించబడతాయి /proc/
.
ఇది /proc/meminfo
అయినప్పటికీ విలువైన సమాచారాన్ని కలిగి ఉన్న ఖాళీ ఫైల్.
ప్రవర్తన /proc
ఫైల్స్ VFS డిస్క్ ఫైల్ సిస్టమ్లు ఎలా విభిన్నంగా ఉంటాయో చూపిస్తుంది. ఒకవైపు, /proc/meminfo
కమాండ్తో చూడగలిగే సమాచారాన్ని కలిగి ఉంటుంది free
. మరోవైపు ఖాళీ! ఇది ఎలా పని చేస్తుంది? అనే ప్రసిద్ధ కథనాన్ని పరిస్థితి గుర్తు చేస్తుంది /proc
, మరియు నిజానికి ఫైళ్లలో /proc
ఎవరూ చూడనప్పుడు ఏమీ ఉండదు. చెప్పినట్లు
శూన్యం కనిపిస్తోంది procfs
అక్కడ సమాచారం డైనమిక్గా ఉన్నందున అర్ధమే. తో కొంచెం భిన్నమైన పరిస్థితి sysfs
. కనీసం ఒక బైట్ పరిమాణంలో ఉన్న ఫైల్లు ఎన్ని ఉన్నాయో పోల్చి చూద్దాం /proc
మరియు లో /sys
.
Procfs
ఒక ఫైల్ను కలిగి ఉంది, అవి ఎగుమతి చేయబడిన కెర్నల్ కాన్ఫిగరేషన్, ఇది ఒక మినహాయింపు ఎందుకంటే ఇది బూట్కు ఒకసారి మాత్రమే ఉత్పత్తి చేయబడాలి. మరోవైపు, లో /sys
చాలా పెద్ద ఫైల్లు ఉన్నాయి, వాటిలో చాలా మొత్తం మెమరీ పేజీని తీసుకుంటాయి. సాధారణంగా ఫైళ్లు sysfs
వంటి ఫైల్లను చదవడం ద్వారా పొందిన సమాచార పట్టికల వలె కాకుండా, ఖచ్చితంగా ఒక సంఖ్య లేదా పంక్తిని కలిగి ఉంటుంది /proc/meminfo
.
లక్ష్యం sysfs
- కెర్నల్ కాల్ చేసే రీడ్/రైట్ ప్రాపర్టీలను అందించండి «kobjects»
యూజర్స్పేస్లో. ఒక్కటే లక్ష్యం kobjects
లింక్ లెక్కింపు: kobjectకు చివరి లింక్ తీసివేయబడినప్పుడు, సిస్టమ్ దానితో అనుబంధించబడిన వనరులను పునరుద్ధరిస్తుంది. అయినప్పటికీ, /sys
చాలా ప్రసిద్ధమైనవి
కెర్నల్ యొక్క స్థిరమైన ABI కనిపించే వాటిని పరిమితం చేస్తుంది /sys
, ఆ నిర్దిష్ట సమయంలో వాస్తవంగా ఉన్నది కాదు. sysfsలో ఫైల్ అనుమతులను జాబితా చేయడం వలన పరికరాలు, మాడ్యూల్లు, ఫైల్సిస్టమ్లు మొదలైన వాటి కోసం సెట్టింగ్లు ఎలా కాన్ఫిగర్ చేయబడతాయో అంతర్దృష్టిని అందిస్తుంది. కాన్ఫిగర్ చేయవచ్చు లేదా చదవవచ్చు. లాజికల్ ముగింపు ఏమిటంటే, procfs కూడా కెర్నల్ యొక్క స్థిరమైన ABIలో భాగమే, అయితే ఇది స్పష్టంగా పేర్కొనబడలేదు
ఫైల్లు sysfs
ప్రతి ఎంటిటీకి ఒక నిర్దిష్ట ఆస్తిని వివరించండి మరియు చదవగలిగేది, వ్రాయగలిగేది లేదా రెండూ కావచ్చు. ఫైల్లోని "0" అంటే SSDని తీసివేయడం సాధ్యం కాదు.
eBPF మరియు bcc సాధనాలను ఉపయోగించి VFSని ఎలా పర్యవేక్షించాలనే దానితో అనువాదం యొక్క రెండవ భాగాన్ని ప్రారంభిద్దాం మరియు ఇప్పుడు మేము మీ వ్యాఖ్యల కోసం వేచి ఉన్నాము మరియు సాంప్రదాయకంగా మిమ్మల్ని ఆహ్వానిస్తున్నాము
మూలం: www.habr.com