Hei kaikki! Jatkamme uusien streamien käynnistämistä kursseille, joihin olet jo ihastunut, ja nyt meillä on kiire ilmoittaa, että aloitamme uuden kurssisarjan
Virtuaaliset tiedostojärjestelmät toimivat eräänlaisena maagisena abstraktiona, jonka avulla Linuxin filosofia voi sanoa, että "kaikki on tiedostoa".
Mikä on tiedostojärjestelmä? Perustuu yhden Linuxin ensimmäisistä avustajista ja kirjoittajista sanoihin
Tiedostojärjestelmän perusteet
Linux-ytimellä on tiettyjä vaatimuksia entiteetille, jota voidaan pitää tiedostojärjestelmänä. Sen on toteutettava menetelmät open()
, read()
и write()
pysyville objekteille, joilla on nimet. Oliolähtöisestä näkökulmasta
Jos voimme avata, lukea ja kirjoittaa entiteetin, sitä pidetään tiedostona, kuten voimme nähdä yllä olevan konsolin esimerkistä.
VFS-ilmiö vain korostaa Unix-tyyppistä havaintoa, että "kaikki on tiedostoa". Ajattele kuinka outoa, että yllä oleva pieni /dev/console-esimerkki näyttää, kuinka konsoli todella toimii. Kuvassa on interaktiivinen Bash-istunto. Merkkijonon lähettäminen konsoliin (virtuaalikonsolilaitteeseen) näyttää sen virtuaalinäytöllä. VFS:llä on muita, vieläkin outoja ominaisuuksia. Sen avulla voit esimerkiksi etsiä hakusanalla
Tutuilla järjestelmillä, kuten ext4, NFS ja /proc, on kolme tärkeää toimintoa C-tietorakenteessa nimeltä read()
yksi tiedostojärjestelmä ja käytä sitten menetelmää write ()
toinen tiedostojärjestelmä tietojen tulostamista varten.
VFS-perustyyppeihin kuuluvat funktiomääritykset ovat tiedostoissa fs/
sisältää tiettyjä tiedostojärjestelmiä. Ydin sisältää myös kokonaisuuksia, kuten cgroups
, /dev
и tmpfs
, joita tarvitaan käynnistysprosessin aikana ja jotka siksi määritellään ytimen alihakemistossa init/
. Huomaa, että cgroups
, /dev
и tmpfs
älä kutsu "kolme suurta" -funktiota file_operations
, mutta suoraan lukea ja kirjoittaa muistiin.
Alla oleva kaavio näyttää, kuinka käyttäjätila käyttää erityyppisiä tiedostojärjestelmiä, jotka on yleisesti asennettu Linux-järjestelmiin. Rakenteet eivät näy pipes
, dmesg
и POSIX clocks
, jotka myös toteuttavat rakenteen file_operations
, jota käytetään VFS-kerroksen kautta.
VFS on "käärekerros" järjestelmäkutsujen ja tiettyjen toteutusten välillä file_operations
, kuten ext4
и procfs
. Toiminnot file_operations
voi olla vuorovaikutuksessa joko laiteajureiden tai muistin käyttölaitteiden kanssa. tmpfs
, devtmpfs
и cgroups
Älä käytä file_operations
, mutta pääset suoraan muistiin.
VFS:n olemassaolo tarjoaa mahdollisuuden käyttää koodia uudelleen, koska tiedostojärjestelmiin liittyviä perusmenetelmiä ei tarvitse ottaa uudelleen käyttöön jokaisessa tiedostojärjestelmätyypissä. Koodin uudelleenkäyttö on yleinen käytäntö ohjelmistosuunnittelijoiden keskuudessa! Kuitenkin, jos uudelleenkäytettävä koodi sisältää
/tmp: Yksinkertainen vihje
Helppo tapa havaita VFS:n olemassaolo järjestelmässä on kirjoittaa mount | grep -v sd | grep -v :/
, joka näyttää kaikki asennetut (mounted
) tiedostojärjestelmät, jotka eivät ole levyllä sijaitsevia ja ei-NFS-tiedostoja, mikä pätee useimmissa tietokoneissa. Yksi listatuista kiinnikkeistä (mounts
) VFS epäilemättä /tmp
, eikö?
Kaikki tietävät tämän säilytyksen / tmp
fyysisellä välineellä - hulluutta!
Miksi varastointi ei ole toivottavaa /tmp
fyysisellä medialla? Koska tiedostot sisään /tmp
ovat väliaikaisia ja tallennuslaitteet ovat hitaampia kuin muisti, johon tmpfs luodaan. Lisäksi fyysinen media on herkempi kulumiselle päällekirjoitettaessa kuin muisti. Lopuksi /tmp-tiedostot voivat sisältää arkaluonteisia tietoja, joten niiden katoaminen jokaisen uudelleenkäynnistyksen yhteydessä on olennainen ominaisuus.
Valitettavasti jotkin Linux-jakelun asennuskomentosarjat luovat /tmp:n tallennuslaitteeseen oletusarvoisesti. Älä ole epätoivoinen, jos tämä tapahtui myös järjestelmällesi. Noudata muutamia yksinkertaisia ohjeita tmpfs
ei ole käytettävissä muihin tarkoituksiin. Toisin sanoen järjestelmä, jossa on jättimäinen tmpfs ja suuria tiedostoja, voi loppua muistista ja kaatua. Toinen vihje: kun muokkaat tiedostoa /etc/fstab
, muista, että sen täytyy päättyä rivinvaihtoon, muuten järjestelmä ei käynnisty.
/proc ja /sys
Lisäksi /tmp
, VFS (virtuaaliset tiedostojärjestelmät), jotka ovat Linux-käyttäjille tutuimpia /proc
и /sys
. (/dev
sijaitsee jaetussa muistissa, eikä sillä ole file_operations
). Miksi nämä kaksi komponenttia? Tarkastellaan tätä asiaa.
procfs
luo tilannekuvan ytimestä ja sen valvomista prosesseista userspace
. Sisään /proc
ydin tulostaa tietoja siitä, mitä sillä on saatavilla, kuten keskeytykset, virtuaalimuisti ja ajastin. Sitä paitsi, /proc/sys
on paikka, jossa parametrit on määritetty komennolla sysctl
, saatavilla userspace
. Yksittäisten prosessien tila ja tilastot näkyvät hakemistoissa /proc/
.
Täällä /proc/meminfo
on tyhjä tiedosto, joka kuitenkin sisältää arvokasta tietoa.
käytös /proc
tiedostot osoittavat, kuinka erilaisia VFS-levytiedostojärjestelmät voivat olla. toisaalta, /proc/meminfo
sisältää tietoja, jotka voidaan tarkastella komennolla free
. Toisaalta se on tyhjä! Kuinka se toimii? Tilanne muistuttaa kuuluisaa artikkelia nimeltä /proc
, ja itse asiassa tiedostoissa /proc
ei ole mitään kun kukaan ei katso. Kuten sanottu
Näyttävä tyhjyys procfs
on järkevää, koska siellä oleva tieto on dynaamista. Hieman erilainen tilanne sysfs
. Verrataan kuinka monta tiedostoa, jotka ovat kooltaan vähintään yksi tavu, on /proc
ja /sys
.
Procfs
on yksi tiedosto, nimittäin viety ytimen kokoonpano, mikä on poikkeus, koska se tarvitsee luoda vain kerran käynnistystä kohti. Toisaalta sisään /sys
on monia suurempia tiedostoja, joista monet vievät koko sivun muistia. Yleensä tiedostot sysfs
sisältävät täsmälleen yhden numeron tai rivin, toisin kuin taulukot tietotaulukoista, jotka on saatu lukemalla tiedostoja, kuten /proc/meminfo
.
Tavoite sysfs
- tarjota luku-/kirjoitusominaisuudet sille, mitä ydin kutsuu «kobjects»
käyttäjätilassa. Ainoa tavoite kobjects
on linkkien laskeminen: kun viimeinen linkki kobjectiin poistetaan, järjestelmä palauttaa siihen liittyvät resurssit. Tästä huolimatta, /sys
muodostaa suurimman osan kuuluisista
Ytimen vakaa ABI rajoittaa sitä, mitä voi esiintyä /sys
, ei sitä, mitä sillä hetkellä on todellisuudessa. Tiedostojen käyttöoikeuksien luettelointi sysfissä antaa käsityksen laitteiden, moduulien, tiedostojärjestelmien jne. määritettävistä asetuksista. voidaan konfiguroida tai lukea. Looginen johtopäätös on, että procfs on myös osa ytimen vakaata ABI:ta, vaikka tätä ei ole erikseen mainittu
Tiedostot sisään sysfs
kuvaamaan yhtä tiettyä ominaisuutta kullekin entiteetille ja se voi olla luettavissa, kirjoitettava tai molemmat. "0" tiedostossa tarkoittaa, että SSD-levyä ei voi poistaa.
Aloitetaan käännöksen toinen osa VFS:n valvomisesta eBPF- ja bcc-työkalujen avulla, ja nyt odotamme kommenttejasi ja kutsumme sinut perinteisesti
Lähde: will.com