Kaixo guztioi! Jada maiteminduta zauden ikastaroetarako korronte berriak abiarazten jarraitzen dugu eta orain presaka gaude ikastaro berri bat hasten ari garela iragartzeko.
Fitxategi-sistema birtualek abstrakzio magiko moduko gisa balio dute, Linux-en filosofiari "dena fitxategi bat" dela esatea ahalbidetzen duena.
Zer da fitxategi sistema bat? Linux-en lehen kolaboratzaile eta egileetako baten hitzetan oinarrituta
Fitxategi-sistemaren oinarriak
Linux kernelak baldintza batzuk ditu fitxategi-sistematzat har daitekeen entitate baterako. Metodoak ezarri behar ditu open()
, read()
ΠΈ write()
izenak dituzten objektu iraunkorretarako. Objektuetara zuzendutako ikuspuntutik
Entitate batean ireki, irakurri eta idazteko gai bagara, orduan entitate hori fitxategitzat hartuko da, goiko kontsolako adibidean ikus dezakegunez.
VFS fenomenoak Unix-en antzeko behaketa soilik azpimarratzen du "dena fitxategi bat da". Pentsa zein arraroa den goiko /dev/console adibide txiki horrek kontsolak benetan nola funtzionatzen duen erakusten duela. Irudiak Bash saio interaktibo bat erakusten du. Kate bat kontsolara (kontsola gailu birtuala) bidaltzeak pantaila birtualean bistaratzen du. VFS-k beste propietate batzuk ere baditu. Adibidez, bilaketak egiteko aukera ematen du
Ext4, NFS eta /proc bezalako sistema ezagunek hiru funtzio garrantzitsu dituzte izeneko C datu-egitura batean read()
fitxategi-sistema bat eta gero erabili metodoa write ()
datuen irteerarako beste fitxategi-sistema bat.
Oinarrizko VFS motei dagozkien funtzioen definizioak fitxategietan daude fs/
fitxategi-sistema jakin batzuk dituzte. Nukleoak bezalako entitateak ere baditu cgroups
, /dev
ΠΈ tmpfs
, abio prozesuan beharrezkoak direnak eta, beraz, nukleoaren azpidirektorioan definitzen direnak init/
. Kontuan izan cgroups
, /dev
ΠΈ tmpfs
ez deitu "hiru handi" funtzioei file_operations
, baina zuzenean irakurri eta idatzi memorian.
Beheko diagraman erabiltzaile-espazioak Linux sistemetan muntatu ohi diren fitxategi-sistema mota desberdinetara nola sartzen den erakusten du. Ez dira erakusten egiturak pipes
, dmesg
ΠΈ POSIX clocks
, egitura ere ezartzen dutenak file_operations
, VFS geruzaren bidez sartu da.
VFS sistema-deien eta zenbait inplementazioen arteko "bilgarri-geruza" bat da file_operations
, esaterako ext4
ΠΈ procfs
. Funtzioak file_operations
gailu kontrolatzaileekin edo memoriarako sarbidea duten gailuekin elkarreragin dezake. tmpfs
, devtmpfs
ΠΈ cgroups
ez erabili file_operations
, baina zuzenean sartu memoriara.
VFS egoteak kodea berrerabiltzeko aukera ematen du, fitxategi-sistemekin lotutako oinarrizko metodoak ez baitu fitxategi-sistema mota bakoitzak berriro inplementatu behar. Kodea berrerabiltzea ohiko praktika da software ingeniarien artean! Hala ere, kode berrerabilgarriak badu
/tmp: aholku sinplea
Sistema batean VFS daudela detektatzeko modu erraz bat idaztea da mount | grep -v sd | grep -v :/
, muntatutako guztiak erakutsiko dituena (mounted
) diskoan bizi ez diren eta NFSkoak ez diren fitxategi-sistemak, hori egia da ordenagailu gehienetan. Zerrendatutako muntatzeetako bat (mounts
) VFS izango da, zalantzarik gabe /tmp
, ezta?
Denek dakite biltegiratze hori / tmp
euskarri fisikoan - eromena!
Zergatik ez da desiragarria gordetzea /tmp
euskarri fisikoetan? Fitxategiak barne /tmp
aldi baterakoak dira eta biltegiratze-gailuak tmpfs sortzen den memoria baino motelagoak dira. Gainera, euskarri fisikoak higadura handiagoa du gainidazten denean memoria baino. Azkenik, /tmp-ko fitxategiek informazio sentikorra izan dezakete, beraz, berrabiarazi bakoitzean desagertzea ezinbestekoa da.
Zoritxarrez, Linux banaketa-instalazio-script batzuek /tmp sortzen dute biltegiratze gailuan lehenespenez. Ez etsi hau zure sistemari ere gertatu bazaio. Jarraitu argibide erraz batzuk tmpfs
beste helburu batzuetarako erabilgarri gelditzen da. Beste era batera esanda, tmpfs erraldoia eta fitxategi handiak dituen sistema batek memoriarik gabe geratu eta huts egin dezake. Beste aholku bat: fitxategi bat editatzen ari zaren bitartean /etc/fstab
, gogoratu lerro berri batekin amaitu behar dela, bestela zure sistema ez da abiaraziko.
/proc eta /sys
Gainera /tmp
, Linux erabiltzaileentzat ezagunenak diren VFS (fitxategi sistema birtualak) dira /proc
ΠΈ /sys
. (/dev
memoria partekatuan bizi da eta ez dauka file_operations
). Zergatik bi osagai hauek? Azter dezagun gai hau.
procfs
nukleoaren eta kontrolatzen dituen prozesuen argazki bat sortzen du userspace
. Urtean /proc
nukleoak eskuragarri duenari buruzko informazioa inprimatzen du, hala nola etenaldiak, memoria birtuala eta programatzailea. Gainera, /proc/sys
komandoarekin konfiguratutako parametroak non dauden lekua da sysctl
, eskuragarri userspace
. Prozesu indibidualen egoera eta estatistikak direktorioetan bistaratzen dira /proc/
.
Hemen /proc/meminfo
fitxategi huts bat da, baina informazio baliotsua dauka.
jokabidea /proc
fitxategiak VFS disko-fitxategi-sistema desberdinak izan daitezkeen erakusten du. Alde batetik, /proc/meminfo
komandoarekin ikus daitekeen informazioa eduki free
. Bestalde, hutsik dago! Nola dabil? Egoerak izenburuko artikulu ospetsua gogorarazten du /proc
, eta benetan fitxategietan /proc
ez dago ezer inor begiratzen ari ez denean. Esan bezala
Hutsaren itxura procfs
zentzua dauka han informazioa dinamikoa delako. Egoera apur bat ezberdina sysfs
. Konpara ditzagun gutxienez byte bateko tamaina duten zenbat fitxategi dauden /proc
eta /sys
.
Procfs
fitxategi bat du, esportatutako nukleoaren konfigurazioa alegia, salbuespena da, abio bakoitzeko behin bakarrik sortu behar delako. Bestalde, urtean /sys
fitxategi handiago asko daude, eta horietako askok memoria orri osoa hartzen dute. Normalean fitxategiak sysfs
zenbaki edo lerro bat dauka, adibidez fitxategiak irakurtzean lortutako informazio-taulak ez bezala /proc/meminfo
.
Helburua sysfs
- Nukleoak deitzen duenaren irakurketa/idazketa propietateak eman Β«kobjectsΒ»
erabiltzaile-espazioan. Helburu bakarra kobjects
estekaren zenbaketa da: kobject baterako azken esteka kentzen denean, sistemak harekin lotutako baliabideak berreskuratuko ditu. Hala ere, /sys
ospetsuenak osatzen ditu
Nukleoaren ABI egonkorrak ager daitekeena mugatzen du /sys
, ez momentu zehatz horretan benetan presente dagoena. Sysfs-en fitxategi-baimenak zerrendatzeak gailu, modulu, fitxategi-sistem eta abarren ezarpenak nola konfigura daitezkeen jakiteko aukera ematen du. konfiguratu edo irakur daiteke. Ondorio logikoa da procfs nukleoaren ABI egonkorraren parte dela ere, nahiz eta hori esplizituki adierazten ez den.
Fitxategiak sysfs
entitate bakoitzeko propietate jakin bat deskribatu eta irakurgarria, idazgarria edo biak izan daitezke. "0" fitxategian SSD ezin dela kendu esan nahi du.
Itzulpenaren bigarren zatia eBPF eta bcc tresnak erabiliz VFS monitorizatzeko moduarekin hasiko gara, eta orain zure iruzkinen zain gaude eta tradizioz gonbidatzen zaitugu.
Iturria: www.habr.com