Ext2 filsystem i Linux. Hur man får åtkomst till Ext2, Ext3, Ext4 filsystem i en Windows-miljö ext2 filsystem

Hur man gör det möjligt att komma åt en diskpartition eller flyttbara media med filsystem i en Windows-miljö Ext2/3/4 ? Om det till exempel också finns ett andra system på datorn linux. Och det är nödvändigt att arbeta med sin data från omgivningen Windows. Eller ett annat exempel - när virtuella diskar är monterade inuti Windows med installerade på virtuella maskiner system linux eller Android. Med Ext2/3/ 4 Windows fungerar inte inbyggt, det behöver tredjepartsverktyg för detta. Vilka är dessa fonder? Låt oss överväga dem nedan.

***
De tre första medlen kommer att göra det möjligt att endast läsa informationsenheter med Ext2/3/4. Den sista lösningen tillåter både att läsa och skriva data. Alla verktyg nedan är gratis.

1. DiskInternals Linux Reader

Ett enkelt program är en primitiv filhanterare, gjord som en vanlig Windows Explorer, med stöd för filsystem Ext 2/3/4 , Reiser4 , HFS , UFS2. I programfönstret kommer vi att se partitioner och enheter med linux eller Android.

För att kopiera, välj en mapp eller fil, tryck på knappen Spara.

Ange sedan kopieringssökvägen.

2. Plugin för Total Commander DiskInternals Reader

Fans av de populära kan extrahera data linux eller Android inuti Windows med den här filhanteraren. Men efter att ha installerat en speciell plugin i den. En av dessa plugins är att den kan ansluta och läsa informationsenheter formaterade i Ext2/3/4 , Fett/exFAT , HFS/HFS+ , ReiserFS. Ladda ner plugin, packa upp dess arkiv inuti , bekräfta installationen.

Vi lanserar (Viktig) på uppdrag av administratören. Vi går till avsnittet. Vi trycker på.

Här, tillsammans med andra diskpartitioner och media, den med Ext2/3/4 .

Uppgifterna kopieras traditionellt för sätt - genom att trycka på F5 på den andra panelen.

3. Plugin för Total Commander ext4tc

Förenklat alternativ till den tidigare lösningen − ext4tc, ett annat plugin för . Den kan ansluta för att läsa informationsenheter endast formaterade i Ext2/3/4. Ladda ner plugin, packa upp dess arkiv i filhanteraren, starta installationen.

Vi lanserar (Viktig) på uppdrag av administratören. Klick . Vi går in.

Om du behöver kopiera data, använd den vanliga metoden med F5-tangenten.

4. Drivrutinsstöd Ext2Fsd

Program Ext2Fsdär en förare Ext2/3/4, implementerar den stöd för dessa filsystem på operativsystemnivå. Du kan arbeta med diskpartitioner och enheter formaterade i dessa filsystem som med vanliga Windows-stödda mediaenheter i Explorer-fönstret eller tredjepartsprogram. Drivrutinen tillåter både att läsa och skriva data.

Laddar ner den senaste aktuella versionen Ext2Fsd.

Under installationen, aktivera (om för långtidsarbete) tre föreslagna kryssrutor:

1 - Autorun drivrutin med Windows;
2 - Inspelningsstöd för ext2;
3 - Formateringsstöd för Ext3.

I pre-finish-stadiet aktiverar vi alternativet att starta drivrutinshanteraren - - med tillhörande tilldelning av information till enheter med Ext2/3/4 drivbokstäver.

I fönstret som öppnades vi kommer att se transportören med brevet redan tilldelat. Till exempel, i vårt fall, en transportör med Ext4 det första gratisbrevet ges F.

Nu kan vi arbeta med disken F i utforskarfönstret.

Tilldela ett brev till nya anslutna enheter med Ext2/3/4 Du kan använda sammanhangsmenyn som kallas för var och en av de som visas i fönstret enheter. Men bara genom att tilldela en enhetsbeteckning kommer en sådan enhet inte att visas efter Starta om Windows, den här lösningen är endast för en session med datorarbete. Att göra en ny enhet med Ext2/3/4 permanent synlig i Windows-miljön måste du dubbelklicka på den för att öppna inställningsfönstret och ställa in permanenta anslutningsparametrar. I den andra kolumnen behöver du:

För flyttbara media, aktivera kryssrutan som anges med siffran 1 på skärmdumpen och ange enhetsbeteckningen;
För interna diskar och partitioner, aktivera kryssrutan som anges på skärmdumpen nedan med siffran 2 och ange även enhetsbeteckningen.

14 jun

Filsystem ext2, ext3, XFS, ReiserFS, NTFS

Filsystem- detta är en ordning som bestämmer hur organisation, lagring och namngivning av data på alla elektroniska lagringsmedier i datorer.

Mångfalden av filsystem förklaras av det faktum att var och en uppfanns för sitt specifika uppgiftspaket. Vissa skriver små filer väldigt snabbt (säg upp till 1 GB), men interagerar samtidigt dåligt med stora filer eller fungerar inte alls med dem. Vissa är bra vad gäller säkerhet, andra vad gäller skriv/läshastighet. Varje filsystem har sina fördelar, nackdelar, sårbarheter och särdrag.

I linux De vanligaste typerna av filsystem är:

  1. ext2- står för Andra utökade filsystemet(andra utökade filsystemet). Utvecklat av Remy Card 1993 som ett filsystem för Linux-kärnan, från 1993-2001 var det huvudfilsystemet linux.
    Fördelen är den höga läs/skrivhastigheten.
    Den största nackdelen med systemet ext2är att det inte är journalfört, men det är tack vare detta som det har bra prestanda ( skogsavverkning- detta är en loggningsprocess som lagrar en lista över ändringar som hjälper till att upprätthålla filsystemets integritet under olika systemfel);
  2. ext3- står för Tredje utökade filsystemet(tredje versionen av det utökade filsystemet). Utvecklad av Stephen Tweedy 2001, används till denna dag i distributioner linux. Föddes som en förbättrad ext2.
    Fördelen med detta system är att det är journalfört, det vill säga dess tillförlitlighet ökar många gånger jämfört med ext2.
    Nackdelen är något lägre prestanda och läs/skrivhastighet.
  3. XFS- Utvecklad av företaget Silikon grafik 1993, lades till kärnan linux som ett filsystem 2002 till hela familjen av distributioner linux, används för närvarande som "native" i distributionen röd hatt.
    Fördelen är närvaron av metadataloggning, hög stabilitet i arbetet, distributionen av I/O-strömmar i grupper stöds, hög läs-/skrivhastighet, det är möjligt att defragmentera även när partitionen är monterad, och du kan öka storleken av filsystemet. Fungerar mest effektivt med stora filer.
    Nackdelen är att storleken på partitionen inte går att minska, bearbetningen av metadata är inte så snabb, det fungerar märkbart långsammare med små filer än andra typer av filsystem.
  4. ReiserFS- utvecklat av företaget namesys under ledning av Hans Reiser 2001. Endast använd på operativsystem linux. Det var det första journalfilsystemet som infördes i kärnan.
    Fördelen med detta filsystem är att det fungerar väldigt snabbt med små filer (läs/skrivhastighet är högre än familjens ext4), stöder loggning.
    Nackdelen är att dess utveckling har avtagit märkbart på grund av gripandet av chefen Hans Reiser och det finns ingen bakgrundskryptering.
  5. NTFS- står för ny teknik filsystem(ny teknik filsystem). Utvecklad i juli 1993 av företaget Microsoft. Det används ofta i olika operativsystem, såväl som i olika lagringsmedia.
    Fördelen är den inbyggda möjligheten att begränsa åtkomst till data för olika användare, samt tilldela begränsningar på maximal volym diskutrymme, användning av ett journalsystem, höghastighetsläsning/skrivning av små filer.
    Nackdelen är att stabil drift kräver mer än ett litet PC RAM, det fungerar långsamt med stora filer, längden på filsökvägen är begränsad (32 767 Unicode-tecken).

På ett så enkelt sätt kom vi på "filsystemen ext2, ext3, XFS, ReiserFS, NTFS«!

Filsystem(engelsk filsystem) - en order som bestämmer metoden för att organisera, lagra och namnge data på informationsbärare av IT-utrustning (med hjälp av bärbara flashminneskort i bärbara elektroniska apparater: digital kameror, mobiltelefoner etc. e) och datateknik. Den definierar formatet för innehållet och fysisk lagring av information som vanligtvis grupperas i form av filer. Ett specifikt filsystem bestämmer storleken på ett filnamn (mapp), maximal fil- och partitionsstorlek och en uppsättning filattribut. Vissa filsystem tillhandahåller tjänster, såsom åtkomstkontroll eller filkryptering.

Filsystemuppgifter

Huvudfunktionerna i alla filsystem är inriktade på att lösa följande uppgifter:

filnamn;

programgränssnittet för arbete med filer för applikationer;

mappa den logiska modellen för filsystemet till den fysiska organisationen av datalagret;
organisera stabiliteten av filsystemet mot strömavbrott, hårdvaru- och mjukvarufel;

I fleranvändarsystem visas en annan uppgift: skydda en användares filer från obehörig åtkomst av en annan användare, samt säkerställa gemensamt arbete med filer, till exempel när en fil öppnas av en av användarna, för andra samma sak filen kommer att vara tillfälligt tillgänglig i skrivskyddat läge.

