ext4

Groot bestandssysteem Het ext4-bestandssysteem kan volumes ondersteunen met een grootte tot 1 exbibyte (EiB) en afzonderlijke bestanden met een grootte tot 16 tebibytes (TiB) met de standaard blokgrootte van 4 KiB. De maximale limieten voor de grootte van bestanden, mappen en bestandssystemen groeien minstens proportioneel met de blokgrootte van het bestandssysteem tot de maximale blokgrootte van 64 KiB die beschikbaar is op ARM- en PowerPC/Power ISA-CPU’s. Extents Extents vervangen het traditionele blok mapping schema gebruikt door ext2 en ext3. Een extent is een bereik van aaneengesloten fysieke blokken, waardoor de prestaties van grote bestanden worden verbeterd en fragmentatie wordt verminderd. Een enkele extent in ext4 kan tot 128 MB aan aaneengesloten ruimte in kaart brengen met een blokgrootte van 4 KiB. Er kunnen vier extents direct in de inode worden opgeslagen. Wanneer een bestand meer dan vier extents bevat, worden de overige extents geïndexeerd in een boomstructuur. Achterwaartse compatibiliteit ext4 is achterwaarts compatibel met ext3 en ext2, waardoor het mogelijk is om ext3 en ext2 als ext4 te mounten. Dit zal de prestaties lichtjes verbeteren, omdat bepaalde nieuwe eigenschappen van de ext4-implementatie ook gebruikt kunnen worden met ext3 en ext2, zoals het nieuwe algoritme voor de toewijzing van blokken, zonder het formaat op de schijf te beïnvloeden. ext3 is gedeeltelijk voorwaarts compatibel met ext4. In de praktijk zal ext4 niet out of the box mounten als een ext3-bestandssysteem, tenzij bepaalde nieuwe functies zijn uitgeschakeld bij het maken ervan, zoals ^extent, ^flex_bg, ^huge_file, ^uninit_bg, ^dir_nlink, en ^extra_isize. Persistente voor-toewijzing ext4 kan ruimte op de schijf voor een bestand voor-toewijzen. Om dit op de meeste bestandssystemen te doen, worden er nullen naar het bestand geschreven wanneer het wordt aangemaakt. In ext4 (en sommige andere bestandssystemen zoals XFS) kan fallocate(), een nieuwe systeemaanroep in de Linux kernel, worden gebruikt. De toegewezen ruimte zou gegarandeerd zijn en waarschijnlijk aaneengesloten. Deze situatie heeft toepassingen voor mediastreaming en databases. Vertraagde toewijzing ext4 gebruikt een prestatie techniek genaamd allocate-on-flush, ook bekend als vertraagde toewijzing. Dat wil zeggen dat ext4 bloktoewijzing uitstelt totdat gegevens naar schijf worden gespoeld. (In tegenstelling hiermee wijzen sommige bestandssystemen blokken onmiddellijk toe, zelfs wanneer de gegevens in een schrijfcache gaan). Uitgestelde toewijzing verbetert de prestaties en vermindert fragmentatie door effectief grotere hoeveelheden gegevens per keer toe te wijzen. Onbeperkt aantal submappen ext4 stelt geen limiet aan het aantal submappen in een enkele map, behalve door de inherente limiet aan de grootte van de map zelf. (In ext3 kan een map maximaal 32.000 submappen hebben.) Om grotere mappen mogelijk te maken en de prestaties op peil te houden, schakelt ext4 in Linux 2.6.23 en later standaard HTree-indices in (een gespecialiseerde versie van een B-tree), waardoor mappen tot ongeveer 10-12 miljoen items kunnen worden opgeslagen in de HTree-index met 2 niveaus en een limiet van 2 GB aan mapgrootte voor een blokgrootte van 4 KiB, afhankelijk van de lengte van de bestandsnaam. In Linux 4.12 en later maakt de largedir functie een 3-level HTree mogelijk en mapgroottes van meer dan 2 GB, waardoor ongeveer 6 miljard ingangen in een enkele map mogelijk zijn. Journaalcontrolesommen ext4 gebruikt controlesommen in het journaal om de betrouwbaarheid te verbeteren, omdat het journaal een van de meest gebruikte bestanden van de schijf is. Deze functie heeft een nevenvoordeel: het kan veilig een schijf I/O wachttijd vermijden tijdens journaling, wat de prestaties iets verbetert. Journal checksumming is geïnspireerd op een onderzoeksartikel van de Universiteit van Wisconsin, getiteld IRON File Systems (specifiek, sectie 6, genaamd “transaction checksums”), met modificaties binnen de implementatie van samengestelde transacties uitgevoerd door het IRON bestandssysteem (oorspronkelijk voorgesteld door Sam Naghshineh in de RedHat top). Metadata checksumming Sinds Linux kernel 3.5 uitgebracht in 2012 Snellere bestandssysteemcontrole In ext4 worden niet-toegewezen blokgroepen en secties van de inode-tabel als zodanig gemarkeerd. Hierdoor kan e2fsck ze volledig overslaan en de tijd die nodig is om het bestandssysteem te controleren aanzienlijk verkorten. Linux 2.6.24 implementeert deze mogelijkheid.

