Tere kõigile! Jätkame uute voogude käivitamist kursustele, millesse olete juba armunud ja nüüd kiirustame teatama, et alustame uue kursuste komplektiga
Virtuaalsed failisüsteemid toimivad omamoodi maagilise abstraktsioonina, mis lubab Linuxi filosoofias öelda, et "kõik on fail".
Mis on failisüsteem? Põhineb ühe Linuxi esimese kaastöölise ja autori sõnadel
Failisüsteemi põhitõed
Linuxi tuumal on teatud nõuded olemile, mida võib pidada failisüsteemiks. See peab meetodeid rakendama open()
, read()
и write()
püsivate objektide jaoks, millel on nimed. Objektorienteeritud vaatepunktist
Kui suudame olemit avada, lugeda ja sellele kirjutada, loetakse seda olemit failiks, nagu näeme ülaltoodud konsooli näitest.
VFS-nähtus rõhutab ainult Unixi-laadset tähelepanekut, et "kõik on fail". Mõelge, kui imelik, et ülaltoodud väike /dev/console näide näitab, kuidas konsool tegelikult töötab. Pildil on interaktiivne Bashi seanss. Stringi saatmisel konsooli (virtuaalkonsooli seadmesse) kuvatakse see virtuaalsel ekraanil. VFS-il on muid, veelgi kummalisemaid omadusi. Näiteks võimaldab see otsida järgi
Tuntud süsteemidel, nagu ext4, NFS ja /proc, on C-andmestruktuuris kolm olulist funktsiooni. read()
ühte failisüsteemi ja seejärel kasutage meetodit write ()
teine failisüsteem andmete väljastamiseks.
Funktsioonide definitsioonid, mis kuuluvad VFS-i põhitüüpidesse, on failides fs/
sisaldavad teatud failisüsteeme. Tuum sisaldab ka selliseid üksusi nagu cgroups
, /dev
и tmpfs
, mis on alglaadimise käigus vajalikud ja on seetõttu määratletud kerneli alamkataloogis init/
. Märka seda cgroups
, /dev
и tmpfs
ära kutsu "kolme suure" funktsioone file_operations
, vaid lugeda ja kirjutada otse mällu.
Allolev diagramm näitab, kuidas kasutajaruum pääseb ligi erinevat tüüpi failisüsteemidele, mida tavaliselt Linuxi süsteemidesse paigaldatakse. Struktuure pole näidatud pipes
, dmesg
и POSIX clocks
, mis rakendavad ka struktuuri file_operations
, millele pääseb juurde VFS-kihi kaudu.
VFS on "ümbriskiht" süsteemikutsete ja teatud rakenduste vahel file_operations
Nagu ext4
и procfs
. Funktsioonid file_operations
saab suhelda kas seadme draiverite või mälu juurdepääsu seadmetega. tmpfs
, devtmpfs
и cgroups
ära kasuta file_operations
, kuid pääseb otse mälule juurde.
VFS-i olemasolu annab võimaluse koodi taaskasutada, kuna failisüsteemidega seotud põhimeetodeid ei pea iga failisüsteemi tüüp uuesti juurutama. Koodi taaskasutamine on tarkvarainseneride seas levinud praktika! Kui aga korduvkasutatav kood sisaldab
/tmp: lihtne vihje
Lihtne viis VFS-i tuvastamiseks süsteemis on tippimine mount | grep -v sd | grep -v :/
, mis näitab kõiki ühendatud (mounted
) failisüsteemid, mis ei ole kettaresidendid ja mitte-NFS, mis kehtib enamiku arvutite puhul. Üks loetletud kinnitustest (mounts
) VFS kahtlemata /tmp
, eks?
Kõik teavad seda ladustamist / tmp
füüsilisel kandjal - hullus!
Miks on ebasoovitav säilitada /tmp
füüsilisel andmekandjal? Kuna failid sisse /tmp
on ajutised ja salvestusseadmed on aeglasemad kui mälu, kus tmpfs luuakse. Veelgi enam, füüsiline kandja on ülekirjutamisel vastuvõtlikum kulumisele kui mälu. Lõpuks võivad /tmp-s olevad failid sisaldada tundlikku teavet, nii et nende kadumine igal taaskäivitamisel on oluline funktsioon.
Kahjuks loovad mõned Linuxi levitamise installiskriptid vaikimisi salvestusseadmesse faili /tmp. Ärge heitke meelt, kui see juhtus ka teie süsteemiga. Järgige mõnda lihtsat juhist tmpfs
muutub muudel eesmärkidel kättesaamatuks. Teisisõnu, süsteemil, millel on hiiglaslik tmpfs ja suured failid, võib mälu tühjaks saada ja see jookseb kokku. Veel üks vihje: faili redigeerimise ajal /etc/fstab
, pidage meeles, et see peab lõppema reavahetusega, vastasel juhul teie süsteem ei käivitu.
/proc ja /sys
peale /tmp
, VFS (virtuaalsed failisüsteemid), mis on Linuxi kasutajatele kõige tuttavamad /proc
и /sys
. (/dev
asub ühismälus ja seda ei ole file_operations
). Miks need kaks komponenti? Uurime seda küsimust.
procfs
loob hetktõmmise kernelist ja protsessidest, mida see jälgib userspace
. Sisse /proc
kernel prindib teavet selle kohta, mis tal on saadaval, näiteks katkestused, virtuaalmälu ja ajakava. Pealegi, /proc/sys
on koht, kus käsuga konfigureeritud parameetrid sysctl
, saadaval userspace
. Üksikute protsesside olek ja statistika kuvatakse kataloogides /proc/
.
see on /proc/meminfo
on tühi fail, mis sisaldab siiski väärtuslikku teavet.
Käitumine /proc
failid näitavad, kui erinevad võivad olla VFS-ketta failisüsteemid. Ühelt poolt /proc/meminfo
sisaldavad teavet, mida saab käsuga vaadata free
. Teisest küljest on see tühi! Kuidas see töötab? Olukord meenutab kuulsat artiklit pealkirjaga /proc
, ja tegelikult failides /proc
pole midagi, kui keegi ei vaata. Nagu öeldud
Näiline tühjus procfs
on mõistlik, sest sealne teave on dünaamiline. Veidi teistsugune olukord koos sysfs
. Võrdleme, kui paljudes failides on vähemalt üks bait /proc
ja /sys
.
Procfs
sellel on üks fail, nimelt eksporditud kerneli konfiguratsioon, mis on erand, kuna see tuleb alglaadimise kohta genereerida ainult üks kord. Teisest küljest sisse /sys
on palju suuremaid faile, millest paljud võtavad terve lehekülje mälu. Tavaliselt failid sysfs
sisaldavad täpselt ühte numbrit või rida, erinevalt selliste failide lugemisest saadud teabe tabelitest nagu /proc/meminfo
.
Eesmärk sysfs
- pakkuda lugemis-/kirjutusomadusi, mida kernel kutsub «kobjects»
kasutajaruumis. Ainus eesmärk kobjects
on linkide loendamine: kui viimane link kobjectile eemaldatakse, taastab süsteem sellega seotud ressursid. Sellegipoolest /sys
moodustab suurema osa kuulsatest
Kerneli stabiilne ABI piirab seda, milles võib ilmuda /sys
, mitte see, mis sellel konkreetsel hetkel tegelikult olemas on. Failide õiguste loetlemine sysf-is annab ülevaate seadmete, moodulite, failisüsteemide jne seadistatavatest sätetest. saab seadistada või lugeda. Loogiline järeldus on, et procfs on samuti osa kerneli stabiilsest ABI-st, kuigi seda pole sõnaselgelt öeldud
Failid sisse sysfs
kirjeldavad iga olemi jaoks ühte kindlat omadust ja võivad olla loetavad, kirjutatavad või mõlemad. "0" failis tähendab, et SSD-d ei saa eemaldada.
Alustame tõlke teist osa sellest, kuidas jälgida VFS-i eBPF ja bcc tööriistade abil ning nüüd ootame teie kommentaare ja kutsume teid traditsiooniliselt
Allikas: www.habr.com