Filsystemet är huvudstrukturen som används av en dator för att organisera information på en hårddisk. När du installerar en ny hårddisk det måste vara partitionerat och formaterat för ett specifikt filsystem, varefter det kan lagra data och program. Windows har tre möjliga filsystemalternativ: NTFS, FAT32 och det sällan använda äldre FAT-systemet (även känt som FAT16).

NTFS är det föredragna filsystemet för denna version av Windows. Det har många fördelar jämfört med det tidigare FAT32-systemet; några av dem är listade nedan.

Möjligheten att automatiskt återställa från vissa diskfel (FAT32 har inte denna förmåga).
Förbättrat stöd för stora hårddiskar.
Högre grad av säkerhet. Du kan använda behörigheter och kryptering för att förhindra användaråtkomst till vissa filer.

FAT32-filsystemet och det sällan använda FAT-systemet har använts tidigare Windows-versioner, inklusive Windows 95, Windows 98 och Windows Millennium Edition. FAT32-filsystemet ger inte den säkerhetsnivå som NTFS ger, så om en dator har en FAT32-formaterad partition eller volym är filerna på den partitionen synliga för alla som har tillgång till datorn. Filsystemet FAT32 har också filstorleksbegränsningar. I den här versionen av Windows är det inte möjligt att skapa en FAT32-partition som är större än 32 GB. Dessutom kan en FAT32-partition inte innehålla en fil som är större än 4 GB.

Den främsta anledningen till att använda FAT32-systemet skulle vara att datorn kommer att kunna köra både Windows 95, Windows 98 eller Windows Millennium Edition, såväl som denna version av Windows (multi-OS-konfiguration). För att skapa en sådan konfiguration måste du installera en tidigare version av operativsystemet på en partition formaterad med FAT32 eller FAT, vilket gör den till den primära (den primära partitionen kan innehålla operativsystemet). Andra avsnitt nås från tidigare versioner Windows måste också formateras som FAT32. Tidigare versioner av Windows kan bara komma åt NTFS-nätverkspartitioner eller -volymer. NTFS-partitioner på den lokala datorn kommer inte att vara tillgängliga.

FAT - plus:

Kräver lite RAM för att fungera effektivt.
Snabbt arbete med små och medelstora kataloger.
Skivan gör färre huvudrörelser i genomsnitt (jämfört med NTFS).
Effektivt arbete på långsamma körningar.

FET - nackdelar:

Katastrofal prestandaförlust med ökande fragmentering, särskilt för stora enheter (endast FAT32).
Svårigheter med slumpmässig åtkomst till stora (säg 10 % eller mer av diskstorleken) filer.
Mycket långsamt arbete med kataloger som innehåller ett stort antal filer.

NTFS-proffs:

Filfragmentering har liten eller ingen effekt på själva filsystemet - prestandan för ett fragmenterat system försämras endast när det gäller åtkomst till själva fildatan.
Katalogstrukturens komplexitet och antalet filer i en katalog utgör inte heller några särskilda hinder för prestanda.
Snabb åtkomst till ett godtyckligt fragment av en fil (till exempel redigering av stora .wav-filer).
Mycket snabb åtkomst till små filer (flera hundra byte) - hela filen finns på samma plats som systemdata (MFT-post).

NTFS nackdelar:

Betydande systemminneskrav (64 MB är det absoluta minimumet, mer är bättre).
Långsamma diskar och kontroller utan Bus Mastering saktar ner kraftigt NTFS-prestanda.
Att arbeta med medelstora kataloger är svårt eftersom de nästan alltid är fragmenterade.
En disk som har körts under lång tid i ett tillstånd av 80% - 90% full kommer att visa extremt låg prestanda.

Följande filsystem anses vara "inbyggda" för Linux (det vill säga de som det kan installeras på och från vilka det kan starta): ext2fs, ext3fs, ext4fs, ReiserFS, XFS, JFS. Det är de som vanligtvis erbjuds valet vid installation av de allra flesta distributioner. Naturligtvis finns det sätt Linux installationer till FAT/VFAT/FAT32 filsystem, men det här är bara för de älsklingar och monsieurer som förstår mycket om perversioner, och jag kommer inte att prata om dem.

Huvudkriterierna för att välja ett filsystem är vanligtvis tillförlitlighet och hastighet. I vissa fall måste du också ta hänsyn till kompatibilitetsfaktorn - i det här fallet betyder det andra operativsystems förmåga att komma åt ett visst filsystem.
Jag börjar med ReiserFS - eftersom anledningen till att skriva denna anteckning var frågan: vad ska anses vara små filer? Det är trots allt välkänt att det är effektiviteten i att arbeta med små filer som är styrkan i detta filsystem.

Så små filer är filer som är mindre än filsystemets logiska block, vilket i Linux i de flesta fall är lika med fyra kilobyte, även om det kan ställas in under formatering inom vissa gränser (beroende på den specifika FS). Det finns otaliga sådana små filer i alla Unix-liknande operativsystem. Ett typiskt exempel är filerna som utgör trädet av FreeBSD-portar, Gentoo-portar och liknande portade system.
I de flesta filsystem har sådana minifiler både en egen inod (en informationsnod som innehåller metainformation om filen) och ett datablock, vilket leder till både diskutrymmesförbrukning och långsammare filoperationer. I synnerhet är detta anledningen till den katastrofala omtänksamheten hos FreeBSD-filsystemet (både det gamla, UFS, och det nya, UFS2) när man arbetar med sitt eget portsystem.

I ReiserFS-filsystemet, i sådana fall, tilldelas inte separata block för data - det lyckas skjuta fildata direkt in i området för sin egen inod. På grund av detta sparas diskutrymme och prestanda ökar - bokstavligen flera gånger jämfört med alla andra FS.
Denna hantering av små ReiserFS-filer har gett upphov till en legend om dess opålitlighet. Faktum är att när filsystemet kraschar (det vill säga förstörelse av tjänstområden), försvinner data som placeras tillsammans med dess inoder tillsammans med dem - och oåterkalleligt. Medan i de filsystem där inoder och datablock alltid är spatialt åtskilda, kan de senare teoretiskt återställas. Så för ext2/ext3 finns det till och med verktyg som låter dig göra detta.

Men som vilken legend som helst, ger den här bara intrycket av autenticitet. För det första gäller permanent dataförlust endast för mycket små filer. Bland användarna finns det praktiskt taget inga sådana, och alla andra kan enkelt återställas från distributionssatsen.
För det andra, när jag pratade om möjligheten att återställa data från block som har förlorat sin bindning till sina inoder, använde jag inte av misstag ordet "teoretisk". För i praktiken är denna sysselsättning extremt tidskrävande och ger inte ett garanterat resultat. Alla som har varit tvungna att göra detta kommer att hålla med om att man kan hänge sig åt det bara av fullständig hopplöshet. Och det gäller alla filsystem linux. Så denna aspekt kan försummas när man väljer ett filsystem.

När det gäller övergripande prestanda är ReiserFS definitivt snabbare än alla andra journaliserade FS, och i vissa avseenden till och med överträffar ext2. Resultaten av att jämföra hastigheten för några vanliga filfiloperationer kan hittas här.
Men med kompatibiliteten för ReiserFS är situationen något värre. Åtkomst till det från Windows OS, så vitt jag vet, är inte möjligt. Vissa operativsystem i BSD-familjen (DragonFlyBSD, FreeBSD) stöder detta filsystem, men i skrivskyddat läge. Även sannolikheten att en godtycklig Linux LiveCD från förr inte har ReiserFS-stöd är inte noll.

Och här är det dags att komma ihåg ext3fs. Dess fördel är inte alls i större tillförlitlighet - detta är samma legend som instabiliteten hos ReiserFS. Jag har hört lika mycket om ext3fs-krascher som jag har hört om ReiserFS-krascher. Själv kunde jag inte förstöra varken det ena eller det andra. Såvida det inte fungerade med ext2 - men även det var väldigt länge sedan, under tiden för kärnan 2.2 (eller till och med 2.0).

Nej, den största fördelen med ext3fs är dess kompatibilitet - det är garanterat att läsas av alla Linux-system. Till exempel, när jag återställde från någon gammal LiveCD-assistent - en situation som nästan inte är så otroligt, var jag tvungen att ge mig in i det. Återigen, de flesta BSD-system förstår ext3fs enkelt (om än utan journalföring). För Windows finns det också, så vitt jag vet, alla typer av drivrutiner och plug-ins för gemensamma filhanterare(typ Total befälhavare) som ger åtkomst till ext2fs/ext3fs-partitioner.

När det gäller prestanda lämnar ext3fs ett blandat intryck. För det första är dess prestanda mycket beroende av loggningsläget, av vilka det finns tre: med fullständig dataloggning, partiell dataloggning och loggning endast med metadata. I vart och ett av lägena visar den olika prestanda för olika typer av filoperationer. Föreställningen är dock i alla fall inget rekord.

Men om kravet på hastighet sätts i första hand så är ext2fs ur konkurrens här – dock får du i det här fallet stå ut med bristen på loggning överhuvudtaget. Och följaktligen, med långa filsystemkontroller i händelse av felaktig avstängning - och med volymen av moderna diskar, kan detta dra ut på tiden under lång tid ...

Angående XFS är det möjligt att berätta följande. När det gäller kompatibilitet gäller allt som är skrivet för ReiserFS för det - dessutom tills en tid stöddes det inte av standard Linux-kärnan. Ur prestandasynpunkt lyser det inte heller XFS, totalt sett på samma nivå som ext3fs. Och när det gäller att radera filer visar det i allmänhet en deprimerande långsamhet.
Enligt min erfarenhet lönar det sig att använda XFS när man arbetar med inte bara stora, utan mycket stora filer - som faktiskt bara är DVD-bilder och videofiler.

