Hoi allegearre! Wy trochgean mei it lansearjen fan nije streams foar de kursussen wêr't jo al fereale op binne wurden en no binne wy haast om oan te kundigjen dat wy in nije set kursussen begjinne
Firtuele bestânsystemen tsjinje as in soarte fan magyske abstraksje wêrmei't de filosofy fan Linux kin sizze dat "alles in bestân is."
Wat is in triemsysteem? Op grûn fan 'e wurden fan ien fan' e earste meiwurkers en auteurs fan Linux
Triemsysteem Basics
De Linux-kernel hat bepaalde easken foar in entiteit dy't kin wurde beskôge as in bestânsysteem. It moat de metoaden ymplementearje open()
, read()
и write()
foar persistente objekten dy't nammen hawwe. Ut in objekt-rjochte eachpunt
As wy kinne iepenje, lêze en skriuwe nei in entiteit, dan wurdt dy entiteit beskôge as in bestân, lykas wy kinne sjen út it foarbyld yn 'e konsole hjirboppe.
It VFS-fenomeen ûnderstreket allinich de Unix-like observaasje dat "alles in bestân is". Tink hoe nuver dat dat lytse /dev/console foarbyld hjirboppe lit sjen hoe't de konsole eins wurket. De foto lit in ynteraktive Bash-sesje sjen. It ferstjoeren fan in tekenrige nei de konsole (firtuele konsole-apparaat) toant it op in firtuele skerm. VFS hat oare, noch frjemdere eigenskippen. Bygelyks, it kinne jo sykje troch
Fertroude systemen lykas ext4, NFS, en / proc hawwe trije wichtige funksjes yn in C-gegevensstruktuer neamd read()
ien triemsysteem en brûk dan de metoade write ()
in oar bestânssysteem foar gegevensútfier.
De funksje definysjes dy't hearre ta de basis VFS typen binne yn de triemmen fs/
befetsje bepaalde triemsystemen. De kearn befettet ek entiteiten lykas cgroups
, /dev
и tmpfs
, dy't nedich binne tidens it opstartproses en wurde dêrom definieare yn 'e kernel-submap init/
. Let der op dat cgroups
, /dev
и tmpfs
neam de "grutte trije" funksjes net file_operations
, mar direkt lêze en skriuwe nei it ûnthâld.
It diagram hjirûnder lit sjen hoe't brûkersromte tagong hat ta de ferskate soarten bestânssystemen dy't gewoanlik op Linux-systemen monteare binne. Struktueren net werjûn pipes
, dmesg
и POSIX clocks
, dy't ek de struktuer útfiere file_operations
, tagong fia de VFS-laach.
VFS is in "wrapper laach" tusken systeem oproppen en ymplemintaasjes fan bepaalde file_operations
, lykas ext4
и procfs
. Funksjes file_operations
kin ynteraksje mei beide apparaatsjauffeurs of apparaten foar ûnthâld tagong. tmpfs
, devtmpfs
и cgroups
net brûke file_operations
, mar direkt tagong ta it ûnthâld.
It bestean fan VFS jout in kâns om koade opnij te brûken, om't de basismetoaden dy't ferbûn binne mei bestânsystemen net opnij moatte wurde ymplementearre troch elk type bestânsysteem. Hergebrûk fan koade is in gewoane praktyk ûnder software-yngenieurs! Lykwols, as de werbrûkbere koade befettet
/tmp: Ienfâldige hint
In maklike manier om te detektearjen dat VFS oanwêzich binne op in systeem is te typen mount | grep -v sd | grep -v :/
, dy't alle montearden sjen sil (mounted
) triemsystemen dy't net skiif-resident en net-NFS binne, wat wier is op de measte kompjûters. Ien fan 'e neamde mounts (mounts
) VFS sil sûnder mis /tmp
, rjochts?
Elkenien wit dat opslach / tmp
op in fysyk medium - waansin!
Wêrom is it net winsklik om te bewarjen /tmp
op fysike media? Omdat de triemmen yn /tmp
binne tydlik en opslachapparaten binne stadiger as it ûnthâld dêr't tmpfs wurdt makke. Boppedat binne fysike media gefoeliger foar wearze as se oerskreaun binne as ûnthâld. Uteinlik kinne bestannen yn /tmp gefoelige ynformaasje befetsje, sadat se ferdwine by elke opnij starte is in essensjele funksje.
Spitigernôch meitsje guon Linux-distribúsje-ynstallaasjeskripts standert /tmp op it opslachapparaat. Wês net wanhopich as dit ek barde mei jo systeem. Folgje in pear ienfâldige ynstruksjes mei tmpfs
wurdt net beskikber foar oare doelen. Mei oare wurden, in systeem mei in gigantyske tmpfs en grutte triemmen derop kin sûnder ûnthâld rinne en crashe. In oare oanwizing: by it bewurkjen fan in bestân /etc/fstab
, tink derom dat it einigje moat mei in nije rigel, oars sil jo systeem net opstarte.
/proc en /sys
njonken /tmp
, VFS (firtuele triemsystemen) dy't it meast bekend binne foar Linux-brûkers binne /proc
и /sys
. (/dev
wennet yn dielde ûnthâld en hat net file_operations
). Wêrom dizze twa komponinten? Litte wy nei dizze kwestje sjen.
procfs
makket in momintopname fan 'e kernel en de prosessen wêrfoar't it kontrolearret userspace
. de /proc
de kearn printet ynformaasje oer wat it beskikber is, lykas interrupts, firtuele ûnthâld, en de scheduler. Neist, /proc/sys
is it plak dêr't de parameters konfigurearre mei it kommando sysctl
, beskikber foar userspace
. De status en statistiken fan yndividuele prosessen wurde werjûn yn mappen /proc/
.
it is /proc/meminfo
is in leech bestân dat dochs weardefolle ynformaasje befettet.
Behavior /proc
triemmen lit sjen hoe ferskillende VFS skiif triem systemen kinne wêze. Oan de iene kant, /proc/meminfo
befetsje ynformaasje dy't kin wurde besjoen mei it kommando free
. Oan de oare kant is it leech! Hoe wurket it? De situaasje docht tinken oan it ferneamde artikel mei de titel /proc
, en eins yn triemmen /proc
der is neat as nimmen sjocht. Lykas sein
Lytse leechte procfs
makket sin omdat de ynformaasje dêr dynamysk is. In bytsje oare situaasje mei sysfs
. Litte wy fergelykje hoefolle bestannen dy't op syn minst ien byte yn grutte binne /proc
en yn /sys
.
Procfs
hat ien triem, nammentlik de eksportearre kearnkonfiguraasje, wat in útsûndering is, om't it mar ien kear per boot generearre wurde moat. Oan 'e oare kant, yn /sys
d'r binne in protte gruttere bestannen, wêrfan in protte in hiele side ûnthâld opnimme. Meastal triemmen sysfs
befetsje presys ien nûmer of rigel, yn tsjinstelling ta tabellen mei ynformaasje krigen fan it lêzen fan triemmen lykas /proc/meminfo
.
Goal sysfs
- leverje lês- / skriuweigenskippen fan wat de kernel neamt «kobjects»
yn brûkersromte. It ienige doel kobjects
is ferwizing tellen: as de lêste ferwizing nei in kobject wurdt fuorthelle, it systeem sil weromsette de middels ferbûn mei it. Dochs, /sys
makket it grutste part fan 'e ferneamde
De stabile ABI fan 'e kernel beheint wat kin ferskine yn /sys
, net wat der eins oanwêzich is op dat bepaalde momint. Listing fan triemmooglikheden yn sysfs jout ynsjoch yn hoe konfigurearbere ynstellings foar apparaten, modules, triemsystemen, ensfh. kin wurde konfigurearre of lêzen. De logyske konklúzje is dat procfs ek diel útmakket fan 'e stabile ABI fan 'e kernel, hoewol dit net eksplisyt stiet yn
Files yn sysfs
beskriuwe ien bepaald eigendom foar elke entiteit en kin lêsber, skriuwber of beide wêze. "0" yn it bestân betsjut dat de SSD net fuortsmiten wurde kin.
Litte wy it twadde diel fan 'e oersetting begjinne mei hoe't jo VFS kinne kontrolearje mei de eBPF- en bcc-ark, en no wachtsje wy op jo opmerkingen en noegje jo tradisjoneel út
Boarne: www.habr.com