Linuxలో వర్చువల్ ఫైల్ సిస్టమ్‌లు: అవి ఎందుకు అవసరం మరియు అవి ఎలా పని చేస్తాయి? 1 వ భాగము

అందరికి వందనాలు! మీరు ఇప్పటికే ప్రేమలో పడిన కోర్సుల కోసం మేము కొత్త స్ట్రీమ్‌లను ప్రారంభించడం కొనసాగిస్తున్నాము మరియు ఇప్పుడు మేము కొత్త కోర్సులను ప్రారంభిస్తున్నామని ప్రకటించడానికి తొందరపడుతున్నాము "Linux అడ్మినిస్ట్రేటర్"ఇది ఏప్రిల్ చివరిలో ప్రారంభించబడుతుంది. ఈ ఈవెంట్ కోసం కొత్త ప్రచురణ తేదీ చేయబడుతుంది. అసలు పదార్థంతో, మీరు చేయవచ్చు ఇక్కడ చదవండి.

వర్చువల్ ఫైల్ సిస్టమ్‌లు ఒక రకమైన మాయా నైరూప్యత వలె పనిచేస్తాయి, ఇది Linux యొక్క తత్వశాస్త్రం "ప్రతిదీ ఒక ఫైల్" అని చెప్పడానికి అనుమతిస్తుంది.

Linuxలో వర్చువల్ ఫైల్ సిస్టమ్‌లు: అవి ఎందుకు అవసరం మరియు అవి ఎలా పని చేస్తాయి? 1 వ భాగము

ఫైల్ సిస్టమ్ అంటే ఏమిటి? Linux యొక్క మొదటి సహకారులు మరియు రచయితలలో ఒకరి మాటల ఆధారంగా రాబర్టా లావా, "ఫైల్ సిస్టమ్ అనేది ఒక నిర్దిష్ట నిర్మాణం ప్రకారం సమీకరించబడిన డేటా యొక్క క్రమానుగత నిల్వ." ఏది ఏమైనప్పటికీ, ఈ నిర్వచనం VFAT (వర్చువల్ ఫైల్ కేటాయింపు పట్టిక), Git మరియు వాటికి సమానంగా సరిపోతుంది కాసాండ్రా (NoSQL డేటాబేస్) కాబట్టి "ఫైల్ సిస్టమ్" వంటి దానిని సరిగ్గా నిర్వచించేది ఏమిటి?

ఫైల్ సిస్టమ్ బేసిక్స్

Linux కెర్నల్‌కు ఫైల్ సిస్టమ్‌గా పరిగణించబడే ఎంటిటీకి కొన్ని అవసరాలు ఉన్నాయి. అందుకు సంబంధించిన పద్ధతులను అమలు చేయాలి open(), read() и write() పేర్లను కలిగి ఉండే స్థిరమైన వస్తువుల కోసం. వస్తువు-ఆధారిత దృక్కోణం నుండి ప్రోగ్రామింగ్, కెర్నల్ జెనరిక్ ఫైల్‌సిస్టమ్‌ను అబ్‌స్ట్రాక్ట్ ఇంటర్‌ఫేస్‌గా నిర్వచిస్తుంది మరియు ఈ మూడు పెద్ద ఫంక్షన్‌లు "వర్చువల్"గా పరిగణించబడతాయి మరియు నిర్దిష్ట నిర్వచనం లేదు. దీని ప్రకారం, డిఫాల్ట్ ఫైల్ సిస్టమ్ అమలును వర్చువల్ ఫైల్ సిస్టమ్ (VFS) అంటారు.

Linuxలో వర్చువల్ ఫైల్ సిస్టమ్‌లు: అవి ఎందుకు అవసరం మరియు అవి ఎలా పని చేస్తాయి? 1 వ భాగము

