2min

Tags in dit artikel

,

Het nieuwe ext4-bestandssysteem, de opvolger van het ext3-bestandssysteem voor Linux, heeft bij verschillende gebruikers inmiddels problemen opgeleverd met betrekking tot dataintegriteit. Het bestandssysteem zou volgens verschillende gebruikers dataverlies opleveren.

Dataverlies zou volgens gebruikers optreden na een crash van het systeem. Een crash kan ervoor zorgen dat alle bestanden waar kort voor de crash naartoe is geschreven 0 bytes groot zijn. Bij gebruikers is dit voorgekomen bij configuratiebestanden tot zelfs complete MySQL-databases. De ontwikkelaar van ext4, Theodore Ts’o, heeft op de bugsite van Ubuntu gezegd dat het probleem bij hem bekend is en dat er een gedeeltelijke oplossing in Linux 2.6.30 zal komen. Linux 2.6.29 moet eerst nog uitkomen. Ts’o wist echter te vertellen dat het vooral een applicatieprobleem is.

Volgens Ts’o wordt het probleem veroorzaakt door het feit dat de POSIX-standaard, de ISO-standaard waarin een basis UNIX-systeem wordt beschreven, niks zegt over hoe een bestandssysteem moet reageren bij een crash. Indien een bestand zeker op de schijf moet staan zou het fsync()- of fdatasync()-commando aangeroepen moeten worden. Indien dit elke keer zou gebeuren zou dit een snelheidsprobleem opleveren, hierdoor is het binnen de POSIX-standaard ook geen noodzaak dat iets direct weggeschreven wordt.

De voorloper van ext4, ext3, had de gewoonte om elke vijf seconden data weg te schrijven. Ext4 gebruikt echter een vertraagde wegschrijving net als de XFS- en btrFS-bestandssystemen. Door deze vertraagde wegschrijving kan het 45 tot 150 seconden duren voordat iets op de schijf is weggeschreven. Het probleem doet zich dus ook al voor op XFS maar dit bestandssysteem heeft op Linux-desktops minder marktaandeel.

"Het verschil tussen vijf en zestig seconden (het normale verschil bij het wegschrijven van grote datasets) is niet zo groot, een hoop brakke applicaties schrijven echter blijkbaar een grote hoeveelheid kleine bestanden weg in de home-folder van de gebruiker. Dit is blijkbaar het geval bij GNOME en KDE. Omdat deze applicaties bestaande bestanden overschrijven en dit vaak doen is de kans op dataverlies groot", aldus Ts’o.

De oplossing die Ts’o in Linux 2.6.30 zal mergen zorgt voor het oude ext3-gedrag wanneer het bestand op een bepaalde manier werd geopend of werd hernoemd, iets dat bij de probleembestanden vaak het geval is. Grote databasebestanden worden hierdoor wel op de ext4-manier behandeld zodat een groot deel van de snelheidswinst van ext4 behouden blijft.