Hej alla! Vi fortsätter att lansera nya streams för de kurser du redan har blivit kär i och nu har vi bråttom att meddela att vi startar en ny uppsättning kurser
Virtuella filsystem fungerar som en sorts magisk abstraktion som gör att Linux-filosofin kan säga att "allt är en fil."
Vad är ett filsystem? Baserat på orden från en av de första bidragsgivarna och författarna till Linux
Grunderna i filsystemet
Linuxkärnan har vissa krav för en enhet som kan betraktas som ett filsystem. Den måste implementera metoderna open()
, read()
и write()
för beständiga objekt som har namn. Ur en objektorienterad synvinkel
Om vi kan öppna, läsa och skriva till en entitet, så anses den enheten vara en fil, som vi kan se från exemplet i konsolen ovan.
VFS-fenomenet understryker bara den Unix-liknande observationen att "allt är en fil". Tänk så konstigt att det där lilla /dev/console-exemplet ovan visar hur konsolen faktiskt fungerar. Bilden visar en interaktiv Bash-session. Om du skickar en sträng till konsolen (virtuell konsolenhet) visas den på en virtuell skärm. VFS har andra, ännu märkligare egenskaper. Det låter dig till exempel söka efter
Bekanta system som ext4, NFS och /proc har tre viktiga funktioner i en C-datastruktur som kallas read()
ett filsystem och använd sedan metoden write ()
ett annat filsystem för datautmatning.
Funktionsdefinitionerna som hör till bas-VFS-typerna finns i filerna fs/
innehåller vissa filsystem. Kärnan innehåller även entiteter som t.ex cgroups
, /dev
и tmpfs
, som krävs under uppstartsprocessen och därför definieras i kärnans underkatalog init/
. Lägg märke till att cgroups
, /dev
и tmpfs
kalla inte de "tre stora" funktionerna file_operations
, men direkt läsa och skriva till minnet.
Diagrammet nedan visar hur användarutrymmet kommer åt de olika typerna av filsystem som vanligtvis är monterade på Linux-system. Strukturer visas inte pipes
, dmesg
и POSIX clocks
, som också implementerar strukturen file_operations
, nås via VFS-lagret.
VFS är ett "omslagslager" mellan systemanrop och implementeringar av vissa file_operations
såsom ext4
и procfs
. Funktioner file_operations
kan interagera med antingen drivrutiner eller minnesåtkomstenheter. tmpfs
, devtmpfs
и cgroups
Använd inte file_operations
, men direkt åtkomst till minnet.
Förekomsten av VFS ger en möjlighet att återanvända kod, eftersom de grundläggande metoderna förknippade med filsystem inte behöver implementeras på nytt av varje typ av filsystem. Återanvändning av kod är en vanlig praxis bland mjukvaruingenjörer! Däremot om den återanvändbara koden innehåller
/tmp: Enkelt tips
Ett enkelt sätt att upptäcka att VFS finns på ett system är att skriva mount | grep -v sd | grep -v :/
, som visar alla monterade (mounted
) filsystem som inte är diskresidenta och icke-NFS, vilket är sant på de flesta datorer. En av de listade fästena (mounts
) VFS kommer utan tvekan /tmp
, höger?
Alla känner till den förvaringen / tmp
på ett fysiskt medium - galenskap!
Varför är det oönskat att lagra /tmp
på fysiska medier? Eftersom filerna i /tmp
är tillfälliga och lagringsenheter är långsammare än minnet där tmpfs skapas. Dessutom är fysiska medier mer mottagliga för att bäras när de skrivs över än minne. Slutligen kan filer i /tmp innehålla känslig information, så att få dem att försvinna vid varje omstart är en viktig funktion.
Tyvärr skapar vissa installationsskript för Linuxdistribution /tmp på lagringsenheten som standard. Misströsta inte om detta hände ditt system också. Följ några enkla instruktioner med tmpfs
blir otillgänglig för andra ändamål. Med andra ord, ett system med en gigantisk tmpfs och stora filer på kan få slut på minne och krascha. Ett annat tips: medan du redigerar en fil /etc/fstab
, kom ihåg att det måste sluta med en ny rad, annars kommer ditt system inte att starta.
/proc och /sys
förutom /tmp
, VFS (virtuella filsystem) som är mest bekanta för Linux-användare /proc
и /sys
. (/dev
finns i delat minne och inte har file_operations
). Varför dessa två komponenter? Låt oss titta på den här frågan.
procfs
skapar en ögonblicksbild av kärnan och processerna den övervakar för userspace
. I /proc
kärnan skriver ut information om vad den har tillgängligt, såsom avbrott, virtuellt minne och schemaläggaren. Förutom, /proc/sys
är platsen där parametrarna konfigurerats med kommandot sysctl
, tillgänglig för userspace
. Status och statistik för enskilda processer visas i kataloger /proc/
.
Här /proc/meminfo
är en tom fil som ändå innehåller värdefull information.
beteende /proc
filer visar hur olika VFS-diskfilsystem kan vara. Å ena sidan, /proc/meminfo
innehålla information som kan ses med kommandot free
. Å andra sidan är det tomt! Hur fungerar det? Situationen påminner om den berömda artikeln med titeln /proc
, och faktiskt i filer /proc
det finns ingenting när ingen tittar. Som sagt
Till synes tomhet procfs
vettigt eftersom informationen där är dynamisk. En lite annorlunda situation med sysfs
. Låt oss jämföra hur många filer som är minst en byte i storlek /proc
och /sys
.
Procfs
har en fil, nämligen den exporterade kärnkonfigurationen, vilket är ett undantag eftersom den bara behöver genereras en gång per uppstart. Å andra sidan, i /sys
det finns många större filer, varav många tar upp en hel sida i minnet. Vanligtvis filer sysfs
innehålla exakt en siffra eller rad, till skillnad från tabeller med information som erhålls från att läsa filer som t.ex /proc/meminfo
.
Mål sysfs
- tillhandahålla läs/skrivegenskaper för vad kärnan anropar «kobjects»
i användarutrymmet. Det enda målet kobjects
är referensräkning: när den sista referensen till ett kobjekt tas bort kommer systemet att återställa resurserna som är associerade med det. Ändå, /sys
utgör de flesta av de kända
Kärnans stabila ABI begränsar vad som kan dyka upp i /sys
, inte vad som faktiskt är närvarande vid det specifika ögonblicket. Att lista filbehörigheter i sysfs ger insikt i hur konfigurerbara inställningar för enheter, moduler, filsystem etc. kan konfigureras eller läsas. Den logiska slutsatsen är att procfs också är en del av kärnans stabila ABI, även om detta inte uttryckligen anges i
Filer in sysfs
beskriv en särskild egenskap för varje enhet och kan vara läsbar, skrivbar eller båda. "0" i filen betyder att SSD:n inte kan tas bort.
Låt oss börja den andra delen av översättningen med hur man övervakar VFS med hjälp av verktygen eBPF och hemlig kopia, och nu väntar vi på dina kommentarer och bjuder dig traditionellt att
Källa: will.com