Spring til indhold

Ext4

Fra Wikipedia, den frie encyklopædi
Maskinoversættelse og/eller tvivlsomt indhold
Denne sides indhold bærer præg af at være en maskinoversættelse og/eller meget dårligt og uklart formuleret. Det vurderes at sproget er så dårligt og eventuelt forkert eller til at misforstå, at det bør omskrives eller oversættes på ny. Du kan hjælpe med at oversætte til korrekt dansk i denne og lignende artikler.
Hvis dette ikke sker inden for kort tid, kan en sletning komme på tale.
Se evt. denne sides diskussionsside eller i artikelhistorikken.

ext4 (fourth extended filesystem - dansk fjerde udvidede filsystem) er et Linux-filsystem. Et filsystem er en datastruktur som anvendes på et baggrundslager.

ext4 har journalisering og er efterfølgeren til ext3. ext4 var oprindeligt en serie bagudkompatible udvidelser til ext3, mange af dem oprindeligt udviklet af Cluster File Systems til Luster-filsystemet mellem 2003 og 2006, beregnet til at udvide lagergrænser og tilføje andre ydeevneforbedringer.[1] Andre Linux-kerneudviklere modsatte sig dog at acceptere udvidelser til ext3 af stabilitetsmæssige årsager[2] og foreslog at forkaste kildekoden til ext3, omdøbe den til ext4 og udføre al udviklingen der, uden at påvirke eksisterende ext3-brugere. Dette forslag blev accepteret, og den 28. juni 2006 annoncerede Theodore Ts'o, ext3-vedligeholderen, den nye udviklingsplan for ext4.[3]

En foreløbig udviklingsversion af ext4 blev inkluderet i version 2.6.19[4] af Linux-kernen. Den 11. oktober 2008 blev de patches, der markerer ext4 som stabil kode, slået sammen i Linux 2.6.28 kildekodelagrene,[5], hvilket angiver slutningen af udviklingsfasen og anbefalede ext4-adoption. Kernel 2.6.28, der indeholder ext4-filsystemet, blev endelig udgivet den 25. december 2008.[6] Den 15. januar 2010 annoncerede Google, at det ville opgradere sin lagerinfrastruktur fra ext2 til ext4.[7] Den 14. december 2010 annoncerede Google også, at de ville bruge ext4 i stedet for YAFFSAndroid 2.3.[8]

ext4 er standardfilsystemet for mange Linux-distributioner, inklusive Debian og Ubuntu.[9]

