Bok svima! Nastavljamo s pokretanjem novih streamova za tečajeve u koje ste se već zaljubili, a sada žurimo objaviti da pokrećemo novi set tečajeva
Virtualni datotečni sustavi služe kao neka vrsta magične apstrakcije koja omogućuje filozofiji Linuxa da kaže da je "sve datoteka".
Što je datotečni sustav? Temeljeno na riječima jednog od prvih suradnika i autora Linuxa
Osnove datotečnog sustava
Linux kernel ima određene zahtjeve za entitet koji se može smatrati datotečnim sustavom. Mora implementirati metode open()
, read()
и write()
za postojane objekte koji imaju imena. S objektno orijentirane točke gledišta
Ako možemo otvoriti, čitati i pisati u entitet, tada se taj entitet smatra datotekom, kao što možemo vidjeti iz primjera u gornjoj konzoli.
Fenomen VFS-a samo naglašava zapažanje slično Unixu da je "sve datoteka". Zamislite koliko je čudno da onaj mali primjer /dev/console iznad pokazuje kako konzola zapravo radi. Slika prikazuje interaktivnu Bash sesiju. Slanje niza na konzolu (uređaj virtualne konzole) prikazuje ga na virtualnom zaslonu. VFS ima druga, još čudnija svojstva. Na primjer, omogućuje vam pretraživanje prema
Poznati sustavi kao što su ext4, NFS i /proc imaju tri važne funkcije u C strukturi podataka tzv read()
jedan datotečni sustav i zatim upotrijebite metodu write ()
drugi datotečni sustav za izlaz podataka.
Definicije funkcija koje pripadaju osnovnim VFS tipovima nalaze se u datotekama fs/
sadrže određene datotečne sustave. Jezgra također sadrži entitete kao što su cgroups
, /dev
и tmpfs
, koji su potrebni tijekom procesa dizanja i stoga su definirani u poddirektoriju kernela init/
. Primijeti da cgroups
, /dev
и tmpfs
ne pozivajte funkcije "velike tri". file_operations
, ali izravno čitati i pisati u memoriju.
Donji dijagram pokazuje kako korisnički prostor pristupa različitim vrstama datotečnih sustava koji se obično montiraju na Linux sustavima. Strukture nisu prikazane pipes
, dmesg
и POSIX clocks
, koji također implementiraju strukturu file_operations
, kojima se pristupa kroz VFS sloj.
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 s upravljačkim programima uređaja ili uređajima za pristup memoriji. tmpfs
, devtmpfs
и cgroups
nemojte koristiti file_operations
, ali izravno pristupite memoriji.
Postojanje VFS-a pruža mogućnost ponovne upotrebe koda, budući da osnovne metode povezane sa sustavima datoteka ne moraju biti ponovno implementirane od strane svake vrste sustava datoteka. Ponovna uporaba koda uobičajena je praksa među softverskim inženjerima! Međutim, ako višekratni kôd sadrži
/tmp: Jednostavan savjet
Jednostavan način otkrivanja prisutnosti VFS-a na sustavu je upisivanje mount | grep -v sd | grep -v :/
, koji će prikazati sve montirane (mounted
) datotečni sustavi koji nisu rezidentni na disku i nisu NFS, što je istina na većini računala. Jedan od navedenih nosača (mounts
) VFS će nedvojbeno /tmp
, zar ne?
Svi znaju to skladištenje / tmp
na fizičkom mediju - ludilo!
Zašto je nepoželjno pohraniti /tmp
na fizičkom mediju? Budući da datoteke u /tmp
su privremeni i uređaji za pohranu su sporiji od memorije u kojoj se stvara tmpfs. Štoviše, fizički medij je podložniji trošenju kada se prepisuje preko njega nego memorija. Naposljetku, datoteke u /tmp mogu sadržavati osjetljive informacije, tako da je njihovo nestajanje pri svakom ponovnom pokretanju bitna značajka.
Nažalost, neke instalacijske skripte distribucije Linuxa prema zadanim postavkama stvaraju /tmp na uređaju za pohranu. Ne očajavajte ako se to dogodilo i vašem sustavu. Slijedite nekoliko jednostavnih uputa s tmpfs
postaje nedostupan za druge svrhe. Drugim riječima, sustav s ogromnim tmpfs-om i velikim datotekama na njemu može ostati bez memorije i srušiti se. Još jedan savjet: tijekom uređivanja datoteke /etc/fstab
, zapamtite da mora završavati s novim retkom, inače se vaš sustav neće pokrenuti.
/proc i /sys
osim toga /tmp
, VFS (virtualni datotečni sustavi) koji su najpoznatiji korisnicima Linuxa su /proc
и /sys
, (/dev
nalazi se u zajedničkoj memoriji i nema file_operations
). Zašto ove dvije komponente? Pogledajmo ovo pitanje.
procfs
stvara snimku kernela i procesa koje nadzire userspace
. U /proc
kernel ispisuje informacije o tome što ima na raspolaganju, kao što su prekidi, virtualna memorija i planer. Osim, /proc/sys
je mjesto gdje se nalaze parametri konfigurirani naredbom sysctl
, dostupan za userspace
. Status i statistika pojedinih procesa prikazani su u katalozima /proc/
.
Ovdje /proc/meminfo
je prazna datoteka koja ipak sadrži vrijedne informacije.
ponašanje /proc
pokazuje koliko različiti mogu biti datotečni sustavi VFS diska. S jedne strane, /proc/meminfo
sadrže informacije koje se mogu vidjeti pomoću naredbe free
. S druge strane, prazan je! Kako radi? Situacija podsjeća na poznati članak pod naslovom /proc
, a zapravo u datotekama /proc
nema ničega kad nitko ne gleda. Kao što je rečeno
Prividna praznina procfs
ima smisla jer su informacije tamo dinamične. Malo drugačija situacija sa sysfs
. Usporedimo koliko se nalazi datoteka koje su veličine najmanje jedan bajt /proc
i /sys
.
Procfs
ima jednu datoteku, naime izvezenu konfiguraciju kernela, što je iznimka 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 datoteke sysfs
sadrže točno jedan broj ili red, za razliku od tablica informacija dobivenih čitanjem datoteka kao što su /proc/meminfo
.
Cilj sysfs
- pružiti svojstva čitanja/pisanja onoga što kernel poziva «kobjects»
u korisničkom prostoru. Jedini cilj kobjects
je brojanje veza: kada se posljednja veza na kobject ukloni, sustav će vratiti resurse povezane s njom. Štoviše, /sys
čini većinu poznatih
Stabilni ABI kernela ograničava ono što se može pojaviti u /sys
, a ne ono što je stvarno prisutno u tom trenutku. Navođenje dopuštenja za datoteke u sysfs pruža uvid u to kako se mogu konfigurirati postavke za uređaje, module, datotečne sustave itd. može se konfigurirati ili čitati. Logičan zaključak je da je procfs također dio stabilnog ABI-ja kernela, iako to nije eksplicitno navedeno u
Datoteke u sysfs
opisuju jedno određeno svojstvo za svaki entitet i mogu biti čitljivi, pisivi ili oboje. "0" u datoteci znači da se SSD ne može ukloniti.
Započnimo drugi dio prijevoda s načinom praćenja VFS-a pomoću eBPF i bcc alata, a sada čekamo vaše komentare i tradicionalno vas pozivamo na
Izvor: www.habr.com