Virtuális fájlrendszerek LinuxMiért van rájuk szükség, és hogyan működnek? 1. rész

Sziasztok! Folytatjuk az új streamek indítását azokhoz a tanfolyamokhoz, amelyekbe már beleszerettél, és most sietünk bejelenteni, hogy új kurzuscsomagot indítunk "Adminisztrátor Linux»amely április végén indul. Erről az eseményről új kiadvány fog megjelenni. Az eredeti anyaggal megteheti olvassa el itt.

A virtuális fájlrendszerek egyfajta mágikus absztrakcióként működnek, amely lehetővé teszi a filozófiát Linux azt mondani, hogy „minden egy fájl”.

Virtuális fájlrendszerek LinuxMiért van rájuk szükség, és hogyan működnek? 1. rész

Mi az a fájlrendszer? Az egyik első közreműködő és szerző szerint Linux Roberta Lava, "A fájlrendszer egy meghatározott struktúra szerint összeállított adatok hierarchikus tárolója." Bárhogy is legyen, ez a definíció egyformán jól illeszkedik a VFAT-hoz (Virtual File Allocation Table), a Githez és a Cassandra (NoSQL adatbázis). Tehát mi határozza meg pontosan azt a dolgot, mint "fájlrendszer"?

Fájlrendszer alapjai

A mag Linux Ahhoz, hogy egy entitást fájlrendszernek tekintsünk, bizonyos követelményeknek kell megfelelnie. Metódusokat kell implementálnia. open(), read() и write() a nevekkel rendelkező állandó objektumokhoz. Objektum-orientált szemszögből programozás, a kernel egy általános fájlrendszert absztrakt interfészként határoz meg, és ez a három nagy függvény "virtuálisnak" tekinthető, és nincs konkrét definíciója. Ennek megfelelően az alapértelmezett fájlrendszer-megvalósítást virtuális fájlrendszernek (VFS) nevezik.

Virtuális fájlrendszerek LinuxMiért van rájuk szükség, és hogyan működnek? 1. rész

Ha meg tudunk nyitni, olvasni és írni tudunk egy entitást, akkor az adott entitást fájlnak tekintjük, amint azt a fenti konzol példájából láthatjuk.
A VFS jelenség csak aláhúzza azt a Unix-szerű megfigyelést, hogy "minden egy fájl". Gondolj bele, milyen furcsa, hogy a fenti kis /dev/console példa megmutatja, hogyan működik a konzol valójában. A képen egy interaktív Bash munkamenet látható. Ha egy karakterláncot küld a konzolra (virtuális konzoleszközre), az megjelenik egy virtuális képernyőn. A VFS-nek más, még furcsább tulajdonságai is vannak. Például lehetővé teszi a keresést neki.

Az olyan ismert rendszereknek, mint az ext4, az NFS és a /proc, három fontos funkciójuk van az úgynevezett C adatstruktúrában. file_operationsEzenkívül bizonyos fájlrendszerek kiterjesztik és újra megvalósítják a VFS funkcionalitását egy ismerős objektumorientált módon. Ahogy Robert Love megjegyzi, a VFS absztrakció lehetővé teszi a felhasználók számára, hogy Linux Gondtalanul másolhat fájlokat harmadik féltől származó operációs rendszerekre és absztrakt entitásokról, például pipe-okról anélkül, hogy aggódnia kellene a belső adatformátumuk miatt. A felhasználói oldalról (userspace) egy folyamat rendszerhívással másolhat egy fájlból a kernel adatszerkezeteibe. read() egy fájlrendszert, majd használja a módszert write () egy másik fájlrendszer az adatkimenethez.