మనం ఒక ఎంటిటీని తెరవగలిగితే, చదవగలిగితే మరియు వ్రాయగలిగితే, ఆ ఎంటిటీ ఫైల్‌గా పరిగణించబడుతుంది, పైన ఉన్న కన్సోల్‌లోని ఉదాహరణ నుండి మనం చూడవచ్చు.
VFS దృగ్విషయం Unix-వంటి పరిశీలన "అంతా ఒక ఫైల్" అని మాత్రమే నొక్కి చెబుతుంది. పైన ఉన్న చిన్న /dev/console ఉదాహరణ కన్సోల్ వాస్తవానికి ఎలా పనిచేస్తుందో చూపడం ఎంత విచిత్రంగా ఉందో ఆలోచించండి. చిత్రం ఇంటరాక్టివ్ బాష్ సెషన్‌ను చూపుతుంది. కన్సోల్‌కు స్ట్రింగ్‌ను పంపడం (వర్చువల్ కన్సోల్ పరికరం) దానిని వర్చువల్ స్క్రీన్‌లో ప్రదర్శిస్తుంది. VFS ఇతర, అపరిచిత లక్షణాలను కలిగి ఉంది. ఉదాహరణకు, ఇది ద్వారా శోధించడానికి మిమ్మల్ని అనుమతిస్తుంది అతనికి.

ext4, NFS మరియు /proc వంటి సుపరిచితమైన సిస్టమ్‌లు C డేటా నిర్మాణంలో మూడు ముఖ్యమైన విధులను కలిగి ఉంటాయి ఫైల్_ఆపరేషన్స్. అదనంగా, కొన్ని ఫైల్ సిస్టమ్‌లు సుపరిచితమైన ఆబ్జెక్ట్-ఓరియెంటెడ్ మార్గంలో VFS కార్యాచరణను విస్తరించి, పునర్నిర్వచించాయి. రాబర్ట్ లవ్ ఎత్తి చూపినట్లుగా, VFS సంగ్రహణ Linux వినియోగదారులు తమ అంతర్గత డేటా ఫార్మాట్ గురించి చింతించకుండా థర్డ్ పార్టీ ఆపరేటింగ్ సిస్టమ్‌లు లేదా పైపుల వంటి అబ్‌స్ట్రాక్ట్ ఎంటిటీలకు లేదా వాటి నుండి ఫైల్‌లను నిస్సందేహంగా కాపీ చేయడానికి అనుమతిస్తుంది. వినియోగదారు వైపు (యూజర్‌స్పేస్), సిస్టమ్ కాల్‌ని ఉపయోగించి, ప్రక్రియ పద్ధతిని ఉపయోగించి ఫైల్ నుండి కెర్నల్ డేటా స్ట్రక్చర్‌లకు కాపీ చేయవచ్చు read() ఒక ఫైల్ సిస్టమ్ ఆపై పద్ధతిని ఉపయోగించండి write () డేటా అవుట్‌పుట్ కోసం మరొక ఫైల్ సిస్టమ్.

