Pershendetje te gjitheve! Ne vazhdojmë të lançojmë transmetime të reja për kurset me të cilat tashmë keni rënë në dashuri dhe tani jemi me nxitim të njoftojmë se po fillojmë një grup të ri kursesh
Sistemet virtuale të skedarëve shërbejnë si një lloj abstraksioni magjik që lejon filozofinë e Linux-it të thotë se "çdo gjë është një skedar".
Çfarë është një sistem skedar? Bazuar në fjalët e një prej kontribuesve dhe autorëve të parë të Linux
Bazat e sistemit të skedarëve
Kerneli Linux ka kërkesa të caktuara për një ent që mund të konsiderohet një sistem skedari. Duhet të zbatojë metodat open()
, read()
и write()
për objektet e qëndrueshme që kanë emra. Nga një këndvështrim i orientuar nga objekti
Nëse mund të hapim, lexojmë dhe shkruajmë në një entitet, atëherë ai ent konsiderohet skedar, siç mund ta shohim nga shembulli në tastierën e mësipërme.
Fenomeni VFS vetëm nënvizon vëzhgimin e ngjashëm me Unix-in se "çdo gjë është një skedar". Mendoni sa e çuditshme që shembulli i vogël /dev/console më sipër tregon se si funksionon në të vërtetë tastiera. Fotografia tregon një seancë interaktive Bash. Dërgimi i një vargu në tastierë (pajisja virtuale e konsolës) e shfaq atë në një ekran virtual. VFS ka veti të tjera, edhe më të çuditshme. Për shembull, ju lejon të kërkoni sipas
Sistemet e njohura si ext4, NFS dhe /proc kanë tre funksione të rëndësishme në një strukturë të dhënash C të quajtur read()
një sistem skedari dhe më pas përdorni metodën write ()
një sistem tjetër skedar për daljen e të dhënave.
Përkufizimet e funksioneve që i përkasin llojeve bazë VFS janë në skedarë fs/
përmbajnë sisteme të caktuara skedarësh. Bërthama përmban edhe entitete si p.sh cgroups
, /dev
и tmpfs
, të cilat kërkohen gjatë procesit të nisjes dhe për këtë arsye përcaktohen në nëndrejtorinë e kernelit init/
. Vini re se cgroups
, /dev
и tmpfs
mos i quani funksionet "tre të mëdhenj". file_operations
, por drejtpërdrejt lexoni dhe shkruani në kujtesë.
Diagrami i mëposhtëm tregon se si hapësira e përdoruesve akseson llojet e ndryshme të sistemeve të skedarëve të montuar zakonisht në sistemet Linux. Strukturat nuk janë paraqitur pipes
, dmesg
и POSIX clocks
, të cilat zbatojnë edhe strukturën file_operations
, aksesohet përmes shtresës VFS.
VFS është një "shtresë mbështjellëse" midis thirrjeve të sistemit dhe zbatimeve të caktuara file_operations
Si ext4
и procfs
. Funksione file_operations
mund të ndërveprojë me drejtuesit e pajisjes ose me pajisjet e aksesit në kujtesë. tmpfs
, devtmpfs
и cgroups
mos e përdor file_operations
, por qasje direkt në kujtesë.
Ekzistenca e VFS ofron mundësinë për të ripërdorur kodin, pasi metodat bazë të lidhura me sistemet e skedarëve nuk duhet të ri-zbatohen nga çdo lloj sistemi skedari. Ripërdorimi i kodit është një praktikë e zakonshme midis inxhinierëve të softuerit! Megjithatë, nëse kodi i ripërdorshëm përmban
/tmp: Këshillë e thjeshtë
Një mënyrë e thjeshtë për të zbuluar se VFS janë të pranishme në një sistem është të shtypni mount | grep -v sd | grep -v :/
, i cili do të tregojë të gjitha të montuarat (mounted
) sisteme skedarësh që nuk janë rezidentë të diskut dhe jo-NFS, gjë që është e vërtetë në shumicën e kompjuterëve. Një nga montimet e listuara (mounts
) VFS padyshim që do /tmp
, apo jo?
Të gjithë e dinë atë ruajtje / tmp
në një medium fizik - çmenduri!
Pse është e padëshirueshme të ruhet /tmp
në media fizike? Sepse skedarët në /tmp
janë të përkohshme dhe pajisjet e ruajtjes janë më të ngadalta se memoria ku krijohet tmpfs. Për më tepër, media fizike është më e ndjeshme ndaj konsumimit kur mbishkruhet sesa kujtesa. Së fundi, skedarët në /tmp mund të përmbajnë informacione të ndjeshme, kështu që zhdukja e tyre në çdo rindezje është një veçori thelbësore.
Fatkeqësisht, disa skripta instalimi të shpërndarjes Linux krijojnë /tmp në pajisjen e ruajtjes si parazgjedhje. Mos u dëshpëroni nëse kjo ka ndodhur edhe me sistemin tuaj. Ndiqni disa udhëzime të thjeshta me tmpfs
bëhet i padisponueshëm për qëllime të tjera. Me fjalë të tjera, një sistem me një tmpf gjigant dhe skedarë të mëdhenj në të mund të mbarojë memorien dhe të rrëzohet. Një sugjerim tjetër: gjatë redaktimit të një skedari /etc/fstab
, mbani mend se duhet të përfundojë me një linjë të re, përndryshe sistemi juaj nuk do të niset.
/proc dhe /sys
Përveç /tmp
, VFS (sistemet virtuale të skedarëve) që janë më të njohur për përdoruesit e Linux janë /proc
и /sys
. (/dev
qëndron në kujtesën e përbashkët dhe nuk ka file_operations
). Pse këta dy komponentë? Le të shqyrtojmë këtë çështje.
procfs
krijon një fotografi të kernelit dhe proceseve për të cilat monitoron userspace
. Në /proc
kerneli printon informacione rreth asaj që ka në dispozicion, të tilla si ndërprerjet, memoria virtuale dhe planifikuesi. Përveç kësaj, /proc/sys
është vendi ku janë konfiguruar parametrat me komandën sysctl
, në dispozicion për userspace
. Statusi dhe statistikat e proceseve individuale shfaqen në drejtori /proc/
.
Këtu /proc/meminfo
është një skedar bosh që megjithatë përmban informacion të vlefshëm.
sjellje /proc
skedarët tregon se sa të ndryshëm mund të jenë sistemet e skedarëve të diskut VFS. Nga njëra anë, /proc/meminfo
përmbajnë informacione që mund të shihen me komandën free
. Nga ana tjetër, është bosh! Si punon? Situata të kujton artikullin e famshëm me titull /proc
, dhe në fakt në skedarë /proc
nuk ka asgjë kur askush nuk shikon. Siç u tha
Në dukje zbrazëti procfs
ka kuptim sepse informacioni atje është dinamik. Një situatë pak më ndryshe me sysfs
. Le të krahasojmë sa skedarë janë të paktën një bajt në madhësi /proc
dhe /sys
.
Procfs
ka një skedar, përkatësisht konfigurimin e kernelit të eksportuar, i cili është një përjashtim sepse duhet të gjenerohet vetëm një herë për nisje. Nga ana tjetër, në /sys
ka shumë skedarë më të mëdhenj, shumë prej të cilëve zënë një faqe të tërë memorie. Zakonisht skedarët sysfs
përmbajnë saktësisht një numër ose rresht, ndryshe nga tabelat e informacionit të marrë nga leximi i skedarëve si p.sh /proc/meminfo
.
Qëllim sysfs
- Siguroni vetitë e leximit/shkrimit të asaj që thërret kerneli «kobjects»
në hapësirën e përdoruesit. Goli i vetëm kobjects
është numërimi i lidhjeve: kur lidhja e fundit për një kobjekt hiqet, sistemi do të rivendosë burimet e lidhura me të. Megjithatë, /sys
përbën shumicën e të famshmeve
ABI e qëndrueshme e kernelit kufizon atë që mund të shfaqet /sys
, jo ajo që është në të vërtetë e pranishme në atë moment të caktuar. Listimi i lejeve të skedarëve në sysfs ofron një pasqyrë të cilësimeve të konfigurueshme për pajisjet, modulet, sistemet e skedarëve, etj. mund të konfigurohet ose lexohet. Konkluzioni logjik është se procfs është gjithashtu pjesë e ABI-së së qëndrueshme të kernelit, megjithëse kjo nuk është deklaruar në mënyrë eksplicite në
Skedarët në sysfs
përshkruani një veti të veçantë për çdo entitet dhe mund të jetë e lexueshme, e shkruajtshme ose të dyja. "0" në skedar do të thotë që SSD nuk mund të hiqet.
Le të fillojmë pjesën e dytë të përkthimit me mënyrën e monitorimit të VFS duke përdorur veglat eBPF dhe bcc, dhe tani ne presim komentet tuaja dhe ju ftojmë tradicionalisht të
Burimi: www.habr.com