Stort filsystem
ext4-filsystemet kan understøtte logiske drev med størrelser i teorien op til 64 zebibyte (ZiB) og enkeltfiler med størrelser op til 16 tebibyte (TiB) med standard 4 KiB blokstørrelse, og logiske drev med størrelser op til 1 yobibyte (YiB) med 64 KiB-klynger, selvom en begrænsning i omfangsformatet gør 1 exbibyte (EiB) til den praktiske grænse.[10] De maksimale fil-, mappe- og filsystemstørrelsesgrænser vokser i det mindste proportionalt med filsystemets blokstørrelse op til den maksimale blokstørrelse på 64 KiB, der er tilgængelig på ARM og PowerPC/Power ISA CPU'er.
Extents
Extents erstatter det traditionelle blokkortlægningsskema, der bruges af ext2 og ext3. Et omfang er en række sammenhængende fysiske blokke, der forbedrer ydeevnen for store filer og reducerer fragmentering. En enkelt extent i ext4 kan kortlægge op til 128 MiB sammenhængende rum med en blokstørrelse på 4 KiB.[1] Der kan være fire extents gemt direkte i inoden. Når der er mere end fire extents til en fil, indekseres resten af extents i et træ.[11]
Bagudkompatibilitet
ext4 er bagudkompatibel med ext3 og ext2, hvilket gør det muligt at mounte ext3 og ext2 som ext4. Dette vil forbedre ydeevnen en smule, fordi visse nye funktioner i ext4-implementeringen også kan bruges med ext3 og ext2, såsom den nye blokallokeringsalgoritme, uden at det påvirker formatet på disken.
ext3 er delvist fremadkompatibel med ext4. Praktisk talt vil ext4 ikke mountes som et ext3-filsystem, medmindre visse nye funktioner deaktiveres, når det oprettes, såsom ^extent, ^flex_bg, ^huge_file, ^uninit_bg, ^dir_nlink, and ^extra_isize.[12]
Persistent pre-allocation
ext4 kan forhåndstildele plads på disken til en fil. For at gøre dette på de fleste filsystemer, vil der blive skrevet nuller til filen, når den oprettes. I ext4 (og nogle andre filsystemer såsom XFS) kan fallocate(), et nyt systemkald i Linux-kernen, bruges. Den tildelte plads vil være garanteret og sandsynligvis sammenhængende. Denne funktion har applikationer til mediestreaming og databaser.
Forsinket allokering
ext4 bruger en teknik kaldet allocate-on-flush, også kendt som forsinket allokering. Det vil sige, ext4 forsinker blokallokering, indtil data sendes til disken; i modsætning hertil tildeler nogle filsystemer blokke med det samme, selv når dataene går ind i en writecache. Forsinket allokering forbedrer ydeevnen og reducerer fragmentering ved effektivt at allokere større mængder data ad gangen.
Ubegrænset antal undermapper
ext4 begrænser ikke antallet af undermapper i en enkelt mappe, undtagen af den iboende størrelsesgrænse for selve mappen. (I ext3 kan en mappe højst have 32.000 undermapper.)[13] For at give mulighed for større mapper og fortsat ydeevne, aktiverer ext4 i Linux 2.6.23 og senere HTree-indekser (en specialiseret version af et B-træ) ) som standard, hvilket tillader mapper op til ca. 10-12 millioner indgange at blive gemt i HTree-indekset på 2 niveauer - og 2 GB biblioteksstørrelsesgrænse for 4 KiB blokstørrelse, afhængigt af filnavnets længde. I Linux 4.12 og senere aktiverede large_dir-funktionen et 3-niveau HTree og mappestørrelser på over 2 GB, hvilket tillod cirka 6 milliarder indgange i en enkelt mappe.
Journal kontrolsummer
ext4 bruger kontrolsummer[14] i journalen for at forbedre pålideligheden, da journalen er en af de mest brugte filer på disken. Denne funktion har en sidefordel: den kan sikkert undgå en disk I/O-ventetid under journalføring, hvilket forbedrer ydeevnen en smule. Journal kontrolsummer var inspireret af en forskningsartikel fra University of Wisconsin, med titlen IRON File Systems,[15] med ændringer i implementeringen af sammensatte transaktioner udført af IRON-filsystemet (oprindeligt foreslået af Sam Naghshineh på RedHat-topmødet).
Metadata kontrolsummer
Siden Linux-kerne 3.5 blev udgivet i 2012.[16][17]
Hurtigere filsystemkontrol
I ext4 er ikke-allokerede blokgrupper og sektioner af inode-tabellen markeret som sådan. Dette gør det muligt for e2fsck at springe dem helt over og reducerer i høj grad den tid, det tager at kontrollere filsystemet. Linux 2.6.24 implementerer denne funktion.
fsck-tidsafhængighed af inodeantal (ext3 vs. ext4).
Multiblok tildeler
Når ext3 føjes til en fil, kalder den blokallokatoren én gang for hver blok. Derfor, hvis der er flere samtidige writers, kan filer nemt blive fragmenteret på disken. Ext4 bruger dog forsinket allokering, som gør det muligt at cache data og allokere grupper af blokke. Følgelig kan multiblokallokatoren træffe bedre valg om tildeling af filer sammenhængende på disken. Multiblokallokatoren kan også bruges, når filer åbnes i O_DIRECT-tilstand. Denne funktion påvirker ikke diskformatet.
Forbedrede tidsstempler
Efterhånden som computere generelt bliver hurtigere, og efterhånden som Linux bliver brugt mere til missionskritiske applikationer, bliver granulariteten af sekund-baserede tidsstempler utilstrækkelig. For at løse dette giver ext4 tidsstempler målt i nanosekunder. Derudover føjes 2 bits af det udvidede tidsstempelfelt til de mest signifikante bits af tidsstemplets sekundfelt for at udskyde år 2038-problemet i yderligere 408 år.[18]
ext4 tilføjer også understøttelse af oprettelsestidsstempler. Men, som Theodore Ts'o påpeger, mens det er nemt at tilføje et ekstra oprettelsesdato-felt i inoden (derved teknisk muliggør understøttelse af disse tidsstempler i ext4), er det sværere at ændre eller tilføje de nødvendige systemkald, som stat() (hvilket sandsynligvis ville kræve en ny version) og de forskellige biblioteker, der er afhængige af dem (som glibc). Disse ændringer vil kræve koordinering af mange projekter.[19] Derfor er oprettelsesdatoen gemt af ext4 i øjeblikket kun tilgængelig for brugerprogrammer på Linux via statx() API'et.[20]
Project quotas
Understøttelse af project quotas blev tilføjet i Linux-kerne 4.4 den 8. januar 2016. Denne funktion gør det muligt at tildele diskkvotegrænser til et bestemt project-id. Project-id'et for en fil er et 32-bit nummer, der er gemt på hver fil og nedarves af alle filer og undermapper, der er oprettet under en overordnet mappe med et tildelt project-id. Dette gør det muligt at tildele kvotegrænser til et bestemt undermappetræ uafhængigt af filadgangstilladelser på filen, såsom bruger- og project-kvoter, der er afhængige af UID og GID. Selvom dette ligner en bibliotekskvote, er den største forskel, at det samme project-id kan tildeles flere mapper på øverste niveau og ikke er strengt hierarkisk.[21]
Transparent kryptering
Understøttelse af transparent kryptering blev tilføjet i Linux-kerne 4.1 i juni 2015.[22]
Lazy initialization
Lazyinit-funktionen tillader oprydning af inode-tabeller i baggrunden, hvilket fremskynder initialisering, når der oprettes et nyt ext4-filsystem.[23] Den er tilgængelig siden 2010 i Linux-kerneversion 2.6.37.[24]
Write barriers
ext4 aktiverer write barriers som standard. Det sikrer, at filsystemets metadata er korrekt skrevet og ordnet på disken, selv når write-cache mister strøm. Dette giver en lidt lavere ydeevne, især for applikationer, der bruger fsync meget eller opretter og sletter mange små filer. For diske med en batteriunderstøttet write-cache kan deaktivering af write barriers (mulighed 'barrier=0') sikkert forbedre ydeevnen.[25]
  1. ^ a b Mathur, Avantika; Cao, MingMing; Bhattacharya, Suparna; Dilger, Andreas; Zhuravlev (Tomas), Alex; Vivier, Laurent (2007). "The new ext4 filesystem: current status and future plans" (PDF). Proceedings of the Linux Symposium. Ottawa, ON, CA: Red Hat. Arkiveret fra originalen (PDF) 2010-07-06. Hentet 2008-01-15.
  2. ^ Torvalds, Linus (2006-06-09). "extents and 48bit ext3". Linux kernel mailing list.
  3. ^ Ts'o, Theodore (2006-06-28). "Proposal and plan for ext2/3 future development work". Linux kernel mailing list.
  4. ^ Leemhuis, Thorsten (2008-12-23). "Higher and further: The innovations of Linux 2.6.28 (page 2)". Heise Online. Arkiveret fra originalen 2009-01-03. Hentet 2010-01-09.
  5. ^ "ext4: Rename ext4dev to ext4". Linus' kernel tree. Arkiveret fra originalen 29. maj 2012. Hentet 2008-10-20.
  6. ^ Leemhuis, Thorsten (2008-12-23). "Higher and further: The innovations of Linux 2.6.28". Heise Online.
  7. ^ Paul, Ryan (2010-01-15). "Google upgrading to Ext4, hires former Linux Foundation CTO". Ars Technica.
  8. ^ "Android 2.3 Gingerbread to use Ext4 file system". The H Open. 14. december 2010.
  9. ^ "FileSystem in debian". 14. september 2019.
  10. ^ "ext4 - High Level Design". kernel.org. Hentet 8. december 2023.
  11. ^ Pomeranz, Hal (28. marts 2011). "Understanding EXT4 (Part 3): Extent Trees". SANS Digital Forensics and Incident Response Blog. Arkiveret fra originalen 18. august 2019.
  12. ^ "Mount of ext4 (created without extents) as ext3 fails on RH6.2". www.linuxquestions.org. Arkiveret fra originalen 5. august 2023. Hentet 8. december 2023.
  13. ^ "Ext4 - Linux Kernel Newbies". kernelnewbies.org.
  14. ^ "New ext4 features - Ext4". ext4.wiki.kernel.org. Arkiveret fra originalen 23. september 2023. Hentet 8. december 2023.
  15. ^ Prabhakaran, Vijayan; Bairavasundaram, Lakshmi N.; Agrawal, Nitin; Gunawi, Haryadi S.; Arpaci-Dusseau, Andrea C.; Arpaci-Dusseau, Remzi H. (oktober 2005). IRON File Systems (PDF). Symposium on Operating Systems Principles (SOSP '05). Brighton, United Kingdom: CS Dept, University of Wisconsin. Section 6.1, Paragraph 5 "Transactional Checksums". Hentet 8. december 2023.
  16. ^ "Ext4 Metadata Checksums - Ext4". ext4.wiki.kernel.org. Arkiveret fra originalen 6. november 2023. Hentet 8. december 2023.
  17. ^ "Linux_3.5 - Linux Kernel Newbies". kernelnewbies.org.
  18. ^ "ext4: Fix handling of extended tv_sec". Linux-stable kernel tree. Hentet 2017-02-14.
  19. ^ Ts'o, Theodore (5. oktober 2006). "Re: creation time stamps for ext4 ?".
  20. ^ Edge, Jake (2017-03-31). "Extending statx()". Arkiveret fra originalen 20. september 2023. Hentet 8. december 2023.
  21. ^ Li, Xi (12. januar 2016). "ext4: add project quota support" (Mailingliste). Arkiveret fra originalen 20. september 2023. Hentet 8. december 2023.
  22. ^ Ts'o, Theodore (8. april 2015). "Ext4 encryption". Arkiveret fra originalen 12. oktober 2023. Hentet 8. december 2023.
  23. ^ "Ext4 Filesystem". Thomas-Krenn-Wiki. Arkiveret fra originalen 14. februar 2022. Hentet 8. december 2023.
  24. ^ "kernel/git/torvalds/linux.git - Linux kernel source tree". git.kernel.org.
  25. ^ "Ext4 -". ArchWiki.

Eksterne henvisninger

[redigér | rediger kildetekst]