బేస్ VFS రకాలకు చెందిన ఫంక్షన్ నిర్వచనాలు ఫైల్‌లలో ఉన్నాయి fs/*.c కెర్నల్ సోర్స్ కోడ్, అయితే సబ్ డైరెక్టరీలు fs/ నిర్దిష్ట ఫైల్ సిస్టమ్‌లను కలిగి ఉంటుంది. కోర్ వంటి అంశాలు కూడా ఉన్నాయి cgroups, /dev и tmpfs, ఇవి బూట్ ప్రాసెస్ సమయంలో అవసరం మరియు కనుక కెర్నల్ సబ్ డైరెక్టరీలో నిర్వచించబడతాయి init/. అది గమనించండి cgroups, /dev и tmpfs "పెద్ద మూడు" ఫంక్షన్లను కాల్ చేయవద్దు file_operations, కానీ నేరుగా చదవండి మరియు మెమరీకి వ్రాయండి.
Linux సిస్టమ్‌లలో సాధారణంగా మౌంట్ చేయబడిన వివిధ రకాల ఫైల్‌సిస్టమ్‌లను యూజర్‌స్పేస్ ఎలా యాక్సెస్ చేస్తుందో దిగువ రేఖాచిత్రం చూపుతుంది. నిర్మాణాలు చూపబడలేదు pipes, dmesg и POSIX clocks, ఇది నిర్మాణాన్ని కూడా అమలు చేస్తుంది file_operations, VFS లేయర్ ద్వారా యాక్సెస్ చేయబడింది.

Linuxలో వర్చువల్ ఫైల్ సిస్టమ్‌లు: అవి ఎందుకు అవసరం మరియు అవి ఎలా పని చేస్తాయి? 1 వ భాగము

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, సరియైనదా?

Linuxలో వర్చువల్ ఫైల్ సిస్టమ్‌లు: అవి ఎందుకు అవసరం మరియు అవి ఎలా పని చేస్తాయి? 1 వ భాగము

ఆ నిల్వ గురించి అందరికీ తెలుసు / 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/.

Linuxలో వర్చువల్ ఫైల్ సిస్టమ్‌లు: అవి ఎందుకు అవసరం మరియు అవి ఎలా పని చేస్తాయి? 1 వ భాగము

ఇది /proc/meminfo అయినప్పటికీ విలువైన సమాచారాన్ని కలిగి ఉన్న ఖాళీ ఫైల్.

ప్రవర్తన /proc ఫైల్స్ VFS డిస్క్ ఫైల్ సిస్టమ్‌లు ఎలా విభిన్నంగా ఉంటాయో చూపిస్తుంది. ఒకవైపు, /proc/meminfo కమాండ్‌తో చూడగలిగే సమాచారాన్ని కలిగి ఉంటుంది free. మరోవైపు ఖాళీ! ఇది ఎలా పని చేస్తుంది? అనే ప్రసిద్ధ కథనాన్ని పరిస్థితి గుర్తు చేస్తుంది ఎవరూ చూడనప్పుడు చంద్రుడు ఉంటాడా? వాస్తవికత మరియు క్వాంటం సిద్ధాంతం"1985లో కార్నెల్ యూనివర్సిటీ ఫిజిక్స్ ప్రొఫెసర్ డేవిడ్ మెర్మిన్ రాశారు. వాస్తవం ఏమిటంటే, అభ్యర్థన చేసినప్పుడు కెర్నల్ మెమరీ గణాంకాలను సేకరిస్తుంది /proc, మరియు నిజానికి ఫైళ్లలో /proc ఎవరూ చూడనప్పుడు ఏమీ ఉండదు. చెప్పినట్లు మెర్మిన్, "ప్రాథమిక క్వాంటం సిద్ధాంతం ప్రకారం కొలత సాధారణంగా కొలవబడుతున్న ఆస్తి యొక్క ముందుగా ఉన్న విలువను బహిర్గతం చేయదు." (మరియు చంద్రుని గురించిన ప్రశ్నను హోంవర్క్‌గా పరిగణించండి!)
శూన్యం కనిపిస్తోంది procfs అక్కడ సమాచారం డైనమిక్‌గా ఉన్నందున అర్ధమే. తో కొంచెం భిన్నమైన పరిస్థితి sysfs. కనీసం ఒక బైట్ పరిమాణంలో ఉన్న ఫైల్‌లు ఎన్ని ఉన్నాయో పోల్చి చూద్దాం /proc మరియు లో /sys.

Linuxలో వర్చువల్ ఫైల్ సిస్టమ్‌లు: అవి ఎందుకు అవసరం మరియు అవి ఎలా పని చేస్తాయి? 1 వ భాగము

Procfs ఒక ఫైల్‌ను కలిగి ఉంది, అవి ఎగుమతి చేయబడిన కెర్నల్ కాన్ఫిగరేషన్, ఇది ఒక మినహాయింపు ఎందుకంటే ఇది బూట్‌కు ఒకసారి మాత్రమే ఉత్పత్తి చేయబడాలి. మరోవైపు, లో /sys చాలా పెద్ద ఫైల్‌లు ఉన్నాయి, వాటిలో చాలా మొత్తం మెమరీ పేజీని తీసుకుంటాయి. సాధారణంగా ఫైళ్లు sysfs వంటి ఫైల్‌లను చదవడం ద్వారా పొందిన సమాచార పట్టికల వలె కాకుండా, ఖచ్చితంగా ఒక సంఖ్య లేదా పంక్తిని కలిగి ఉంటుంది /proc/meminfo.

లక్ష్యం sysfs - కెర్నల్ కాల్ చేసే రీడ్/రైట్ ప్రాపర్టీలను అందించండి «kobjects» యూజర్‌స్పేస్‌లో. ఒక్కటే లక్ష్యం kobjects లింక్ లెక్కింపు: kobjectకు చివరి లింక్ తీసివేయబడినప్పుడు, సిస్టమ్ దానితో అనుబంధించబడిన వనరులను పునరుద్ధరిస్తుంది. అయినప్పటికీ, /sys చాలా ప్రసిద్ధమైనవి "యూజర్‌స్పేస్ కోసం స్థిరమైన ABI" కోర్, ఎట్టి పరిస్థితుల్లోనూ ఎవరూ చేయలేరు "విరామం". sysfsలోని ఫైల్‌లు స్థిరంగా ఉన్నాయని దీని అర్థం కాదు, ఇది అస్థిర వస్తువుల రిఫరెన్స్ కౌంట్‌కి విరుద్ధంగా ఉంటుంది.
కెర్నల్ యొక్క స్థిరమైన ABI కనిపించే వాటిని పరిమితం చేస్తుంది /sys, ఆ నిర్దిష్ట సమయంలో వాస్తవంగా ఉన్నది కాదు. sysfsలో ఫైల్ అనుమతులను జాబితా చేయడం వలన పరికరాలు, మాడ్యూల్‌లు, ఫైల్‌సిస్టమ్‌లు మొదలైన వాటి కోసం సెట్టింగ్‌లు ఎలా కాన్ఫిగర్ చేయబడతాయో అంతర్దృష్టిని అందిస్తుంది. కాన్ఫిగర్ చేయవచ్చు లేదా చదవవచ్చు. లాజికల్ ముగింపు ఏమిటంటే, procfs కూడా కెర్నల్ యొక్క స్థిరమైన ABIలో భాగమే, అయితే ఇది స్పష్టంగా పేర్కొనబడలేదు డాక్యుమెంటేషన్.

Linuxలో వర్చువల్ ఫైల్ సిస్టమ్‌లు: అవి ఎందుకు అవసరం మరియు అవి ఎలా పని చేస్తాయి? 1 వ భాగము

ఫైల్‌లు sysfs ప్రతి ఎంటిటీకి ఒక నిర్దిష్ట ఆస్తిని వివరించండి మరియు చదవగలిగేది, వ్రాయగలిగేది లేదా రెండూ కావచ్చు. ఫైల్‌లోని "0" అంటే SSDని తీసివేయడం సాధ్యం కాదు.

eBPF మరియు bcc సాధనాలను ఉపయోగించి VFSని ఎలా పర్యవేక్షించాలనే దానితో అనువాదం యొక్క రెండవ భాగాన్ని ప్రారంభిద్దాం మరియు ఇప్పుడు మేము మీ వ్యాఖ్యల కోసం వేచి ఉన్నాము మరియు సాంప్రదాయకంగా మిమ్మల్ని ఆహ్వానిస్తున్నాము ఓపెన్ వెబ్నార్, ఇది ఏప్రిల్ 9న మా గురువుగారిచే నిర్వహించబడుతుంది - వ్లాదిమిర్ డ్రోజ్డెట్స్కీ.

మూలం: www.habr.com

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