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
A virtuális fájlrendszerek egyfajta mágikus absztrakcióként szolgálnak, amely lehetővé teszi a Linux filozófiájának azt mondani, hogy "minden egy fájl".
Mi az a fájlrendszer? A Linux egyik első közreműködőjének és szerzőjének szavai alapján
Fájlrendszer alapjai
A Linux kernel bizonyos követelményeket támaszt a fájlrendszernek tekinthető entitásokkal szemben. Meg kell valósítania a módszereket open()
, read()
и write()
a nevekkel rendelkező állandó objektumokhoz. Objektum-orientált szemszögből
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. 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/
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 diagram bemutatja, hogy a userspace hogyan fér hozzá a különböző típusú fájlrendszerekhez, amelyeket általában Linux rendszereken csatlakoztatnak. A szerkezetek nem látható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_operations
mint 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
/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 Linux disztribúciós telepítő parancsfájl alapértelmezés szerint létrehozza a /tmp fájlt a tárolóeszközön. Ne essen kétségbe, ha ez az Ön rendszerével is megtörtént. Kövesse néhány egyszerű utasítást 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
, a VFS-ek (virtuális fájlrendszerek), amelyek a Linux-felhasználók számára legismertebbek /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 /proc
, és valójában fájlokban /proc
nincs semmi, amikor senki nem néz. Ahogy mondták
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
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
Forrás: will.com