Sistemet e skedarëve virtualë në Linux: pse nevojiten dhe si funksionojnë? Pjesa 1

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 "Administrator Linux"i cili do të nisë në fund të prillit. Një botim i ri do të datohet për këtë ngjarje. Me materialin origjinal mundeni lexoni këtu.

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".

Sistemet e skedarëve virtualë në Linux: pse nevojiten dhe si funksionojnë? Pjesa 1

Çfarë është një sistem skedar? Bazuar në fjalët e një prej kontribuesve dhe autorëve të parë të Linux Roberta Lava, "Një sistem skedarësh është një ruajtje hierarkike e të dhënave të mbledhura sipas një strukture specifike." Sido që të jetë, ky përkufizim është po aq i përshtatshëm për VFAT (Tabela e ndarjes së skedarëve virtualë), Git dhe Cassandra (Baza e të dhënave NoSQL). Pra, çfarë përcakton saktësisht një gjë të tillë si "sistemin e skedarëve"?

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 programimi, kerneli përcakton një sistem skedari gjenerik si një ndërfaqe abstrakte, dhe këto tre funksione të mëdha konsiderohen "virtuale" dhe nuk kanë përkufizim konkret. Prandaj, zbatimi i parazgjedhur i sistemit të skedarëve quhet një sistem skedari virtual (VFS).

Sistemet e skedarëve virtualë në Linux: pse nevojiten dhe si funksionojnë? Pjesa 1

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 nga ai.

Sistemet e njohura si ext4, NFS dhe /proc kanë tre funksione të rëndësishme në një strukturë të dhënash C të quajtur file_operacionet. Përveç kësaj, disa sisteme skedarësh zgjerojnë dhe ripërcaktojnë funksionalitetin VFS në një mënyrë të njohur të orientuar nga objekti. Siç vë në dukje Robert Love, abstraksioni VFS i lejon përdoruesit e Linux të kopjojnë në mënyrë të pakëndshme skedarë në ose nga sisteme operative të palëve të treta ose entitete abstrakte si tubacionet pa u shqetësuar për formatin e tyre të brendshëm të të dhënave. Nga ana e përdoruesit (hapësira e përdoruesit), duke përdorur një thirrje sistemi, një proces mund të kopjojë nga një skedar në strukturat e të dhënave të bërthamës duke përdorur metodën 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/*.c kodi burim i kernelit, ndërsa nëndrejtoritë 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.

Sistemet e skedarëve virtualë në Linux: pse nevojiten dhe si funksionojnë? Pjesa 1

VFS është një "shtresë mbështjellëse" midis thirrjeve të sistemit dhe zbatimeve të caktuara file_operationsSi 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 gabime serioze, të gjitha implementimet që trashëgojnë metoda të zakonshme vuajnë prej tyre.

/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?

Sistemet e skedarëve virtualë në Linux: pse nevojiten dhe si funksionojnë? Pjesa 1

Të gjithë e dinë atë ruajtje / tmp në një medium fizik - çmenduri! Burim.

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 Arch Wikipër ta rregulluar këtë dhe kini parasysh se memoria e caktuar për 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/.

Sistemet e skedarëve virtualë në Linux: pse nevojiten dhe si funksionojnë? Pjesa 1

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 A ekziston hëna kur askush nuk e shikon? Realiteti dhe Teoria Kuantike"shkruar nga profesori i fizikës i Universitetit Cornell, David Mermin në 1985. Fakti është se kerneli mbledh statistika të memories kur i bëhet një kërkesë /proc, dhe në fakt në skedarë /proc nuk ka asgjë kur askush nuk shikon. Siç u tha Mermin, "Doktrina themelore kuantike thotë se matja në përgjithësi nuk zbulon një vlerë paraekzistuese të pronës që matet." (Dhe konsiderojeni pyetjen për hënën si detyrë shtëpie!)
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.

Sistemet e skedarëve virtualë në Linux: pse nevojiten dhe si funksionojnë? Pjesa 1

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 për hapësirën e përdoruesve" bërthamë, të cilën askush nuk mundet kurrë, në asnjë rrethanë "thyer". Kjo nuk do të thotë që skedarët në sysfs janë statikë, gjë që nuk do të ishte në përputhje me numërimin e referencës së objekteve të paqëndrueshme.
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ë dokumentacionin.

Sistemet e skedarëve virtualë në Linux: pse nevojiten dhe si funksionojnë? Pjesa 1

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ë webinar i hapur, e cila do të mbahet nga mësuesi ynë më 9 Prill - Vladimir Drozdetsky.

Burimi: www.habr.com

Shto një koment