Jag återkommer till frågan om tillförlitlighet. En banal avstängning under normalt användararbete överför som regel smärtfritt alla journaliserade filsystem (och inget av dem säkerställer säkerheten för användaroperationer som inte är skrivna till disk - räddar de drunknande människorna och här återstår arbetet med de drunknande själva). Det är sant att för alla filsystem är det möjligt att simulera en situation där avstängning av strömmen kommer att leda till mer eller mindre allvarlig skada på den. Men i verkliga livet är förekomsten av sådana situationer osannolikt. Och du kan helt eliminera dem genom att köpa en avbrottsfri strömförsörjning - det kommer att ge mer förtroende för datasäkerheten än typen av filsystem. Tja, i alla fall kan bara deras vanliga säkerhetskopiering vara en garanti för att återställa förstörda data ...

Jag tror att ovanstående information räcker för ett välgrundat val. Mitt personliga val under de senaste åren har varit ReiserFS. Ibland, på system där det är motiverat att flytta allt som är möjligt utanför rotpartitionen, är det lämpligt att använda ext3fs för rotfilsystemet och ReiserFS för allt annat.

Om en separat partition tillhandahålls för /boot-katalogen (och detta rekommenderas när du använder GRUB bootloader dess utvecklare) - för det är inget annat filsystem, förutom ext2fs, motiverat, någon form av journalföring är inte meningsfull här. Slutligen, om en separat partition skapas för alla typer av multimediamaterial, kan du tänka på XFS.

Om vi ​​närmar oss förklaringen mer metodiskt

ext - I Linux tidiga dagar var ext2 (extended filsystem, version 2) det dominerande systemet. Sedan 2002 har det ersatts av ext3-systemet, som till stor del är kompatibelt med ext2, men även stöder journalfunktioner, och, när man arbetar med kärnversion 2.6 och högre, även ACL. Den maximala filstorleken är 2 TB, den maximala filsystemets storlek är 8 TB. I slutet av 2008 tillkännagavs officiellt en version av ext4, som är bakåtkompatibel med ext3, men många funktioner implementeras mer effektivt än tidigare. Dessutom är den maximala filsystemets storlek 1 EB (1 048 576 TB), och du kan räkna med att det räcker ett tag. Om reiser - Systemet har fått sitt namn efter sin grundare, Hans Reiser, och var det första systemet med loggningsfunktionalitet för att komma åt Linux-kärnan för data. SUSE-versionen av zp ansågs till och med vara standarden under en tid. De främsta fördelarna med reiser framför ext3 är snabbare hastighet och bättre placering när man arbetar med små filer (och de flesta filer i ett filsystem tenderar att vara små). Med tiden stannade dock utvecklingen av resafers. Version 4 tillkännagavs för länge sedan, som fortfarande inte är klar, och stödet för version 3 har upphört. Om xfs - Filsystemet xfs utvecklades ursprungligen för SGI-arbetsstationer som körs på operativsystemet IRIX. Xfs är särskilt bra för att arbeta med stora filer, i synnerhet är det idealiskt för att arbeta med strömmande video. Systemet stöder kvoter och utökade attribut (ACL).
jfs

jfs - a66peBHaTypaJFS står för "Journaled File System". Den utvecklades ursprungligen för IBM och anpassades sedan för Linux. Jfs har aldrig riktigt fått mycket erkännande i Linux och lever för närvarande en eländig tillvaro, underlägsen andra filsystem.
brtfs

brtfs - om det är de ledande kärnutvecklarnas vilja har brtfs-filsystemet i Linux en ljus framtid. Detta system utvecklades på Oracle från grunden. Den inkluderar enhetsmapper och RAID-stöd. Brtfs liknar mest Suns ZFS. Dess mest intressanta funktioner inkluderar kontroll av filsystemet på språng, samt stöd för SSD (Solid State Drives är hårddiskar baserade på flashminne). Tyvärr kommer arbetet med brtfs inte att slutföras inom överskådlig framtid. Sedan version 11 av Fedora är det möjligt att installera brtfs, men jag rekommenderar att du bara använder det för filsystemutvecklare!
Det finns inget "snabbaste" eller "bästa" filsystem - uppskattningen beror på vad du tänker använda systemet till. Nybörjare Linux-användare som arbetar på en lokal dator rekommenderas att arbeta med ext3 och serveradministratörer med ext4. Naturligtvis är ext4 snabbare än ext3, men ext4 har betydligt sämre datatillförlitlighet – du kan lätt tappa information om systemet plötsligt stängs av.

Om du installerade ett andra UNIX-liknande operativsystem på din dator, kommer följande filsystem att vara praktiskt när du utbyter data (från ett operativsystem till ett annat).

sysv - används av SCO, Xenix och Coherent OS.

ufs - Används av FreeBSD, NetBSD, NextStep och SunOS. Linux kan bara läsa information från sådana filsystem, men kan inte göra ändringar i data. För att komma åt BSD-segment behöver du dessutom tillägget BSD disklabel. En liknande tillägg finns för SunOS-partitionstabeller.

ZFS är ett relativt nytt system utvecklat av Sun för Solaris. Eftersom ZFS-koden inte överensstämmer med GPL-licensen kan den inte integreras med Linux-kärnan. Av denna anledning stöder Linux endast detta filsystem indirekt via FUSE.
Windows, Mac OS X

Följande filsystem kommer att vara användbara när du utbyter information med MS DOS, Windows, OS/2 och Macintosh.

vfat - används i Windows 9x/ME. Linux kan läsa information från sådana partitioner och göra ändringar i den. Vfat-systemdrivrutinerna låter dig arbeta med gamla MS DOS-filsystem (8 + 3 tecken).

ntfs - systemet används i alla moderna versioner av Windows: otNT och högre. Linux kan läsa och ändra sina filer.

hfs och hfsplus - dessa filsystem används i Apple-datorer. Linux kan läsa och ändra sina filer.

Data-cd- och dvd-skivor använder vanligtvis sina egna filsystem.

iso9660 - Filsystemet för CD-ROM-skivor beskrivs i ISO-9660-standarden, som endast tillåter korta filnamn. Långa namn stöds i olika operativsystem på olika sätt, med hjälp av en mängd olika tillägg som är inkompatibla med varandra. Ett Linux-system kan köra både Rockridge-tillägget som är gemensamt för UNIX och Joliet-tillägget utvecklat av Microsoft.

udf - detta format (universellt diskformat) dök upp och utvecklades som arvtagaren till ISO 9660.

Nätverksfilsystem

Filsystem behöver inte finnas på den lokala enheten - de
kan ansluta till en dator och via nätverket. Linux-kärnan stöder olika nätverksfilsystem, av vilka följande är de vanligaste.

smbfs/cifs - Hjälper till att mappa Windows eller Samba nätverkskataloger till ett katalogträd.

nfs är det viktigaste nätverksfilsystemet i UNIX.

coda - detta system är mycket likt NFS. Den har många ytterligare funktioner, men det är inte särskilt vanligt.

ncpfs - körs på NetWare-kärnprotokollet;oH som används av Novell Netware.

Virtuella filsystem

