Login
Newsletter
Werbung

Mo, 19. Januar 2009, 00:00

Das Dateisystem ext4

Eigenschaften und Benchmarks

Zusammenfassend kann man sagen, dass ext4 im Rahmen der Messgenauigkeit in fast jeder Hinsicht schneller als ext3 ist und zu den schnellsten Linux-Dateisystemen gehört. Da die Geschwindigkeit aber um weniger als 20% über der von ext3 liegt, werden Benutzer im Falle einer Umstellung von ext3 auf ext4 von der höheren Geschwindigkeit nichts bemerken.

Dateisystemprüfung

ext4 soll auch die Zeit für die Dateisystemprüfung deutlich reduzieren. Um dies zu prüfen und zu quantifizieren, richteten wir folgendes Szenario ein. Das Dateisystem wurde wieder in einer Größe von 20 GB angelegt und gemountet. Da es nicht sinnvoll ist, ein leeres Dateisystem zu prüfen, wurde das Dateisystem mit knapp 20 GB Dateimüll gefüllt. Da gab uns die Gelegenheit, die Geschwindigkeit eines annähernd realistischen Kopiervorgangs zu messen. Danach wurde das Dateisystem ausgehängt.

Nun wurde nochmals gemessen, wie lange das Dateisystem zum Mounten benötigte. Auch das nachfolgende umount wurde gemessen. Das Dateisystem war damit bereit für den interessanten Teil, die Dateisystemprüfung mit dem Programm fsck (File System Check). Dieser wurde ohne spezielle Optionen durchgeführt. Schließlich wurde mit debugfs -v /dev/mapper/vg0-test das Dateisystem auf »dirty« gesetzt. Ein nachfolgendes e2fsck begann auch ohne die Option -f eine Dateisystemprüfung. Deren Zeit wurde ebenfalls gemessen.

Zum Abschluss wurde das Dateisystem beschädigt:

dd if=/dev/zero of=/dev/mapper/vg0-test count=100 seek=1024
Diese zugegebenermaßen wenig subtile Methode führte zu dem beabsichtigten Ergebnis, dass bei einer anschließenden Prüfung mit e2fsck -f Fehler erkannt wurden. Die Prüfung mit Reparatur dauerte trotzdem nicht länger als der fehlerfreie Fall. Dass bei dieser Reparatur, die die Konsistenz des Dateisystems wieder herstellt, normalerweise Daten verloren gehen, sollte bekannt sein. Wichtige Daten müssen immer mit einem Backup gesichert werden.

Weitere Ergebnisse mit ext3 und ext4
  ext3 ext4
20 GB kopieren [MB/s] 24,1 26,3
Volles Dateisystem mounten [s] 0,122 0,186
Volles Dateisystem unmounten [s] 0,006 0,110
fsck -f [s] 60,3 1,9

Dieser Test konnte aus Zeitgründen nur einmal durchgeführt werden, daher sollten die Werte nicht zu genau genommen werden. Beim Kopieren war zu erwarten, dass der Durchsatz höchstens halb so hoch sein würde wie beim sequentiellen Lesen oder Schreiben, denn Quelle und Ziel befanden sich auf derselben Festplatte. Tatsächlich lag der gemessene Wert etwas niedriger, was wohl auf das Anlegen von Dateien, Suchvorgänge und andere Dateioperationen zurückzuführen ist, die zum rekursiven Kopieren dazugehören. ext4 zeigte sich auch hier schneller als ext3.

Beim Mounten waren beide Dateisysteme merkwürdigerweise schneller als im ersten Test. Möglicherweise waren die meisten Metadaten bereits im Cache, so dass der Messwert nicht allzuviel Aussagekraft hat. Gleiches gilt für das Unmounten, das keine nennenswerte Zeit benötigte.

Die ermittelte Zeit für die Dateisystemprüfung zeigte in frappierender Weise, welche Verbesserungen in ext4 erzielt wurden. Das neue Dateisystem war bei dieser Partitionsgröße stets um mindestens das 30-fache schneller als ext3. Lange Wartezeiten durch eine ungeplante Dateisystemprüfung dürften damit der Vergangenheit angehören. Wir vermuten jedoch, dass in weniger günstigen Fällen größere Teile von ext4 geprüft werden müssen und die Lage dann nicht ganz so rosig aussieht. Testen konnten wir das aber nicht. Auch in anderer Hinsicht stellten die ermittelten Werte einen Optimalfall dar. Die Metadaten des Dateisystems dürften nämlich jeweils bereits im Cache von Linux gewesen sein. Bei einem Neustart könnte die Dateisystemprüfung deutlich länger dauern.

Die Optionen zur automatischen Konsistenzprüfung des Dateisystems, die mit tune2fs anseh- und änderbar sind, sind übrigens bei ext4 noch genauso vorhanden wie bei ext3. Genaueres kann man im Artikel »Dateisystem-Tuning« nachlesen.

Defragmentierung

Jedes Dateisystem kann im Laufe der Zeit fragmentieren. Das bedeutet, dass Dateien nicht mehr kontinuierlich auf der Platte gespeichert werden und dadurch die Zeit zum Lesen der Datei ansteigen kann. Die meisten Linux-Dateisysteme besitzen Algorithmen, um Fragmentierung so gut wie möglich zu vermeiden, so dass kaum ein Anwender jemals eine Leistungseinbuße durch Fragmentierung verspürt. Dementsprechend sind Werkzeuge zur Defragmentierung dünn gesät. Für ext4 ist dennoch eine Online-Defragmentierung vorgesehen. Ein Tool namens e4defrag ist offenbar in Arbeit.

Für die wenigen Benutzer, die jemals eine Defragmentierung benötigen werden, bietet dieser Artikel eine kleine Übersicht über Methoden und Tools.

Externes Journal

Wie bei ext3 kann man bei ext4 die Geschwindigkeit etwas steigern, wenn man das Journal auf ein separates Gerät legt. Als Beispiel nehmen wir ein Dateisystem auf /dev/sdc1 mit einer Blockgröße von 4096 an, dessen Journal wir auf /dev/sdd1 legen wollen. Die vorhandenen Nutzdaten auf /dev/sdc1 bleiben hierbei erhalten.

Zunächst ist sicherzustellen, dass das Dateisystem nicht gemountet ist:

umount /dev/sdc1
Nun kann man das bestehende Journal entfernen, danach das externe Jornal auf /dev/sdd1 mit der gleichen Blockgröße anlegen und zuletzt das Journal, das nun extern ist, wieder hinzufügen.

tune2fs -O ^has_journal /dev/sdc1
mke2fs -b 4096 -O journal_dev /dev/sdd1
tune2fs -J device=/dev/sdd1 /dev/sdc1

Booten von ext4

Über die Zusammenarbeit der Bootloader liegen uns mit Ausnahme von GRUB noch keine Informationen vor. Für die alte Version von GRUB 0.9x gibt es eine Implementierung von ext4, die im Rahmen eines Summer of Code-Projekts von OpenSUSE entwickelt wurde. Es ist unklar, ob und wann diese Modifikation in das offizielle Projekt einzieht.

Für die Nachfolgeversion GRUB 2 gibt es noch keine offizielle Unterstützung, aber es wird daran gearbeitet. Die Entwicklerversion 1.97 von GRUB soll von ext4 booten können.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung