Sýndarskráarkerfi í Linux: hvers vegna er þörf á þeim og hvernig virka þau? 1. hluti

Hæ allir! Við höldum áfram að opna nýja strauma fyrir námskeiðin sem þú hefur þegar orðið ástfangin af og nú erum við að flýta okkur að tilkynna að við erum að hefja nýtt námskeið "Linux stjórnandi"sem verður hleypt af stokkunum í lok apríl. Nýtt rit verður dagsett fyrir þennan viðburð. Með upprunalegu efni geturðu lestu hér.

Sýndarskráakerfi þjóna sem eins konar töfrandi abstrakt sem gerir heimspeki Linux kleift að segja að "allt sé skrá."

Sýndarskráarkerfi í Linux: hvers vegna er þörf á þeim og hvernig virka þau? 1. hluti

Hvað er skráarkerfi? Byggt á orðum eins af fyrstu þátttakendum og höfundum Linux Roberta Lava, "Skráarkerfi er stigveldisgeymsla gagna sett saman í samræmi við ákveðna uppbyggingu." Hvað sem því líður, þá hentar þessi skilgreining jafn vel fyrir VFAT (Virtual File Allocation Table), Git og Cassandra (NoSQL gagnagrunnur). Svo hvað nákvæmlega skilgreinir slíkt sem "skráakerfi"?

Grunnatriði skráakerfisins

Linux kjarninn hefur ákveðnar kröfur fyrir aðila sem getur talist skráarkerfi. Það verður að innleiða aðferðirnar open(), read() и write() fyrir viðvarandi hluti sem bera nöfn. Frá hlutbundnu sjónarhorni forritun, skilgreinir kjarninn almennt skráarkerfi sem óhlutbundið viðmót og þessar þrjár stóru aðgerðir eru álitnar „sýndar“ og hafa enga áþreifanlega skilgreiningu. Samkvæmt því er sjálfgefna skráarkerfisútfærslan kallað sýndarskráakerfi (VFS).

Sýndarskráarkerfi í Linux: hvers vegna er þörf á þeim og hvernig virka þau? 1. hluti

Ef við getum opnað, lesið og skrifað í einingu, þá telst þessi eining vera skrá, eins og við sjáum af dæminu í stjórnborðinu hér að ofan.
VFS fyrirbærið undirstrikar aðeins þá Unix-líka athugun að „allt er skrá“. Hugsaðu þér hvað þetta litla /dev/console dæmi hér að ofan sýnir hvernig leikjatölvan virkar í raun og veru. Myndin sýnir gagnvirka Bash lotu. Með því að senda streng á stjórnborðið (sýndartölvutæki) birtist það á sýndarskjá. VFS hefur aðra, jafnvel undarlegri eiginleika. Til dæmis gerir það þér kleift að leita eftir hann.

Þekkt kerfi eins og ext4, NFS og /proc hafa þrjár mikilvægar aðgerðir í C ​​gagnaskipulagi sem kallast skrá_aðgerðir. Að auki framlengja og endurskilgreina ákveðin skráarkerfi VFS virkni á kunnuglegan hlutbundinn hátt. Eins og Robert Love bendir á, gerir VFS útdráttur Linux notendum kleift að afrita skrár án tillits til eða frá stýrikerfum þriðja aðila eða óhlutbundnum einingum eins og pípum án þess að hafa áhyggjur af innra gagnasniði þeirra. Á notendahliðinni (notendarými), með því að nota kerfiskall, getur ferli afritað úr skrá yfir í kjarnagagnaskipulag með aðferðinni read() eitt skráarkerfi og notaðu síðan aðferðina write () annað skráarkerfi fyrir gagnaúttak.

Aðgerðarskilgreiningarnar sem tilheyra grunn VFS gerðunum eru í skránum fs/*.c frumkóða kjarna, en undirmöppur fs/ innihalda ákveðin skráarkerfi. Kjarninn inniheldur einnig einingar eins og cgroups, /dev и tmpfs, sem eru nauðsynlegar meðan á ræsiferlinu stendur og eru því skilgreindar í kjarnaundirskránni init/. Taktu eftir því cgroups, /dev и tmpfs ekki kalla „stóru þrjú“ föllin file_operations, en beint að lesa og skrifa í minni.
Skýringarmyndin hér að neðan sýnir hvernig notendarými hefur aðgang að mismunandi tegundum skráarkerfa sem almennt eru sett upp á Linux kerfum. Mannvirki ekki sýnd pipes, dmesg и POSIX clocks, sem einnig útfæra uppbygginguna file_operations, aðgengilegt í gegnum VFS lagið.

Sýndarskráarkerfi í Linux: hvers vegna er þörf á þeim og hvernig virka þau? 1. hluti

VFS er „umbúðir“ á milli kerfiskalla og útfærslur á ákveðnum file_operationsSvo sem eins og ext4 и procfs. Aðgerðir file_operations getur haft samskipti við annað hvort tækjarekla eða minnisaðgangstæki. tmpfs, devtmpfs и cgroups ekki nota file_operations, en beinan aðgang að minni.
Tilvist VFS gefur tækifæri til að endurnýta kóða, þar sem grunnaðferðirnar sem tengjast skráarkerfum þurfa ekki að vera endurútfærðar af hverri gerð skráarkerfa. Endurnotkun kóða er algeng venja meðal hugbúnaðarverkfræðinga! Hins vegar, ef endurnýtanlegur kóði inniheldur alvarleg mistök, allar útfærslur sem erfa algengar aðferðir þjást af þeim.

/tmp: Einföld vísbending

Auðveld leið til að greina að VFS séu til staðar á kerfi er að slá inn mount | grep -v sd | grep -v :/, sem mun sýna allt tengt (mounted) skráarkerfi sem eru ekki búsett á diski og ekki NFS, sem á við á flestum tölvum. Einn af skráðum festingum (mounts) VFS mun án efa /tmp, ekki satt?

Sýndarskráarkerfi í Linux: hvers vegna er þörf á þeim og hvernig virka þau? 1. hluti

Allir þekkja þá geymslu / tmp á líkamlegum miðli - brjálæði! Source.

Hvers vegna er óæskilegt að geyma /tmp á efnismiðlum? Vegna þess að skrárnar í /tmp eru tímabundin og geymslutæki eru hægari en minnið þar sem tmpfs er búið til. Þar að auki eru efnislegir fjölmiðlar næmari fyrir sliti þegar þeir eru skrifaðir yfir en minni. Að lokum geta skrár í /tmp innihaldið viðkvæmar upplýsingar, svo að láta þær hverfa við hverja endurræsingu er nauðsynlegur eiginleiki.

Því miður búa sum Linux dreifingaruppsetningarforskriftir til /tmp á geymslutækinu sjálfgefið. Ekki örvænta ef þetta kemur fyrir kerfið þitt líka. Fylgdu nokkrum einföldum leiðbeiningum með Arch Wikitil að laga þetta og vera meðvitaður um að minnið sem úthlutað er fyrir tmpfs verður ófáanlegt í öðrum tilgangi. Með öðrum orðum, kerfi með risastórum tmpfs og stórum skrám á því getur klárast minni og hrunið. Önnur vísbending: á meðan verið er að breyta skrá /etc/fstab, mundu að það verður að enda með nýrri línu, annars ræsir kerfið þitt ekki.

/proc og /sys

Auki /tmp, VFS (sýndarskráarkerfi) sem Linux notendur þekkja best /proc и /sys. (/dev býr í sameiginlegu minni og hefur ekki file_operations). Af hverju þessir tveir þættir? Við skulum skoða þetta mál.

procfs býr til skyndimynd af kjarnanum og ferlunum sem hann fylgist með userspace. Í /proc kjarninn prentar upplýsingar um það sem hann hefur í boði, svo sem truflanir, sýndarminni og tímaáætlun. Að auki, /proc/sys – þetta er þar sem færibreyturnar eru stilltar með skipuninni sysctl, í boði fyrir userspace. Staða og tölfræði einstakra ferla er sýnd í vörulistum /proc/.

Sýndarskráarkerfi í Linux: hvers vegna er þörf á þeim og hvernig virka þau? 1. hluti

Hér /proc/meminfo er tóm skrá sem inniheldur engu að síður dýrmætar upplýsingar.

Hegðun /proc skrár sýnir hversu mismunandi VFS diskskráarkerfi geta verið. Annars vegar, /proc/meminfo innihalda upplýsingar sem hægt er að skoða með skipuninni free. Aftur á móti er það tómt! Hvernig virkar það? Ástandið minnir á hina frægu grein sem heitir Er tunglið til þegar enginn horfir á það? Raunveruleiki og skammtafræði"skrifuð af Cornell University eðlisfræðiprófessor David Mermin árið 1985. Staðreyndin er sú að kjarninn safnar minnistölfræði þegar óskað er eftir því /proc, og í raun í skrám /proc það er ekkert þegar enginn horfir. Sem sagt Mermin, "Grundvallar skammtafræðikenningar segja að mælingar leiði almennt ekki í ljós fyrirliggjandi verðmæti eignarinnar sem verið er að mæla." (Og líttu á spurninguna um tunglið sem heimavinnu!)
Virðist tómleiki procfs er skynsamlegt vegna þess að upplýsingarnar þar eru kraftmiklar. Örlítið öðruvísi aðstæður með sysfs. Við skulum bera saman hversu margar skrár sem eru að minnsta kosti eitt bæti að stærð eru í /proc og /sys.

Sýndarskráarkerfi í Linux: hvers vegna er þörf á þeim og hvernig virka þau? 1. hluti

Procfs hefur eina skrá, þ.e. útfluttu kjarnastillinguna, sem er undantekning vegna þess að það þarf aðeins að búa til einu sinni í hverri ræsingu. Á hinn bóginn, í /sys það eru margar stærri skrár, margar hverjar taka upp heila síðu af minni. Venjulega skrár sysfs innihalda nákvæmlega eina tölu eða línu, ólíkt töflum með upplýsingum sem fást við lestur skráa eins og /proc/meminfo.

Markmið sysfs - gefa upp les/skrif eiginleika þess sem kjarninn kallar «kobjects» í notendarými. Eina markið kobjects er tenglatalning: þegar síðasti hlekkurinn á kobject er fjarlægður mun kerfið endurheimta tilföngin sem tengjast því. Engu að síður, /sys myndar flesta af þeim frægu „stöðugt ABI fyrir notendarými“ kjarna, sem enginn getur nokkru sinni, undir neinum kringumstæðum "brot". Þetta þýðir ekki að skrár í sysfs séu kyrrstæðar, sem væri í ósamræmi við viðmiðunartalningu á óstöðugum hlutum.
Stöðugt ABI kjarnans takmarkar það sem getur birst í /sys, frekar en það sem er í raun til staðar á því tiltekna augnabliki. Skráning skráaheimilda í sysfs veitir innsýn í hvernig stillanlegar stillingar fyrir tæki, einingar, skráarkerfi osfrv. hægt að stilla eða lesa. Rökrétt niðurstaða er sú að procfs er einnig hluti af stöðugu ABI kjarnans, þó að það sé ekki sérstaklega tekið fram í skjöl.

Sýndarskráarkerfi í Linux: hvers vegna er þörf á þeim og hvernig virka þau? 1. hluti

Skrár inn sysfs lýsa einni tiltekinni eiginleika fyrir hverja einingu og getur verið læsileg, skrifanleg eða bæði. "0" í skránni þýðir að ekki er hægt að fjarlægja SSD.

Við skulum byrja seinni hluta þýðingarinnar á því hvernig á að fylgjast með VFS með því að nota eBPF og bcc verkfærin, og nú bíðum við eftir athugasemdum þínum og bjóðum þér venjulega að opið vefnámskeið, sem verður haldinn af kennaranum okkar 9. apríl - Vladimir Drozdetsky.

Heimild: www.habr.com

Bæta við athugasemd