Det finns flera filsystem i Linux som inte är designade för att lagra data på en hårddisk (eller andra media), utan bara för att utbyta information mellan kärnan och användarprogrammen.
devpts - Detta filsystem ger åtkomst till pseudoterminaler (förkortat PTY) via /dev/pts/* i enlighet med UNIX-98-specifikationen. (Pseudoterminaler emulerar ett seriellt gränssnitt. På UNIX/Linux-system används sådana gränssnitt av terminalemulatorer som xterm. Enheter som /dev/ttypn används vanligtvis. Däremot definierar UNIX-98-specifikationen nya enheter. Mer information information rapporteras i textterminalen H0WT0.)
proc och sysfs - proc-filsystemet används för att visa tjänstinformation relaterad till hanteringen av kärnan och processer. Utöver detta bygger sysfs-filsystemet relationer mellan kärnan och hårdvaran. Båda filsystemen är monterade på positionerna /proc och /sys.
tmpfs - Detta system är baserat på delat minne enligt System V. Det är vanligtvis anslutet till position /dev/shm och ger ett effektivt informationsutbyte mellan två program. På vissa distributioner (t.ex. Ubuntu) skapas även katalogerna /var/run och /var/lock med hjälp av filsystemet tmpfs. Filer i dessa kataloger används av vissa nätverksdemoner för att lagra processidentifieringsnummer och filåtkomstinformation. Tack vare tmpfs återspeglas nu dessa data i RAM. Metoden garanterar hög hastighet, liksom det faktum att efter att datorn stängts av kommer inga filer att finnas kvar i katalogerna /var/run eller /var/lock.

usbfs - usbfs-filsystemet, från kärnversion 2.6 och högre, ger information om anslutna USB-enheter. Det är vanligtvis integrerat i proc-filsystemet. Om USB-enhetsstöd i Linux.

Andra filsystem

auto - i själva verket finns det inget filsystem med det namnet. Ordet auto kan dock användas i /etc/fstab eller med mount-kommandot för att specificera ett filsystem. I det här fallet kommer Linux att försöka känna igen filsystemet på egen hand. Denna metod fungerar med de flesta större filsystem.
autofs, autofs4

autofs, autofs4 är inte heller filsystem, utan kärntillägg som automatiskt kör monteringskommandot för de valda filsystemen. Om ett filsystem inte har använts på en tid, exekveras kommandot umount automatiskt för det. Den här metoden är användbar främst i fall där endast ett fåtal av de många NFS-katalogerna används aktivt samtidigt.

För att utföra dessa operationer, kör /etc/init.d/ autofs-skriptet automatiskt automount-programmet vid systemstart. Den konfigureras med filen /etc/auto.master. Lämpliga program installeras automatiskt i till exempel Red Hat och Fedora. I vilket fall som helst, är autofs endast aktiverat efter att ha konfigurerat /etc/auto.master eller /etc/auto.misc.
cramfs och squashfs

cramfs och squashfs - Cram och Squash filsystem är skrivskyddade. De används för att "packa" så många zippade filer i flashminne eller ROM (Read Only Memory) som möjligt.

fuse - FUSE står för "Filesystem in Userspace" och tillåter utveckling och användning av filsystemdrivrutiner utanför kärnan. Därför används FUSE alltid med en extern filsystemdrivrutin. FUSE fungerar särskilt med NTFS-drivrutinen ntfs-3g.

gfs och ocfs - Oracles Global File System och Oracle Cluster File System låter dig bygga gigantiska nätverksfilsystem som kan nås parallellt av många datorer samtidigt.

jffs and yaffs - Journaling Flash File System och Yet Another Flash File System är speciellt optimerade för att arbeta med solid state-enheter och flashmedia. Med hjälp av speciella algoritmer försöker de att jämnt använda alla minnesceller (slitage leveling technology) för att undvika för tidigt systemfel.
slinga

loop - används för att arbeta med pseudoenheter. En loopback-enhet är en adapter som kan komma åt en vanlig fil som om den vore en blockenhet. Tack vare honom kan du placera vilket filsystem som helst i vilken fil som helst och sedan ansluta den till katalogträdet med hjälp av mount. Kärnfunktionen som ansvarar för detta - stöd för pseudoenhet - är implementerad i loopmodulen.

Det finns olika sätt att använda pseudo-enheter. I synnerhet kan de användas när man skapar diskar i RAM för initial initiering (Initial RAM-disk) för GRUB eller LILO, när man implementerar krypterade filsystem eller testar ISO-avbildningar för CD.

Filsystem för lagringsmedia

Filsystem
ISO 9660
Joliet förlängning av filsystemet ISO 9660.
Rock Ridge (RRIP, IEEE P1282) är en ISO 9660 filsystemtillägg designad för att lagra filattribut som används i POSIX operativsystem
Amiga Rock Ridge Extensions
El Torito
Apple ISO9660-tillägg
HFS, HFS+
Universal Disk Format En specifikation för ett operativsystemoberoende filsystemformat för lagring av filer på optiska media. UDF är en implementering av ISO/IEC 13346-standarden
Mount Rainier

Fil Linux-system- detta är oftast ext4. Det är loggning och gör att du bekvämt kan arbeta med data när du löser de allra flesta uppgifter. Det finns dock andra. Huvudtyperna av filsystem och principerna för att arbeta med dem kommer att övervägas inom ramen för detta material.

Typer av Linux-filsystem och deras funktioner

Utmärkande egenskaper är hastigheten för att arbeta med filer, säkerhet och parametrar (som blockstorlek) som finns som standard och ställs in när FS skapas. Den kanske viktigaste egenskapen är närvaron av en stock. Systemloggen registrerar data eller metadata(endast rubriker) från vilka information kan återställas vid fel.

Ett filsystem kan skapas på vilken enhet som helst: disk eller systempartition.

EXT2 filsystem

EXT2 är ett nu förlegat filsystem som knappast används i moderna installationer. den största nackdelen är bristen på loggning, vilket gör det omöjligt att återställa data i händelse av ett fel. Används fortfarande på bärbara media som USB. Ett magasin krävs inte för dem, eftersom det tar en viss mängd utrymme.

Det garanterar också maximal hastighet.

  • för EXT2 är den maximala filstorleken -2 TB

EXT3 filsystem

Ersatt EXT2, huvudfunktionen är utseendet på tidningen, är helt bakåtkompatibel med EXT2 (EXT2 kan fritt konverteras till EXT3). Nu är det också sällsynt, EXT4 används nästan alltid.

Loggen är ett speciellt område i minnet som registrerar information om alla ändringar.

  • för EXT3 är den maximala filstorleken -2 TB
  • den maximala storleken på alla filer är 32 TB
  • Varje katalog kan ha upp till 32 000 underkataloger

Det finns tre alternativ för journalföring (anges när filsystemet skapas):

  • journal - i journalens metadata, såväl som själva informationen
  • ordered - standardalternativet, endast metadata sparas efter skrivning till disk
  • återskrivning - endast metadata sparas också, du kan välja att spara den innan du skriver till disk eller efter

EXT4 filsystem

Den moderna versionen av det utökade filsystemet, det används oftast

  • maximal filstorlek -2 TB 16 TB
  • den maximala storleken på alla filer är 1 EB (exabyte). 1 EB = 1024 PB (petabyte). 1 PB = 1024 TB (terabyte).
  • Varje katalog kan ha upp till 64 000 underkataloger

I EXT4 kan loggning stängas av genom att ställa in alternativet data när den är monterad i av

EXT som det huvudsakliga Linux-filsystemet och arbetsmetoder

Filsystemet skapas av kommandot mk2fs

Önskat loggningsalternativ anges vid montering, till exempel:

montera /dev/vdc /mnt/1 -t ext3 -o data=journal

Konvertera från EXT2 E till XT3

ReiserFS

ReiserFS (och den moderna implementeringen av Reiser4 med SELinux-stöd) fungerar bra och är mycket produktiva - speciellt när man arbetar med ett stort antal små filer. ReiserFS allokerar inte inoder för varje liten fil genom att bearbeta dem tillsammans, även ReiserFS använder en journal med flera tillgängliga alternativ. För närvarande stöds filsystemet av utvecklare från Ryssland.

Du kan skapa en FS för en enhet med kommandot

XFS

XFS är ett journaliserat filsystem. Används Bagge för att lagra information, så dataförlust är möjlig - till exempel när strömmen stängs av.

För att använda XFS i Ubuntu måste du installera paket xfsprogs Och xfsdump

vfat

Linux-filsystemet finns också i Windows-miljön. Den används när det är nödvändigt att organisera gemensam åtkomst till vissa diskar och partitioner av klienter med olika operativsystem. I andra fall rekommenderas det inte att använda det eftersom det kan vara svårt när man arbetar i Linux.

(Andra utökat filsystem).

Historik om utveckling av Linux-filsystem

· Diskpartitionsstruktur i ext2fs

·

· Kataloger

· Enhetsfiler

·

·

EXT2fs bibliotek

· EXT2fs systemverktyg

· Prestandaberäkning

Matfak

programvara

2:a kurs 5:e gr.

Chichirov Andrey

filsystem EXT2fs (Andra utökat filsystem).

Historien om utvecklingen av Linux-filsystem

De första versionerna av Linux utvecklades på basis av operativsystemet Minix. Det skulle vara lättare att dela diskar mellan två system än att utveckla ett nytt filsystem, så Linus Torvalds bestämde sig för att införa stöd för filsystemet Minix i Linux. På den tiden var detta filsystem en ganska effektiv mjukvara med relativt få buggar.

Begränsningarna förknippade med strukturen av filsystemet Minix var dock ganska höga, så de började fundera på att utveckla ett nytt filsystem för Linux.

För att förenkla införandet av ett nytt filsystem i Linuxkärnan utvecklades ett virtuellt filsystem (VFS). VFS skrevs ursprungligen av Chris Provenzano och skrevs sedan om av Linus Torvalds innan det integrerades i kärnan.

Efter att ha installerats i VFS-kärnan utvecklades ett nytt filsystem EXTfs (Extended File System) i april 1992 och lades till i Linux version 0.96c. Det nya filsystemet tog bort två betydande begränsningar för Minix-systemet: dess maximala storlek kunde nå 2 gigabyte och den maximala längden på ett filnamn - 255 tecken. Detta var en förbättring jämfört med Minix-filsystemet, även om det fortfarande fanns några problem. Det fanns inget stöd för delad åtkomst, inodmodifiering och modifiering av filmodifieringstidsceller. Detta filsystem använde länkade listor för att arbeta på fria block och inoder, vilket i hög grad påverkade systemets prestanda: med tiden blev listorna oordnade och sorterade, vilket ledde till fragmentering av filsystemet.

Lösningen på dessa problem var lanseringen i januari 1993 av alfaversioner av två nya filsystem: Xia och EXT2fs (Second Extended File System). För det mesta var Xia-filsystemet baserat på Minix med några nya funktioner tillagda. Dessa var främst möjligheten att arbeta med långa filnamn, stöd för större diskpartitioner och stöd för tre filbytestidsluckor. Å andra sidan var EXT2fs baserad på EXTfs med många förbättringar och tillägg. Hon hade också möjligheter till framtida utveckling.

När dessa två filsystem släpptes var de funktionellt ungefär lika. Xia-systemet var mer pålitligt än EXT2fs genom att minimera det. När de blev mer utbredda upptäcktes buggar i EXT2fs-systemet, och ett stort antal nya funktioner och förbättringar lades till. För närvarande är EXT2fs-filsystemet mycket tillförlitligt och har blivit det de facto standardfilsystemet för Linux.

Följande tabell innehåller allmän information om de olika filsystemens funktionalitet.

Minix FS

ExtFS

Ext2FS

Xia FS

Maximal filsystemstorlek

Maximal fillängd

Maximal filnamnslängd

Stöd för tre filmodifieringstidsceller

Möjlighet till expansion

Ändra storlek på block

Informationsskydd

Om det behövs, längden på filnamnet i Ext 2 kan ökas upp till 1012.

EXT2fs reserverar ett antal block för rotanvändaren. Detta är vanligtvis 5% av det totala, vilket gör att systemadministratören kan undvika att ta slut på hårddiskutrymme när det är fyllt med arbete av andra användares processer.

Diskpartitionsstruktur i ext2fs

Hårddisktillverkare skickar vanligtvis sina produkter lågformaterade. Så vitt jag vet innebär det att allt diskutrymme delas upp i "sektorer" med hjälp av speciella etiketter, 512 byte stora. En sådan disk (eller diskpartition) måste förberedas för användning med ett visst operativsystem. I MS-DOS eller Windows kallas förberedelseproceduren formatering, och i Linux kallas det att skapa ett filsystem. Skapa ett filsystem ext2fsär att skapa en viss logisk struktur i diskpartitionen. Denna struktur är uppbyggd enligt följande. Först tilldelas ett startområde på disken. Startområdet skapas på vilket filsystem som helst. På den primära partitionen innehåller den en startpost, en kodbit som initierar uppstartsprocessen för operativsystemet vid start. Detta område används inte på andra sektioner. Resten av diskutrymmet är uppdelat i block. Ett block kan vara 1, 2 eller 4 kilobyte stort. Ett block är en adresserbar enhet av diskutrymme. Tilldelning av utrymme för filer görs i block, så du måste kompromissa när du väljer blockstorlek. Stor storlek block, som regel, minskar antalet diskåtkomster när du läser eller skriver en fil, men det ökar andelen slöseri med utrymme, särskilt om det finns ett stort antal små filer.

Block i deras område kombineras till grupper av block. Grupper av block i ett filsystem och block inom en grupp numreras sekventiellt med början från 1. Det första blocket på en disk är numrerat 1 och tillhör grupp nummer 1. Det totala antalet block på en disk (i en diskpartition) är en divisor av diskstorleken uttryckt i sektorer. Och antalet blockgrupper behöver inte dela antalet block, eftersom den sista gruppen av block kanske inte är komplett. Början av varje grupp av block har en adress, som kan erhållas som ((gruppnummer - 1)* (antal block i gruppen)).

Varje grupp av block har samma struktur. Dess struktur visas i följande tabell.

Blockera gruppstrukturen för en diskpartition i ext2fs

Det första elementet i denna struktur (superblock) är detsamma för alla grupper, och alla andra är individuella för varje grupp. Superblocket lagras i det första blocket i varje blockgrupp (med undantag för grupp 1, som har en startpost i det första blocket). Superblockär startpunkten för filsystemet. Den har en storlek på 1024 byte och Alltid belägen vid offset 1024 byte från början av filsystemet. Närvaron av flera kopior av superblocket förklaras av den extrema betydelsen av detta element i filsystemet. Superblock-dubbletter används vid återställning av ett filsystem efter kraschar.

Informationen som lagras i superblocket används för att organisera åtkomst till resten av data på disken. Superblocket bestämmer storleken på filsystemet, det maximala antalet filer i partitionen, mängden ledigt utrymme och innehåller information om var man ska leta efter oallokerade områden. När operativsystemet startar läses superblocket in i minnet, och alla ändringar i filsystemet återspeglas först i kopian av superblocket som finns i operativsystemet och skrivs endast periodiskt till disken. Detta förbättrar systemets prestanda eftersom många användare och processer ständigt uppdaterar filer. Å andra sidan, när du stänger av systemet måste superblocket skrivas till disk, vilket inte tillåter dig att stänga av datorn. enkel avstängning näring. Annars, vid nästa uppstart, kommer informationen som skrivits i superblocket inte att motsvara filsystemets verkliga tillstånd.

Superblocket har följande struktur

Fält namn

Typ

En kommentar

s_inodes_count

ULONG

Antal inoder i filsystemet

s_blocks_count

ULONG

Antal block i filsystemet

s_r_blocks_count

ULONG

Antal block reserverade för superanvändare

s_free_blocks_count

ULONG

Gratis blockräknare

s_free_inodes_count

ULONG

Gratis inodräknare

s_first_data_block

ULONG

Det första blocket som innehåller data. Beroende på blockstorleken kan detta fält vara antingen 0 eller 1.

s_log_block_size

ULONG

Logisk blockstorleksindikator: 0 = 1 KB; 1 = 2 KB; 2 = 4 KB.

s_log_frag_size

LÅNG

Fragmentstorleksindikator (det verkar som om begreppet ett fragment inte används för närvarande)

s_blocks_per_group

ULONG

Antal block i varje grupp av block

s_frags_per_group

ULONG

Antal fragment i varje grupp av block

s_inodes_per_group

ULONG

Antal inoder (inoder) i varje blockgrupp

s_mtime

ULONG

Tiden då filsystemet senast monterades.

s_wtime

ULONG

Tidpunkt då filsystemet senast skrevs till

s_mnt_count

USKORT

Räkning av antalet filsystemmonteringar. Om denna räknare når det värde som anges i nästa fält (s_max_mnt_count) måste filsystemet kontrolleras (detta görs vid omstart), och räknaren nollställs.

s_max_mnt_count

KORT

Nummer som anger hur många gånger filsystemet kan monteras

s_magi

USKORT

"Magiskt nummer" (0xEF53) som indikerar att filsystemet är av typen ex2fs

s_stat

USKORT

Flaggor som indikerar filsystemets nuvarande tillstånd (är det rent, etc.)

s_errors

USKORT

Flaggor som anger procedurer för behandling av felmeddelanden (vad ska man göra om fel hittas).

s_pad

USKORT

fyllning

s_lastcheck

ULONG

Tidpunkten för den senaste filsystemkontrollen

s_kontrollintervall

ULONG

Maximal tidsperiod mellan filsystemkontroller

s_creator_os

ULONG

Indikation på vilken typ av OS där filsystemet skapades

s_rev_level

ULONG

Version (revisionsnivå) av filsystemet.

s_reserverad

ULONG

Utfyllnad upp till 1024 byte

Efter superblocket följer beskrivningen av gruppen av block (Group Descriptors). Denna beskrivning är en array med följande struktur.

Fält namn

Typ

Syfte

bg_block_bitmap

ULONG

Adress till blocket som innehåller blockbitmappen för den givna gruppen

bg_inode_bitmap

ULONG

Adress till blocket som innehåller inodbitmappen för denna grupp

bg_inode_table

ULONG

Adress till blocket som innehåller inodtabellen för denna grupp

bg_free_blocks_count

USKORT

Räknaren för antalet lediga block i denna grupp

bg_free_inodes_count

USKORT

Antal fria inoder i denna grupp

bg_used_dirs_count

USKORT

Antal inoder i denna grupp som är kataloger

bg_pad

USKORT

fyllning

bg_reserved

ULONG

fyllning

Storleken på blockgruppsbeskrivningen kan beräknas som (block_group_size_in_ext2 * number_of_groups) / block_size(runda vid behov).

Informationen som lagras i gruppbeskrivningen används för att hitta block- och inodbitmapparna och inodtabellen. Kom ihåg att block och grupper av block är numrerade från 1.

En blockbitmapp är en struktur, vars varje bit indikerar om blocket som motsvarar den är tilldelat någon fil. Om biten är 1 är blocket upptaget. Denna karta används för att söka efter lediga block i de fall det är nödvändigt att allokera utrymme för en fil. Blockbitmappen upptar antalet block lika med (antal_block_i_grupp / 8) / block_size(runda vid behov).

Inodbitmappen utför en liknande funktion som inodtabellen: den visar vilka inoder som är upptagna.

Nästa område i blockgruppsstrukturen används för att lagra filens inodtabell. Själva inodens struktur diskuteras mer i detalj i nästa underavsnitt.

Tja, och slutligen allokeras allt återstående utrymme i gruppen av block för att lagra de faktiska filerna.

Filsystem Ext 2 kännetecknas av:

  • hierarkisk struktur,
  • samordnad bearbetning av datamatriser,
  • dynamisk filtillägg,
  • skydd av information i filer,
  • behandla kringutrustning (såsom terminaler och bandenheter) som filer.

Intern representation av filer

Varje fil i ett Ext 2-system har ett unikt index. Indexet innehåller den information som alla processer behöver för att komma åt filen. Behandlar åtkomstfiler med hjälp av en väldefinierad uppsättning systemanrop och identifierar filen med en teckensträng som fungerar som sökvägen till filen. Varje sammansatt namn identifierar unikt en fil, vilket gör att kärnan i systemet konverterar detta namn till ett filindex. Indexet innehåller en tabell med adresser där filinformationen finns på disken. Eftersom varje block på disken adresseras med sitt nummer, lagrar denna tabell en samling diskblocknummer. För att öka flexibiliteten lägger kärnan till ett block i taget till en fil, vilket gör att filens information kan spridas över hela filsystemet. Men en sådan layout komplicerar uppgiften att hitta data. Adresstabellen innehåller en lista med blocknummer som innehåller information som hör till en fil, men enkla beräkningar visar att en linjär lista med filblock i ett index är svår att hantera. För att den lilla indexstrukturen ska fungera med stora filer, är adresstabellen för diskblocket anpassad med strukturen som visas i figur 1

De flesta filer i ett Ext 2-system är mindre än 10 KB eller till och med 1 KB! Eftersom 10 KB av en fil finns i direkta adressblock, kan de flesta data som lagras i filer nås med en enda diskåtkomst. Till skillnad från att komma åt stora filer går det därför snabbt att arbeta med filer av standardstorlek.

Fil inoder

Varje fil på disken har en och endast en filinod, som identifieras av dess ordningsnummer, filens inod. Detta innebär att antalet filer som kan skapas i filsystemet begränsas av antalet inoder, som antingen ställs in uttryckligen när filsystemet skapas eller beräknas utifrån den fysiska storleken på diskpartitionen. Inoder finns i statisk form på disken, och kärnan läser in dem i minnet innan de arbetar med dem.

Filinoden har följande struktur:

Fält namn

Typ

Beskrivning

I_mode

USKORT

Typen och behörigheterna för denna fil.

I_uid

USKORT

Filägare-ID (ägare-Uid).

I_size

ULONG

Filstorlek i byte.

Jag_en gång

ULONG

Tidpunkten för den senaste åtkomsten till filen (Åtkomsttid).

I_ctime

ULONG

Tid för att skapa filer.

I_mtime

ULONG

Tiden då filen senast ändrades.

I_dtime

ULONG

Tid för borttagning av filer.

Jag_gid

USKORT

Grupp-ID (GID).

I_links_count

USKORT

Länkar räknas.

I_blocks

ULONG

Antalet block som upptas av filen.

Jag_flaggar

ULONG

Arkiv Flaggor (Arkivflaggor)

I_reserved1

ULONG

Reserverad för OS

I_block

ULONG

Pekare till block i vilka fildata skrivs (ett exempel på direkt och indirekt adressering i fig. 1)

I_version

ULONG

Filversion (för NFS)

I_file_acl

ULONG

Fil ACL

I_dir_acl

ULONG

katalog ACL

I_faddr

ULONG

Fragmentadress

I_frag

UCHAR

Fragmentnummer

I_fsize

UCHAR

Fragmentstorlek

I_pad1

USKORT

fyllning

I_reserved2

ULONG

reserverad

Filtyps- och behörighetsfältet är ett ord på två byte, vars varje bit fungerar som en flagga som indikerar om filen är relaterad till en viss typ eller inställningen av en viss behörighet för filen.

Identifierare

Menande

Syfte med flaggan (fält)

S_IFMT

F000

Filtypsmask

S_IFSOCK

A000

Domänsocket (socket)

S_IFLNK

C000

S_IFREG

8000

Normal (vanlig) fil

S_IFBLK

6000

Blockorienterad enhet

S_IFDIR

4000

Katalog

S_IFCHR

2000

Byte-orienterad (tecken) enhet

S_IFIFO

1000

Namngiven rör (fifo)

S_ISUID

0800

SUID - byt ägarbit

S_ISGID

0400

SGID - gruppbytesbit

S_ISVTX

0200

Uppgift klibbig bit

S_IRWXU

01C0

Mask för filägares rättigheter

S_IRUSR

0100

Rätt att läsa

S_IWUSR

0080

Skriv rätt

S_IXUSR

0040

Rätt att prestera

S_IRWXG

0038

Mask för grupprättigheter

S_IRGRP

0020

Rätt att läsa

S_IWGRP

0010

Skriv rätt

S_IXGRP

0008

Rätt att prestera

S_IRWXO

0007

Rättighetsmask för andra användare

S_IROTH

0004

Rätt att läsa

S_IWOTH

0002

Skriv rätt

S_IXOT

0001

Rätt att prestera

Bland inoderna finns flera inoder som är reserverade för speciella ändamål och spelar en speciell roll i filsystemet. Det här är följande beskrivningar

Identifierare

Menande

Beskrivning

EXT2_BAD_INO

En inod som listar adresserna till dåliga block på disken (Bad blocks inode)

EXT2_ROOT_INO

Inoden för filsystemets rotkatalog (rotinod)

EXT2_ACL_IDX_INO

ACL inod

EXT2_ACL_DATA_INO

ACL inod

EXT2_BOOT_LOADER_INO

Boot loader inode

EXT2_UNDEL_DIR_INO

Ångra radering av katalog inode

EXT2_FIRST_INO

Första oreserverade inoden

Det viktigaste handtaget på den här listan är handtaget till rotkatalogen. Denna beskrivning pekar på rotkatalogen, som, liksom alla kataloger, består av poster med följande struktur:

Fält namn

Typ

Beskrivning

inode

ULONG

inodnummer (index) för filen

rec_len

USKORT

Längden på denna post

namn_len

USKORT

Filnamnets längd

namn

RÖDING

Filnamn

En enskild katalogpost kan inte passera en blockgräns (det vill säga den måste vara helt och hållet inom ett enda block). Därför, om nästa post inte passar helt i detta block, överförs den till nästa block, och den föregående posten fortsätter så att den fyller blocket till slutet.

Figur 1 Block med direkt och indirekt adressering i indexet

Figur 2 Filstorlek i byte med en blockstorlek på 1 KB

Figur 3. Exempel på diskindex

Figur 3 visar skivinoden för en fil. Denna inod tillhör en vanlig fil vars ägare är "mjb" och vars storlek är 6030 byte. Systemet tillåter användaren "mjb" att läsa, skriva och köra filen; medlemmar i "os"-gruppen och alla andra användare får bara läsa eller köra filen, inte skriva data till den. Filen lästes senast den 23 oktober 1984 klockan 13:45, senast skriven den 22 oktober 1984 klockan 10:30. Indexet ändrades senast den 23 oktober 1984 klockan 13:30, även om ingen information skrevs till filen vid den tiden. Kärnan kodar alla ovanstående data i ett index. Notera skillnaden i att skriva innehållet i indexet och innehållet i filen till disk. Innehållet i filen ändras bara när filen skrivs till. Innehållet i indexet ändras både när innehållet i filen ändras, och när ägaren till filen, åtkomsträttigheter och uppsättningen pekare ändras. Att ändra innehållet i en fil orsakar automatiskt en indexkorrigering, men en indexkorrigering betyder inte en ändring av filens innehåll.

Kataloger

Kataloger är de filer som utgör den hierarkiska strukturen i filsystemet; de spelar en viktig roll för att förvandla ett filnamn till ett inodnummer. En katalog är en fil vars innehåll är en uppsättning poster som består av ett inodnummer och ett filnamn som ingår i katalogen. Ett sammansatt namn är en sträng av tecken som avslutas med ett tomt tecken och separeras med ett snedstreck ("/") i flera komponenter. Varje komponent, förutom den sista, måste vara namnet på en katalog, men den sista komponenten kan vara namnet på en fil som inte är en katalog. Version V av UNIX-systemet begränsar varje komponent till 14 tecken; sålunda, tillsammans med de 2 byte som tilldelats inodnumret, är storleken på katalogposten 16 byte.

Byte offset
i en katalog

Indexnummer
(2 byte)

namnfil

1798

i det

1276

fsck

clri

1268

motd

1799

montera

mknod

2114

passwd

1717

umount

1851

checklista

fsdbld

config

1432

getty

krascha

mkfs

Figur 4 /etc katalogformat

Figur 4 visar formatet för "etc"-katalogen. Varje katalog innehåller filer vars namn är en punkt och två punkter ("." och "..") och vars inodnummer matchar indexnumren för den givna katalogen respektive den överordnade katalogen. Indexnummer för filen "." i katalogen "/etc" har adress vid offset 0 och värde 83. Inodnumret för filen ".." har adress vid offset 16 från början av katalogen och värde 2. Poster i katalogen kan vara tomma, och inodnumret är 0. Till exempel är posten på adress 224 i "/etc"-katalogen tom, även om den en gång innehöll en ingångspunkt för en fil med namnet "crash". Mkfs-programmet initierar filsystemet så att inodnumren för "." och ".." i rotkatalogen matchar filsystemets rotinodnummer.

Kärnan lagrar data i en katalog precis som den gör i en vanlig filtyp, med hjälp av en indexstruktur och block med direkta och indirekta adressnivåer. Processer kan läsa data från kataloger på samma sätt som de läser vanliga filer, men exklusiv skrivåtkomst till katalogen reserveras av kärnan för att säkerställa att katalogstrukturen är korrekt. Katalogbehörigheter har följande betydelser: läsbehörighet ger processer möjlighet att läsa data från katalogen; skrivbehörighet tillåter en process att skapa nya poster i en katalog eller ta bort gamla (med hjälp av systemoperationerna skapa, mknod, länka och ta bort länkar), vilket ändrar innehållet i katalogen; exekveringsrätten tillåter en process att söka i en katalog med filnamn (eftersom det är meningslöst att "köra" en katalog).

När en process använder en filsökväg, söker kärnan i katalogerna efter motsvarande inodnummer. Efter att filnamnet har konverterats till ett inodnummer, placeras den inoden i minnet och används sedan i efterföljande förfrågningar.

Konceptet med Unix-filsystem inkluderar konceptet med en länk. En inod kan associeras med flera filnamn. Deskriptorn innehåller ett fält som innehåller numret som filen är associerad med. Att lägga till en länk består av att skapa en katalogpost där inodnumret pekar på en annan inod, och att öka länkräknaren i deskriptorn. När en referens tas bort, minskar kärnan referensräknaren och tar bort handtaget om den räknaren blir noll.

Sådana länkar kallas hårda länkar och kan endast användas inom ett filsystem (du kan inte skapa en länk för en fil från ett annat filsystem). Dessutom kan en hård länk bara peka på en fil (en hård länk till en katalog kan leda till en loop i filsystemet).

På de flesta Unix-system finns det en annan typ av länk. Dessa länkar, som bara innehåller filnamnet, kallas symboliska länkar. När kärnan bearbetar sådana länkar, medan filsökvägen konverteras till en inod, ersätter kärnan namnet på länken med innehållet i deskriptorn (dvs. namnet på målfilen) och omtolkar filsökvägen. Eftersom en symbolisk länk inte pekar på en inod är det möjligt att skapa länkar till filer som finns på ett annat filsystem. Dessa länkar kan peka på vilken typ av fil som helst, även om den inte finns. Symboliska länkar används ofta eftersom de inte har samma begränsningar som hårda länkar. De tar dock upp lite utrymme på disken, där inoden och datablocken finns. Deras användning kan leda till vissa förseningar vid konvertering av filsökvägen till en inod, vilket beror på att kärnan måste omtolka filsökvägen vid bearbetning av en symbolisk länk.

Enhetsfiler

På Unix-liknande operativsystem nås enheter via speciella filer. En sådan fil tar inte upp plats i filsystemet. Det är bara en åtkomstpunkt till enhetsdrivrutinen.

Det finns två typer av enhetsfiler: tecken och block. När du använder teckentypen är det möjligt att utbyta data med enheten endast i teckenläge, medan enhetsfiler av blocktyp endast tillåter att block utbyts med en buffert. När en I/O-begäran görs till en enhetsfil omdirigeras begäran till lämplig enhetsdrivrutin. Varje sådan fil har ett huvudnummer som identifierar enhetstypen och ett mindre nummer som identifierar själva enheten.

Ytterligare funktioner i EXT2fs

Utöver de vanliga Unix-funktionerna, tillhandahåller EXT2fs några ytterligare funktioner som normalt inte stöds av Unix-filsystem.

Filattribut låter dig ändra hur kärnan reagerar när du arbetar med uppsättningar av filer. Du kan ställa in attribut på en fil eller katalog. I det andra fallet kommer filer som skapats i den här katalogen att ärva dessa attribut.

Under systemmontering kan vissa filattribut relaterade funktioner ställas in. Monteringsalternativet låter administratören välja hur filer skapas. På ett BSD-specifikt filsystem skapas filer med samma grupp-ID som den överordnade katalogen. Funktionerna i System V är något mer komplexa. Om katalogens setgid-bit är inställd, då genererade filerärver grupp-ID:t för den katalogen, och underkataloger ärver grupp-ID:t och setgid-biten. Annars skapas filer och kataloger med anropsprocessens primära grupp-ID.

EXT2fs-systemet kan använda synkron datamodifiering som t.ex BSD-system. Monteringsalternativet tillåter administratören att specificera att all data (indexbeskrivningar, bitblock, indirekta block och katalogblock) skrivs till disken synkront när de ändras. Detta kan användas för att uppnå hög skrivkapacitet, men resulterar också i dålig prestanda. Faktum är att den här funktionen vanligtvis inte används, eftersom den förutom att försämra prestandan kan leda till förlust av användardata som inte markeras vid kontroll av filsystemet.

EXT2fs låter dig välja storleken på det logiska blocket när du skapar ett filsystem. Den kan vara 1024, 2048 eller 4096 byte stor. Användningen av stora block leder till snabbare I/O-operationer (eftersom antalet förfrågningar till disken minskar), och följaktligen till mindre rörelse av huvuden. Å andra sidan leder användningen av stora block till förlust av diskutrymme. Vanligtvis används inte det sista blocket i en fil fullt ut för att lagra information, så med en ökning av storleken på blocket ökar mängden slösat diskutrymme.

EXT2fs låter dig använda accelererade symboliska länkar. När sådana länkar används används inte filsystemsdatablock. Namnet på destinationsfilen lagras inte i datablocket, utan i själva inoden. Denna struktur låter dig spara diskutrymme och påskynda behandlingen av symboliska länkar. Naturligtvis är utrymmet som reserverats för handtaget begränsat, så varje länk kan inte representeras som en accelererad länk. Den maximala längden på ett filnamn i en accelererad länk är 60 tecken. Inom en snar framtid är det planerat att utöka detta system för små filer.

EXT2fs övervakar filsystemets tillstånd. Kärnan använder ett separat fält i superblocket för att indikera filsystemets tillstånd. Om filsystemet är monterat i läs/skrivläge är dess tillstånd inställt på "Inte rent". Om den är avmonterad eller ommonterad i skrivskyddat läge, är dess tillstånd satt till "Ren". Under systemstart och hälsokontroller av filsystemet används denna information för att avgöra om en filsystemkontroll behövs. Kärnan placerar också några fel i detta fält. När kärnan upptäcker en inkonsekvens markeras filsystemet "Felaktigt". Filsystemkontrollen testar denna information för att kontrollera systemet, även om dess tillstånd faktiskt är "Rent".

Att ignorera testning av filsystem under lång tid kan ibland leda till vissa svårigheter, så EXT2fs inkluderar två metoder för att regelbundet kontrollera systemet. Superblocket innehåller en systemmonteringsräknare. Denna räknare ökas varje gång systemet monteras i läs/skrivläge. Om dess värde når det maximala värdet (det lagras också i superblocket), så kör filsystemets testrutin en filsystemkontroll, även om dess tillstånd är "Ren". Den sista kontrolltiden och det maximala intervallet mellan kontrollerna lagras också i superblocket. När det maximala intervallet mellan kontroller uppnås ignoreras filsystemets tillstånd och dess kontroll startas.

EXT2fs-systemet innehåller möjligheter för att ställa in det. Programmet tune2fs kan användas för att ändra:

  • åtgärder vid upptäckt av ett fel. Om kärnan upptäcker en missmatchning markeras filsystemet som "Felaktigt" och en av de tre följande åtgärderna kan utföras: fortsätt körningen, montera om filsystemet i skrivskyddat läge för att undvika skada på det, starta om systemet för att kontrollera filsystemet.
  • maximalt monteringsvärde.
  • maximalt intervall mellan kontrollerna.
  • antalet logiska block reserverade för rotanvändaren.

Monteringsalternativ kan också användas för att ändra hur kärnan upptäcker ett fel.

Användningen av attribut tillåter användare att ta bort hemliga filer. När en sådan fil raderas skrivs slumpmässig information till de block som tidigare användes för att placera denna fil. Detta förhindrar utomstående från att få tillgång till det tidigare innehållet i denna fil med hjälp av en diskredigerare.

Nya filtyper har nyligen lagts till i EXT2fs, hämtade från 4.4 BSD-filsystemet. Filer av den första typen kan vara skrivskyddade: ingen har rätt att ändra eller ta bort dem. Detta kan användas för att skydda viktiga konfigurationsfiler. En annan typ av filer är filer som kan öppnas i skrivläge, och data kan bara läggas till i slutet av denna fil. Filer av denna typ kan inte heller tas bort eller byta namn. De kan användas som loggfiler, som bara kan växa i storlek.

Prestandaoptimering

EXT2fs-systemet innehåller många funktioner som optimerar dess prestanda, vilket leder till en ökning av hastigheten på informationsutbytet vid läsning och skrivning av filer.

EXT2fs använder hårddiskbuffert. När ett block behöver läsas skickar kärnan en I/O-begäran till flera angränsande block. Sålunda försöker kärnan se till att nästa block som ska läsas redan har laddats in i diskbufferten. Sådana operationer utförs vanligtvis vid sekventiell läsning av filer.

EXT2fs-systemet innehåller också ett stort antal informationslayoutoptimeringar. Blockgrupper används för att gruppera motsvarande inoder och datablock. Kärnan försöker alltid placera datablocken för en fil i samma grupp, såväl som dess deskriptor. Detta är avsett att minska drivhuvudens rörelse vid läsning av deskriptorn och dess motsvarande datablock.

När du skriver data till en fil, förallokerar EXT2fs upp till 8 sammanhängande block när ett nytt block placeras. Denna metod låter dig uppnå hög prestanda med en hög systembelastning. Det tillåter också att sammanhängande block för filer allokeras, vilket påskyndar deras efterföljande läsning.

EXT2fs bibliotek

För att förenkla användningen av EXT2fs-resurser och styra styrstrukturerna för detta filsystem utvecklades libext2fs-biblioteket. Det här biblioteket innehåller funktioner som kan användas för att definiera och ändra EXT2-filsystemdata genom att direkt komma åt den fysiska enheten.

De flesta EXT2fs-verktyg (mke2fs, e2fsck, tune2fs, dumpe2fs, debugfs, etc.) använder detta bibliotek. Detta förenklar modifieringen av dessa verktyg avsevärt, eftersom alla ändringar för att introducera ytterligare funktioner till EXT2fs-filsystemet endast bör göras i EXT2fs-biblioteket.

Eftersom gränssnittet för EXT2fs-biblioteket är ganska brett och abstrakt, kan det användas för att enkelt skriva program som kräver direkt åtkomst till filsystemet. Till exempel användes EXT2fs-biblioteket under 4.4 BSD-dumpningen och återställningen av vissa verktyg. Mycket få ändringar krävdes för att anpassa dessa verktyg till Linux (vi var tvungna att ersätta flera funktioner som interagerar med filsystemet med anrop till EXT2fs-biblioteket).

EXT2fs-biblioteket ger åtkomst till funktionerna för flera klasser. Den första klassen är operationer relaterade till filsystemet. Alla program kan öppna eller stänga ett filsystem, läsa eller skriva ett block av bitar, skapa ett nytt filsystem på en disk. Det finns också funktioner för att manipulera listan över dåliga block i filsystemet.

Den andra klassen av operationer handlar om kataloger. Ett program som använder EXT2fs-biblioteket kan skapa eller utöka en katalog, samt lägga till eller ta bort katalogposter. Det finns funktioner för att både bestämma genom inoden för filsökvägen och bestämma sökvägen till filen med den angivna deskriptorn.

Den sista klassen av operationer verkar på indexdeskriptorer. Det är möjligt att läsa deskriptortabellen, läsa eller skriva deskriptorn, se alla block av den angivna deskriptorn. Det är möjligt att använda allokerings- och frigöringsfunktionerna för block och deskriptorer.

EXT2fs systemverktyg

Kraftfulla kontroller har utvecklats för EXT2fs-systemet. Dessa verktyg används för att skapa, modifiera och korrigera eventuella inkonsekvenser i EXT2fs filsystem. Programmet mke2fs används för att montera en diskpartition som innehåller ett tomt EXT2fs-filsystem.

Programmet tune2fs kan användas för att justera filsystemsparametrar.Det kan användas för att ändra svaret på fel, det maximala antalet systemmonteringar, det maximala intervallet mellan systemkontroller och antalet logiska block reserverade för rotanvändaren.

Det kanske mest intressanta verktyget är filsystemkontrollen. E2fsck är utformad för att fixa inkonsekvenser i filsystemet efter en felaktig avstängning av hela systemet. Den ursprungliga versionen av programmet e2fsck är baserad på programmet Linus Torvald fsck för filsystemet Minix. Den nuvarande versionen av programmet skrivs dock om med hjälp av EXT2fs-biblioteket och är snabbare och kan fixa fler fel i systemet när det kontrolleras, jämfört med originalversionen.

e2fsck-programmet har designats för att köras så snabbt som möjligt. Eftersom kontrollprogrammen för filsystem leder till att skivan laddas, bör e2fsck-algoritmerna optimeras på ett sådant sätt att filsystemstrukturer nås mycket mindre ofta. Dessutom skulle ordningen för kontroll av inoder och kataloger utföras efter blocknummer för att minska tiden för att flytta huvuden på diskenheten.

I det första passet kör e2fsck igenom alla inoder i filsystemet och kontrollerar varje inod som ett separat element i systemet. Detta test kontrollerar alltså inte andra objekt i filsystemet. Ett av syftena med sådana kontroller är att kontrollera förekomsten av typen av fil som kontrolleras, samt att alla block i deskriptorn överensstämmer med block med befintliga nummer. I det första passet kontrolleras bitmappar som indikerar användningen av block och deskriptorer.

Om e2fsck hittar datablock vars nummer finns i mer än en deskriptor, körs körningarna 1B till 1D för att lösa missmatchningen, antingen genom att öka de delade blocken eller genom att ta bort en eller flera deskriptorer.

Det första passet tar mest tid, eftersom alla inoder måste läsas in i minnet och kontrolleras. För att minska tiden för I/O-operationer i efterföljande omgångar finns all nödvändig information kvar i bufferten. En karakteristisk egenskap hos detta schema är sökningen efter alla block av kataloger i filsystemet. För att erhålla denna information, i det andra passet, läses deskriptorstrukturerna för alla kataloger i filsystemet på nytt.

I det andra passet kontrolleras katalogerna som separata element i filsystemet. Varje katalogblock kontrolleras separat, utan hänvisning till andra katalogblock. Detta gör att e2fsck kan sortera alla katalogblock efter blocknummer och kontrollera dem i stigande ordning, vilket minskar diskåtkomsttiden. Katalogblock testas för att verifiera att deras poster är giltiga och att de innehåller referenser till deskriptorer med befintliga nummer (som fastställts i första passet).

För det första katalogblocket i varje katalogbeskrivning kontrolleras förekomsten av "."-poster. och "..", och att deskriptornumret för posten "." matchar den aktuella katalogen. (Deskriptornumret för posten ".." testas inte förrän vid tredje passet.)

Under det andra passet lagras informationen som motsvarar den överordnade katalogen i bufferten.

Det bör noteras att i slutet av det andra passet är nästan alla disk I/O-operationer slutförda. All information som krävs för det tredje, fjärde och femte passet sparas i minnet, men de återstående omgångarna är CPU-intensiva och tar mindre än 5-10% av den totala exekveringen av e2fsck.

I det tredje passet kontrolleras kataloglänkar. E2fsck kontrollerar sökvägarna för varje katalog mot roten med hjälp av informationen som erhölls under det andra passet. Den kontrollerar också posten ".." för varje katalog. Alla kataloger som identifierats efter kontrollen och som inte är relaterade till roten placeras i katalogen /lost+found.

I det fjärde passet kontrollerar e2fsck länkräknarna för varje inod genom att titta på alla inoder och jämföra länkräknarna (denna information hålls från det första passet) med de interna räknarna som beräknats under det andra och tredje passet. Alla icke-raderade filer med referenstalet noll placeras också i katalogen /lost+found.

Och slutligen, i det femte passet, kontrollerar e2fsck att all information om filsystemet matchar. Här jämförs block- och deskriptorbitmapparna som erhölls i tidigare pass med de faktiska värdena och, om nödvändigt, korrigeras informationen på disken därefter.

Ett annat användbart verktyg är filsystemfelsökningen. Debugfs är ett kraftfullt program som låter dig bestämma och ställa in tillståndet för ett filsystem. I huvudsak är det ett interaktivt gränssnitt till EXT2fs-biblioteket, det vill säga det översätter inskrivna kommandon till biblioteksfunktionsanrop.

Debugfs kan användas för att fastställa den interna strukturen för ett filsystem, manuellt reparera ett skadat system eller skapa villkorliga tester för e2fsck. Tyvärr kan det här programmet skada filsystemet om du inte vet hur man använder det. Med det här verktyget räcker det att helt enkelt förstöra filsystemet. Därför öppnar debugfs filsystemet i skrivskyddat läge som standard. För läs-/skrivåtkomst måste alternativet -w anges.

Prestandaberäkning

Resultaten av Bonnie-testet framgår av följande tabell:

Teckenskrivning (Kb/s)

Blockskrivning (Kb/s)

Skriv över (Kb/s)

Teckenläst (Kb/s)

Blockläsning (Kb/s)

BSD Async

BSD Sync

ext2 fs

1237

1033

Xia fs

Resultaten är ganska bra för block I/O: EXT2fs-systemet överträffar andra system. Detta beror på de optimeringar som ingår i tilldelningsprocedurerna. Inspelningen är också ganska snabb, på grund av att den utförs i gruppläge. Den höga läshastigheten beror på att blocken har allokerats till filen, så att enhetshuvudena inte rör sig mellan två läsningar och förläsoptimeringen är fullt fungerande.

Å andra sidan fungerar FreeBSD-systemet bättre med tecken-I/O. Kanske beror detta på att FreeBSD och Linux använder olika procedurer i sina respektive C-bibliotek. Dessutom kommer FreeBSD sannolikt att ha ett mer optimerat teckenläsningsbibliotek, och därför är prestandan något bättre här.

Andrew testresultat

Resultaten av Andrews test är synliga från följande tabell:

Godkänd 1 Creation

Godkänd 2 kopia

Godkänd 3 Statuskontroll

Passera 4 byte-kontrollen

Pass 5 Compilation

2203

7391

6319

17466

75314

BSD Sync

2330

7732

6317

17499

75681

ext2 fs

Resultaten av de två första passen visar att Linux vinner med asynkron kommunikation. När kataloger och filer skapas, skriver BSD-systemet katalogbeskrivningar och katalogposter synkront. Det finns spekulationer om att asynkront stöd för FreeBSD ännu inte är fullt implementerat.

I det tredje passet är värdena för Linux och BSD väldigt lika. Även om BSD-prestanda är bättre, eliminerar detta problem att lägga till en buffert för filnamn till VFS för ett Linux-system.

I det fjärde och femte passet är Linux snabbare än FreeBSD, främst på grund av användningen av delad bufferthantering. Buffertstorleken kan växa efter behov och ta upp mer minne än FreeBSD, som använder en fast mängd. Jämförelse av resultaten för EXT2fs och Xia fs-systemen visar att optimeringen som ingår i EXT2fs verkligen används: skillnaden i prestanda för dessa system är cirka 5-10%.

Slutsats

EXT2-filsystemet är det mest använda i Linux-användarkretsar. Den tillhandahåller standard Unix-funktioner och ytterligare funktioner. Dessutom, tack vare optimeringen som ingår i kärnan, visar den utmärkta prestandaresultat.

EXT2fs-systemet innehåller funktioner som låter dig lägga till nya funktioner. Vissa människor arbetar med att utveckla tillägg för det riktiga filsystemet: Posix åtkomstkontrolllista, återställning raderade filer och filkomprimering i realtid.

Först integrerades EXT2fs-systemet i Linux-kärnan, och nu porteras det aktivt till andra operativsystem. EXT2fs är också en viktig komponent i operativsystemet Masix, som för närvarande utvecklas av en av författarna.


Topp