Az alap VFS-típusokhoz tartozó függvénydefiníciók a fájlokban találhatók fs/*.c kernel forráskódja, míg az alkönyvtárak fs/ tartalmaznak bizonyos fájlrendszereket. A mag olyan entitásokat is tartalmaz, mint pl cgroups, /dev и tmpfs, amelyek a rendszerindítási folyamat során szükségesek, ezért a kernel alkönyvtárában vannak meghatározva init/. Vedd észre cgroups, /dev и tmpfs ne hívja meg a "három nagy" függvényt file_operations, hanem közvetlenül olvassa és írjon a memóriába.
Az alábbi ábra azt mutatja, hogyan fér hozzá a felhasználói tér a rendszerekre gyakran felcsatolt különböző típusú fájlrendszerekhez. LinuxAz ábrán nem látható konstrukciók pipes, dmesg и POSIX clocks, amelyek szintén megvalósítják a szerkezetet file_operations, amely a VFS rétegen keresztül érhető el.

Virtuális fájlrendszerek LinuxMiért van rájuk szükség, és hogyan működnek? 1. rész

A VFS egy "burkoló réteg" a rendszerhívások és bizonyos megvalósítások között file_operationsmint például ext4 и procfs. Funkciók file_operations interakcióba léphet eszközillesztőkkel vagy memóriaelérési eszközökkel. tmpfs, devtmpfs и cgroups ne használja file_operations, hanem közvetlenül elérheti a memóriát.
A VFS megléte lehetőséget ad a kód újrafelhasználására, hiszen a fájlrendszerekhez kapcsolódó alapvető metódusokat nem kell minden fájlrendszertípusnál újra megvalósítani. A kód újrafelhasználása bevett gyakorlat a szoftvermérnökök körében! Ha azonban az újrafelhasználható kód tartalmazza súlyos hibákat, minden olyan implementáció, amely a gyakori módszereket örökli, szenved tőlük.

/tmp: Egyszerű tipp

A VFS jelenléte a rendszerben egyszerű módszer a gépelés mount | grep -v sd | grep -v :/, amely megmutatja az összes csatlakoztatott (mounted) nem lemezrezidens és nem NFS fájlrendszerek, ami a legtöbb számítógépre igaz. A felsorolt ​​tartók egyike (mounts) A VFS kétségtelenül megteszi /tmp, jobb?

Virtuális fájlrendszerek LinuxMiért van rájuk szükség, és hogyan működnek? 1. rész

Mindenki ismeri ezt a tárolást / tmp fizikai közegen - őrület! Forrás.

Miért nem kívánatos a tárolás /tmp fizikai adathordozón? Mivel a fájlok /tmp ideiglenesek, és a tárolóeszközök lassabbak, mint a memória, ahol a tmpfs létrejön. Ráadásul a fizikai adathordozók hajlamosabbak a kopásra, ha felülírják, mint a memória. Végül a /tmp-ben található fájlok érzékeny információkat tartalmazhatnak, ezért minden újraindításkor el kell tüntetni őket.

Sajnos néhány telepítőszkript Linux A disztribúciók alapértelmezés szerint létrehozzák a /tmp könyvtárat a tárolóeszközön. Ne ess kétségbe, ha ez a rendszereddel is megtörténik. Kövess néhány egyszerű utasítást a következővel: Arch Wikiennek kijavításához, és ügyeljen arra, hogy a számára lefoglalt memória tmpfs más célokra elérhetetlenné válik. Más szóval, egy hatalmas tmpfs-t és nagy fájlokat tartalmazó rendszerben elfogyhat a memória és összeomolhat. Még egy tipp: fájl szerkesztése közben /etc/fstab, ne feledje, hogy újsorral kell végződnie, különben a rendszer nem indul el.

/proc és /sys

Kívül /tmp, VFS (virtuális fájlrendszerek), amelyek a felhasználók számára a legismertebbek Linux - Van /proc и /sys. (/dev megosztott memóriában van, és nincs file_operations). Miért ez a két összetevő? Nézzük meg ezt a kérdést.

procfs pillanatképet készít a kernelről és az általa figyelt folyamatokról userspace. -Ban /proc a kernel információkat nyomtat arról, hogy mi áll rendelkezésére, például a megszakításokról, a virtuális memóriáról és az ütemezőről. Kívül, /proc/sys az a hely, ahol a paranccsal konfigurált paraméterek sysctl, elérhető userspace. Az egyes folyamatok állapota és statisztikái könyvtárakban jelennek meg /proc/.

Virtuális fájlrendszerek LinuxMiért van rájuk szükség, és hogyan működnek? 1. rész

Itt /proc/meminfo egy üres fájl, amely ennek ellenére értékes információkat tartalmaz.

viselkedés /proc fájlok megmutatja, hogy milyen különbözőek lehetnek a VFS lemezes fájlrendszerek. Egyrészt /proc/meminfo paranccsal megtekinthető információkat tartalmaznak free. Másrészt üres! Hogyan működik? A helyzet a híres cikkre emlékeztet Létezik a hold, amikor senki sem nézi? Valóság és kvantumelmélet"A Cornell Egyetem fizikaprofesszora, David Mermin írta 1985-ben. A tény az, hogy a kernel memóriastatisztikát gyűjt, amikor egy kérés érkezik /proc, és valójában fájlokban /proc nincs semmi, amikor senki nem néz. Ahogy mondták Mermin, "Az alapvető kvantumdoktrína azt mondja, hogy a mérés általában nem fedi fel a mért tulajdonság már meglévő értékét." (A Holdra vonatkozó kérdést pedig tekintse házi feladatnak!)
Látszólag üresség procfs van értelme, mert az információ dinamikus. Kicsit más a helyzet vele sysfs. Hasonlítsuk össze, hány olyan fájl van, amelyek legalább egy bájt méretűek /proc és /sys.

Virtuális fájlrendszerek LinuxMiért van rájuk szükség, és hogyan működnek? 1. rész

Procfs egy fájlja van, mégpedig az exportált kernelkonfiguráció, ami kivétel, mert rendszerindításonként csak egyszer kell előállítani. Másrészt be /sys sok nagyobb fájl van, amelyek közül sok egy egész oldalnyi memóriát foglal el. Általában fájlokat sysfs pontosan egy számot vagy sort tartalmaznak, ellentétben a fájlolvasásból nyert információtáblázatokkal, mint pl /proc/meminfo.

Gól sysfs - olvasási/írási tulajdonságokat biztosít annak, amit a kernel hív «kobjects» felhasználói térben. Az egyetlen cél kobjects linkszámlálás: amikor egy kobject utolsó hivatkozását eltávolítják, a rendszer visszaállítja a hozzá tartozó erőforrásokat. Mindazonáltal, /sys alkotja a legtöbb híres "stabil ABI felhasználói térhez" mag, amit soha senki, semmilyen körülmények között nem tud "szünet". Ez nem jelenti azt, hogy a sysf-ben lévő fájlok statikusak, ami összeegyeztethetetlen az instabil objektumok referenciaszámlálásával.
A kernel stabil ABI-ja korlátozza, hogy mi jelenhet meg benne /sys, nem az, ami az adott pillanatban ténylegesen jelen van. A fájljogosultságok listázása a sysf-ben betekintést nyújt az eszközök, modulok, fájlrendszerek stb. konfigurálható beállításaiba. konfigurálható vagy olvasható. A logikus következtetés az, hogy a procfs is része a kernel stabil ABI-jának, bár ez nincs kifejezetten kimondva dokumentáció.

Virtuális fájlrendszerek LinuxMiért van rájuk szükség, és hogyan működnek? 1. rész

Fájlok be sysfs minden entitáshoz egy adott tulajdonságot ír le, és lehet olvasható, írható vagy mindkettő. A "0" a fájlban azt jelenti, hogy az SSD nem távolítható el.

Kezdjük a fordítás második részét azzal, hogy miként figyeljük a VFS-t az eBPF és a Bcc eszközök segítségével, most pedig várjuk észrevételeiket, és hagyományosan meghívjuk Önt nyílt webinárium, melyet tanárunk április 9-én tart - Vlagyimir Drozdeckij.

Forrás: will.com

Vásároljon megbízható tárhelyet DDoS védelemmel, VPS VDS szerverekkel rendelkező webhelyekhez 🔥 Vásároljon megbízható weboldal tárhelyet DDoS védelemmel, VPS VDS szerverekkel | ProHoster