Fitxategi sistema birtualak Linuxen: zergatik behar dira eta nola funtzionatzen dute? 1. zatia

Kaixo guztioi! Jada maiteminduta zauden ikastaroetarako korronte berriak abiarazten jarraitzen dugu eta orain presaka gaude ikastaro berri bat hasten ari garela iragartzeko. "Linux administratzailea"apirilaren amaieran martxan jarriko dena. Ekitaldi honetarako argitalpen berri bat datatuko da. Jatorrizko materialarekin, egin dezakezu irakurri hemen.

Fitxategi-sistema birtualek abstrakzio magiko moduko gisa balio dute, Linux-en filosofiari "dena fitxategi bat" dela esatea ahalbidetzen duena.

Fitxategi sistema birtualak Linuxen: zergatik behar dira eta nola funtzionatzen dute? 1. zatia

Zer da fitxategi sistema bat? Linux-en lehen kolaboratzaile eta egileetako baten hitzetan oinarrituta Roberta Lava, "Fitxategi-sistema egitura zehatz baten arabera muntatutako datuen biltegiratze hierarkikoa da." Dena den, definizio hau VFAT (Virtual File Allocation Table), Git eta Cassandra (NoSQL datu-basea). Beraz, zerk definitzen du zehazki "fitxategi-sistema" gisa?

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 programazioa, nukleoak fitxategi-sistema generiko bat interfaze abstraktu gisa definitzen du, eta hiru funtzio handi hauek "birtualtzat" hartzen dira eta ez dute definizio zehatzik. Horren arabera, fitxategi-sistemaren ezarpen lehenetsiari fitxategi-sistema birtuala (VFS) deitzen zaio.

Fitxategi sistema birtualak Linuxen: zergatik behar dira eta nola funtzionatzen dute? 1. zatia

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 berarekin.

Ext4, NFS eta /proc bezalako sistema ezagunek hiru funtzio garrantzitsu dituzte izeneko C datu-egitura batean fitxategi_eragiketak. Horrez gain, zenbait fitxategi-sistemak VFS funtzionaltasuna objektuetara zuzendutako modu ezagun batean hedatu eta birdefinitzen dute. Robert Love-k adierazi duenez, VFS abstrakzioari esker, Linux-eko erabiltzaileek fitxategiak modu arduragabean kopiatu ditzakete hirugarrenen sistema eragileetatik edo kanaletatik bezalako entitate abstraktuak beren barneko datuen formatuaz kezkatu gabe. Erabiltzailearen aldetik (erabiltzaile-espazioa), sistema dei bat erabiliz, prozesu batek fitxategi batetik nukleoko datu-egituretara kopiatu ditzake metodoa erabiliz. read() fitxategi-sistema bat eta gero erabili metodoa write () datuen irteerarako beste fitxategi-sistema bat.

Oinarrizko VFS motei dagozkien funtzioen definizioak fitxategietan daude fs/*.c nukleoaren iturburu-kodea, berriz, azpidirektorioak 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.

Fitxategi sistema birtualak Linuxen: zergatik behar dira eta nola funtzionatzen dute? 1. zatia

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 akats larriak, metodo arruntak heredatzen dituzten inplementazio guztiek jasaten dituzte.

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

Fitxategi sistema birtualak Linuxen: zergatik behar dira eta nola funtzionatzen dute? 1. zatia

Denek dakite biltegiratze hori / tmp euskarri fisikoan - eromena! Iturria.

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 Arch Wikihau konpontzeko, eta kontutan izan esleitutako memoria dela 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/.

Fitxategi sistema birtualak Linuxen: zergatik behar dira eta nola funtzionatzen dute? 1. zatia

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 Ilargia existitzen al da inor begiratzen ez duenean? Errealitatea eta Teoria Kuantikoa"David Mermin Cornell Unibertsitateko fisika irakasleak idatzi zuen 1985ean. Kontua da kernelak memoria estatistikak biltzen dituela eskaera bat egiten denean /proc, eta benetan fitxategietan /proc ez dago ezer inor begiratzen ari ez denean. Esan bezala Mermin, "Oinarrizko doktrina kuantikoak dio neurketak, oro har, ez duela agerian uzten neurtzen ari den propietatearen aurretiko baliorik". (Eta kontuan hartu ilargiari buruzko galdera etxeko lan gisa!)
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.

Fitxategi sistema birtualak Linuxen: zergatik behar dira eta nola funtzionatzen dute? 1. zatia

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 "ABI egonkorra erabiltzaile-espaziorako" muina, inork inoiz ezin dezakeena, inolaz ere "haustura". Horrek ez du esan nahi sysfs-eko fitxategiak estatikoak direnik, eta hori ez litzateke koherentea izango objektu ezegonkorren erreferentzia zenbaketarekin.
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. dokumentazioa.

Fitxategi sistema birtualak Linuxen: zergatik behar dira eta nola funtzionatzen dute? 1. zatia

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. webinar irekia, gure irakasleak apirilaren 9an egingo duena - Vladimir Drozdetsky.

Iturria: www.habr.com

Gehitu iruzkin berria