Zdravo svima! Nastavljamo sa pokretanjem novih streamova za kurseve u koje ste se već zaljubili, a sada žurimo objaviti da pokrećemo novi set kurseva
Virtualni datotečni sistemi služe kao neka vrsta magične apstrakcije koja dozvoljava filozofiji Linuxa da kaže da je "sve datoteka".
Šta je sistem datoteka? Zasnovan na riječima jednog od prvih saradnika i autora Linuxa
Osnove sistema datoteka
Linux kernel ima određene zahtjeve za entitet koji se može smatrati sistemom datoteka. Mora implementirati metode open()
, read()
и write()
za trajne objekte koji imaju imena. Sa objektno orijentisane tačke gledišta
Ako možemo otvoriti, čitati i pisati u entitet, onda se taj entitet smatra datotekom, kao što možemo vidjeti iz primjera u konzoli iznad.
Fenomen VFS samo naglašava zapažanje slično Unixu da je "sve fajl". Zamislite kako je čudno što ovaj mali /dev/console primjer iznad pokazuje kako konzola zapravo radi. Slika prikazuje interaktivnu Bash sesiju. Slanje stringa na konzolu (virtuelni konzolni uređaj) prikazuje ga na virtuelnom ekranu. VFS ima druga, još čudnija svojstva. Na primjer, omogućava vam da pretražujete po
Poznati sistemi kao što su ext4, NFS i /proc imaju tri važne funkcije u C strukturi podataka koja se zove read()
jedan sistem datoteka, a zatim koristite metod write ()
drugi sistem datoteka za izlaz podataka.
Definicije funkcija koje pripadaju osnovnim tipovima VFS nalaze se u datotekama fs/
sadrže određene sisteme datoteka. Jezgro također sadrži entitete kao što su cgroups
, /dev
и tmpfs
, koji su potrebni tokom procesa pokretanja i stoga su definisani u poddirektorijumu kernela init/
. Primetite to cgroups
, /dev
и tmpfs
nemojte zvati funkcije "velike tri". file_operations
, ali direktno čitanje i pisanje u memoriju.
Dijagram ispod pokazuje kako korisnički prostor pristupa različitim tipovima sistema datoteka koji se obično montiraju na Linux sistemima. Strukture nisu prikazane pipes
, dmesg
и POSIX clocks
, koji takođe implementiraju strukturu file_operations
, kojem se pristupa preko VFS sloja.
VFS je "sloj omotača" između sistemskih poziva i implementacija određenih file_operations
, kao što su ext4
и procfs
. Funkcije file_operations
može komunicirati ili sa upravljačkim programima uređaja ili sa uređajima za pristup memoriji. tmpfs
, devtmpfs
и cgroups
nemojte koristiti file_operations
, ali direktno pristupa memoriji.
Postojanje VFS-a pruža mogućnost ponovnog korištenja koda, budući da se osnovne metode povezane sa sistemima datoteka ne moraju ponovo implementirati od strane svakog tipa sistema datoteka. Ponovna upotreba koda je uobičajena praksa među softverskim inženjerima! Međutim, ako kod za višekratnu upotrebu sadrži
/tmp: Jednostavan nagoveštaj
Jednostavan način da otkrijete da je VFS prisutan na sistemu je kucanje mount | grep -v sd | grep -v :/
, koji će pokazati sve montirane (mounted
) sistem datoteka koji nisu rezidentni na disku i koji nisu NFS, što je tačno na većini računara. Jedan od navedenih nosača (mounts
) VFS će nesumnjivo /tmp
, zar ne?
Svi znaju to skladište / tmp
na fizičkom mediju - ludilo!
Zašto je nepoželjno čuvati /tmp
na fizičkim medijima? Zato što su fajlovi u /tmp
su privremeni i uređaji za skladištenje su sporiji od memorije u kojoj se kreira tmpfs. Štaviše, fizički mediji su podložniji habanju kada se prepisuju nego memorija. Konačno, datoteke u /tmp mogu sadržavati osjetljive informacije, tako da je nestanak pri svakom ponovnom pokretanju ključna karakteristika.
Nažalost, neke instalacijske skripte distribucije Linuxa kreiraju /tmp na uređaju za pohranu prema zadanim postavkama. Ne očajavajte ako se ovo desilo i vašem sistemu. Slijedite nekoliko jednostavnih uputa sa tmpfs
postaje nedostupan za druge svrhe. Drugim riječima, sistemu sa ogromnim tmpfs-om i velikim datotekama na njemu može ponestati memorije i može se srušiti. Još jedan savjet: dok uređujete datoteku /etc/fstab
, zapamtite da se mora završiti novim redom, inače se vaš sistem neće pokrenuti.
/proc i /sys
Osim toga /tmp
, VFS (virtualni sistem datoteka) koji su najpoznatiji korisnicima Linuxa /proc
и /sys
. (/dev
nalazi se u zajedničkoj memoriji i nema file_operations
). Zašto ove dvije komponente? Hajde da pogledamo ovo pitanje.
procfs
kreira snimak kernela i procesa koje nadgleda userspace
. The /proc
kernel ispisuje informacije o tome šta ima na raspolaganju, kao što su prekidi, virtuelna memorija i planer. osim toga, /proc/sys
je mjesto gdje su parametri konfigurisani naredbom sysctl
, dostupno za userspace
. Status i statistika pojedinačnih procesa prikazani su u katalozima /proc/
.
to je /proc/meminfo
je prazna datoteka koja ipak sadrži vrijedne informacije.
Ponašanje /proc
datoteke pokazuje koliko različiti VFS sistemi datoteka diska mogu biti. s jedne strane, /proc/meminfo
sadrže informacije koje se mogu vidjeti pomoću naredbe free
. S druge strane, prazan je! Kako to radi? Situacija podsjeća na poznati članak pod naslovom /proc
, i zapravo u fajlovima /proc
nema ničega kad niko ne gleda. Kao što je rečeno
Prividna praznina procfs
ima smisla jer su informacije tamo dinamične. Malo drugačija situacija sa sysfs
. Uporedimo koliko datoteka ima najmanje jedan bajt veličine /proc
i unutra /sys
.
Procfs
ima jednu datoteku, naime izvezenu konfiguraciju kernela, što je izuzetak jer se treba generirati samo jednom po pokretanju. S druge strane, u /sys
postoji mnogo većih datoteka, od kojih mnoge zauzimaju cijelu stranicu memorije. Obično fajlovi sysfs
sadrže tačno jedan broj ili red, za razliku od tabela informacija dobijenih čitanjem datoteka kao što su /proc/meminfo
.
Cilj sysfs
- obezbijedi svojstva čitanja/pisanja onoga što kernel poziva «kobjects»
u korisničkom prostoru. Jedini cilj kobjects
je broj veza: kada se ukloni posljednja veza do kobject-a, sistem će vratiti resurse povezane s njim. ipak, /sys
čini većinu poznatih
Stabilni ABI kernela ograničava ono u čemu se može pojaviti /sys
, a ne ono što je zapravo prisutno u tom trenutku. Navođenje dozvola datoteka u sysfs-u pruža uvid u to kako se konfiguriraju postavke za uređaje, module, sisteme datoteka itd. može se konfigurirati ili čitati. Logičan zaključak je da je procfs također dio stabilnog ABI kernela, iako to nije eksplicitno navedeno u
Fajlovi u sysfs
opisuju jedno posebno svojstvo za svaki entitet i mogu biti čitljivi, pisani ili oboje. "0" u datoteci znači da se SSD ne može ukloniti.
Započnimo drugi dio prijevoda kako pratiti VFS pomoću eBPF i bcc alata, a sada čekamo vaše komentare i tradicionalno vas pozivamo da
izvor: www.habr.com