fsck-tijdsafhankelijkheid van het aantal inodes (ext3 vs. ext4)

Multiblock-allocator Wanneer ext3 een bestand appende, roept het de block-allocator aan, eenmaal voor elk blok. Als er dus meerdere gelijktijdige schrijvers zijn, kunnen bestanden gemakkelijk gefragmenteerd raken op schijf. Ext4 gebruikt echter vertraagde toewijzing, waardoor het gegevens kan bufferen en groepen blokken kan toewijzen. Als gevolg daarvan kan de toewijzer van meerdere blokken betere keuzes maken over het toewijzen van aaneengesloten bestanden op schijf. De multiblok-allocator kan ook worden gebruikt wanneer bestanden worden geopend in O_DIRECT modus. Deze functie heeft geen invloed op het schijfformaat. Verbeterde timestamps Naarmate computers in het algemeen sneller worden, en naarmate Linux meer gebruikt wordt voor mission-critical applicaties, wordt de granulariteit van seconde-gebaseerde timestamps ontoereikend. Om dit op te lossen, biedt ext4 tijdstempels die worden gemeten in nanoseconden. Bovendien worden 2 bits van het uitgebreide timestamp-veld toegevoegd aan de meest significante bits van het seconden-veld van de timestamps om het jaar 2038-probleem met 408 jaar uit te stellen. ext4 voegt ook ondersteuning toe voor time-of-creation timestamps. Maar, zoals Theodore Ts’o aangeeft, terwijl het gemakkelijk is om een extra aanmaakdatum-veld in de inode toe te voegen (en zo technisch gezien ondersteuning voor deze tijdstempels in ext4 mogelijk te maken), is het moeilijker om de noodzakelijke systeemaanroepen te wijzigen of toe te voegen, zoals stat() (waarvoor waarschijnlijk een nieuwe versie nodig zou zijn) en de verschillende bibliotheken die ervan afhankelijk zijn (zoals glibc). Deze veranderingen vereisen coördinatie van vele projecten. Daarom is de door ext4 opgeslagen aanmaakdatum momenteel alleen beschikbaar voor gebruikersprogramma’s op Linux via destatx()API. Projectquota Ondersteuning voor projectquota is toegevoegd in Linux kernel 4.4 op 8 jan 2016. Deze functie maakt het mogelijk om schijfquotalimieten toe te wijzen aan een bepaalde project-ID. De project-ID van een bestand is een 32-bits nummer dat op elk bestand is opgeslagen en wordt geërfd door alle bestanden en submappen die zijn gemaakt onder een bovenliggende map met een toegewezen project-ID. Dit maakt het mogelijk om quota limieten toe te wijzen aan een bepaalde subdirectory boom onafhankelijk van bestandstoegangspermissies op het bestand, zoals gebruiker en project quota die afhankelijk zijn van de UID en GID. Hoewel dit lijkt op een mapquotum, is het belangrijkste verschil dat dezelfde project-ID kan worden toegewezen aan meerdere mappen op het hoogste niveau en niet strikt hiërarchisch is. Transparante encryptie Ondersteuning voor transparante encryptie werd toegevoegd in Linux kernel 4.1 op juni 2015. Luie initialisatie De lazyinit-functie maakt het mogelijk om inode-tabellen op de achtergrond op te schonen, waardoor de initialisatie bij het aanmaken van een nieuw ext4-bestandssysteem sneller verloopt. Het is beschikbaar sinds 2010 in Linux kernel versie 2.6.37. Schrijfbarrières ext4 schakelt standaard schrijfbarrières in. Het zorgt ervoor dat de metadata van het bestandssysteem correct op schijf wordt geschreven en geordend, zelfs wanneer de schrijfcaches aan kracht verliezen. Dit gaat ten koste van de prestaties, vooral voor toepassingen die fsync veel gebruiken of veel kleine bestanden maken en verwijderen. Voor schijven met een schrijfcache op batterijen kan het uitschakelen van barrieres (optie ‘barrier=0’) de prestaties veilig verbeteren.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.