Wat ext4 anders maakt
`mkfs.ext4 /dev/sda1` — dat commando draait op zowat elke Linux-server, van een Raspberry Pi tot een rackunit in een datacenter. Dit artikel legt uit wat ext4 anders maakt dan zijn voorgangers, waar de grenzen liggen en hoe u een ext4-volume opzet en controleert.
Vereisten
U hebt een Linux-systeem nodig met kernel 2.6.28 of nieuwer — dat is elke distributie die sinds 2009 is uitgebracht. Verder hebt u root-toegang nodig en een ongebruikte partitie of schijf waarop u een bestandssysteem wilt aanmaken. Voor de voorbeelden in dit artikel gebruik ik Ubuntu 24.04 LTS, maar de commando's werken ongewijzigd op Debian, RHEL, Rocky en de meeste andere distributies. De `e2fsprogs`-pakketversie moet 1.42 of hoger zijn; dat controleert u met `e2fsprogs --version`.Wat ext4 anders maakt
ext4 is geen nieuw ontwerp, maar een evolutionaire stap vanaf ext3. De kernel-documentatie noemt het dan ook een "extending" bestandssysteem: het behoudt de structuur van zijn voorganger en voegt er functionaliteit aan toe. Die aanpak heeft één groot voordeel: u kunt een bestaand ext3-volume upgraden zonder opnieuw te formatteren. Uw gegevens blijven staan, de partitie-tabel blijft intact, en u wint de nieuwe mogelijkheden erbij.De kernverbetering zit in de manier waarop ext4 bestanden op de schijf bijhoudt. ext2 en ext3 gebruikten een block map: een lijst van alle individuele blokken die een bestand beslaat. Bij grote bestanden wordt die lijst lang, en dat kost metadata en tijd. ext4 gebruikt in plaats daarvan extents: aaneengesloten reeksen blokken die u als één geheel registreert. Een bestand van 100 MB beschrijft u dan niet met tienduizenden losse blokverwijzingen, maar met een handvol extent-verwijzingen. Vooral bij het lezen en schrijven van grote bestanden levert dat winst op.
Daarnaast registreert ext4 timestamps met nanoseconde-precisie, waar ext3 bleef steken op seconden. Dat lijkt een detail, maar voor auditlogging en toepassingen die exacte tijdsregistratie nodig hebben, is het verschil tussen seconden en nanoseconden het verschil tussen een vermoeden en een bewijs.
Journaling: de vangrail van ext4
ext4 erft het journaalmechanisme van ext3. Het principe: voordat het bestandssysteem metadata wijzigt, schrijft het die wijziging eerst weg naar een log — het journaal. Pas daarna voert het de wijziging daadwerkelijk uit. Gaat het systeem halverwege dood door een stroomstoring of een kernel panic, dan kan het bestandssysteem bij de volgende mount het journaal terugspoelen en de metadata herstellen naar een consistente staat. Zonder journaal zou u na elke crash een volledige `fsck` moeten draaien en hopen dat er niets verloren is gegaan.ext4 kent drie journaalmodi, die elk een ander compromis vormen tussen snelheid en veiligheid:
- `writeback` journalt alleen metadata, niet de bestandsinhoud. Snel, maar na een crash kan een bestand metadata bevatten die verwijst naar data die nooit is weggeschreven.
- `ordered` (de standaard) journalt ook alleen metadata, maar dwingt af dat de datablokken vóór de bijbehorende metadata naar de schijf gaan. Een bestand dat na een crash verschijnt, bevat dan geen rommel.
- `journal` schrijft alle data eerst naar het journaal en pas daarna naar de uiteindelijke plek. Veiligst, maar ook het traagst, omdat elke schrijfactie twee keer plaatsvindt.
De grenzen van ext4
ext4 ondersteunt volumes tot 1 exbibyte (EiB) en individuele bestanden tot 16 tebibyte (TiB), volgens de specificaties die Oracle aanhoudt. Die limieten liggen in de praktijk ver buiten wat u op één bestandssysteem zet — de meeste servers draaien met volumes van enkele terabytes.Wat ext4 niet heeft, is copy-on-write. Bestandssystemen als Btrfs en ZFS schrijven data nooit over de bestaande blokken heen, maar naar nieuwe blokken en schakelen dan pas om. Dat maakt snapshots mogelijk, ingebouwde compressie en checksum-controle over het hele datapad. ext4 heeft dat allemaal niet. Wilt u een snapshot van een ext4-volume maken, dan moet u dat op een ander niveau oplossen — met LVM-snapshots, of met een backup-tool die op bestandsniveau werkt.
Dat klinkt als een gemis, maar het is ook een keuze voor eenvoud. Copy-on-write-bestandssystemen zijn complexer, verbruiken meer geheugen en hebben een langere leercurve. Op een standaard server waar u gewoon een betrouwbaar bestandssysteem wilt dat geen verrassingen oplevert, is die complexiteit vaak niet nodig.
Een ext4-volume opzetten
De stappen hieronder nemen u mee van een kale partitie naar een gemount ext4-volume dat bij elke reboot automatisch beschikbaar is.1. Identificeer de juiste schijf
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT
Dit toont alle schijven en partities met hun huidige bestandssysteem. Noteer de naam van de partitie die u wilt formatteren — bijvoorbeeld `/dev/sdb1`. Dubbelcheck of u de juiste schijf te pakken hebt. Een verkeerd device formatteren betekent gegarandeerd gegevensverlies, en daar is geen undo voor.
2. Maak het ext4-bestandssysteem aan
sudo mkfs.ext4 /dev/sdb1
Dit commando formatteert de partitie met ext4. Voeg `-L datavolume` toe om een label te geven — handig als u later meerdere volumes beheert en niet wilt raden welke schijf welke is. Het commando vraagt bevestiging als het device al een bestandssysteem bevat. Lees die melding, typ `y`, en alleen dan gebeurt er iets.
3. Maak een mountpoint
sudo mkdir -p /mnt/data
Dit is de map waar het bestandssysteem zichtbaar wordt. Kies een naam die beschrijft wat erop komt te staan. Een mountpoint als `/mnt/backup` vertelt u over drie maanden nog steeds wat er op die schijf hoort te staan; `/mnt/data1` niet.
4. Mount het bestandssysteem
sudo mount /dev/sdb1 /mnt/data
De partitie is nu bereikbaar via `/mnt/data`. Controleer met `df -h /mnt/data` of het volume correct is gemount en wat de beschikbare ruimte is.
5. Regel het mounten bij het opstarten
echo "UUID=$(sudo blkid -s UUID -o value /dev/sdb1) /mnt/data ext4 defaults,noatime 0 2" | sudo tee -a /etc/fstab
Dit voegt een regel toe aan `/etc/fstab`, het bestand dat bepaalt welke bestandssystemen bij het opstarten worden gemount. Het gebruik van het UUID in plaats van de devicenaam is belangrijk: devicenamen zoals `/dev/sdb1` kunnen veranderen als u schijven toevoegt of verwijdert, het UUID blijft gekoppeld aan het bestandssysteem zelf. De optie `noatime` voorkomt dat elke leesactie een timestamp-update schrijft — een kleine prestatie-optimalisatie die op drukke servers merkbaar kan zijn.6. Test de fstab-configuratie
sudo umount /mnt/data && sudo mount -a
Met `mount -a` leest het systeem `/etc/fstab` en mount alles wat daarin staat. Als dit commando zonder foutmelding terugkomt, is uw configuratie correct. Een fout in `/etc/fstab` kan ertoe leiden dat het systeem bij de volgende reboot niet meer opstart — daarom test u dit nu, en niet bij een herstart.
Verificatie
Controleer of het bestandssysteem correct functioneert:df -h /mnt/data
sudo tune2fs -l /dev/sdb1 | grep "Filesystem features"De eerste opdracht toont het gemounte volume met de beschikbare ruimte. De tweede toont de actieve kenmerken van het bestandssysteem — u zou onder andere `extents`, `has_journal` en `flex_bg` in de lijst moeten zien staan. Ontbreekt `has_journal`, dan draait het volume zonder journaal en bent u een crash verder van een consistent bestandssysteem.
Veelgestelde problemen
Het systeem start niet op na een fstab-wijziging U hebt een fout gemaakt in `/etc/fstab`. Start op van een live-USB, mount de root-partitie en verwijder of corrigeer de verkeerde regel. Voorkomen is beter: draai na elke fstab-wijziging `sudo mount -a` en kijk of er foutmeldingen verschijnen.Bestanden zijn traag te openen na een crash Het journaal is teruggespoeld en het bestandssysteem is consistent, maar de block cache is leeg. Dit is normaal en trekt binnen enkele minuten recht naarmate het systeem weer data in het geheugen laadt.
`mkfs.ext4` weigert te draaien op een partitie die als swap is gemarkeerd U moet de swap eerst uitschakelen met `sudo swapoff /dev/sdb1`, de partitie opnieuw partitioneren zonder swap-vlag, en dan pas formatteren.
Waar ext4 wel en niet voor is
Voor de meeste workloads — een webserver, een database met een eigen backup-strategie, een file server voor een klein team — is ext4 de veilige keuze. Het is uitgebreid getest, de tooling is volwassen en de kans dat u een onverwachte tegenkomt is klein. Dat is meer dan u van de nieuwere bestandssystemen kunt zeggen, die hun stabiliteit nog moeten bewijzen op productieservers.Hebt u snapshots, compressie of checksum-controle nodig, dan moet u verder kijken. Maar weeg af of u die functies echt gebruikt, of dat u ze mooi vindt klinken in een presentatie. Een Btrfs-volume met snapshots die u nooit terugdraait, is complexer dan een ext4-volume met een simpele nightly backup — en de backup werkt ook nog eens als uw schijf fysiek kapotgaat.