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 amely április végén indul. Erről az eseményről új kiadvány fog megjelenni. Az eredeti anyaggal megteheti .
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”.

Mi az a fájlrendszer? Az egyik első közreműködő és szerző szerint Linux , "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 (). 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 , 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.

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 .
Az olyan ismert rendszereknek, mint az ext4, az NFS és a /proc, három fontos funkciójuk van az úgynevezett C adatstruktúrában. Ezenkí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 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.

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

Mindenki ismeri ezt a tárolást / tmp fizikai közegen - őrület! .
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: ennek 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/.

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

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 mag, amit soha senki, semmilyen körülmények között nem tud . 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 .

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 , melyet tanárunk április 9-én tart - .
Forrás: will.com
