Skip to content

Fragmentierung

Windows User kennen die vielen Beschwörungsformeln die es so gibt, um ein Windows Laufwerk benutzbar zu halten. Tatsächlich sind Filesystemfragmentierung neben dem Vermüllen der Registry ein großes Problem bei der Performance von Desktop Systemen. Auf Servern sind die Auswirkungen und der Grad der Fragmentierung abhängig von den Zugriffsmustern. Übrigens ist dies nicht so sehr abhängig vom verwendeten Filesystem und Betriebsytem, diese Effekte finden sich in jedem Filesystem. Je nach Belastung des Filesystems entstehen Fragmente schneller oder langsamer. Besonders problematisch ist immer, wenn neben normalen Datenfiles noch grosse wachsende Files hinzuommen. Fragmentierung entsteht durch löschen/kürzen von Dateien. Normalerweise erholt sich ein Filesystem wieder, wenn die fragmentierten Files gelöscht werden. Dieses erholen kann aber nicht einsetzen, wenn viele der Files lange Zeit gespeichert werden.

ext2 gestressed
Von Strehi habe ich ein schönes grafisches Beispiel für einen Server mit einem "kleinen" Fragmentierungsproblem. Es handelt sich um einen großen Mailbox Server, auf dem in gehashten Verzeichnisses Millionen von Mailbox Files liegen. Mailbox Files haben die Eigenschaft, dass sie sehr lange gespeichert werden, und regelmäßig wachsen und wieder gekürtzt werden. Das ist eine ziemlich tötliche Belastung für ein Filesystem. Wenn dann aber noch eine Eigenart des Filesystems hinzukommt, die Datenfiles möglichst nahe an deren Verzeichnisblöcke zu schieben, so kommt es zu einem Gedränge am Anfang des Laufwerks (weil dort initial die Verzeichnisse angelegt wurden). Hier ist das Problem schön in grafischer Ansicht zu sehen.
Nach Kernelpatch
Es handelt sich dabei um ein ext2 Filesystem auf einem Linux Server. Durch einen kleinen Patch konnte Strehi mit seinen Mitarbeiter den Kernel so modifizieren, dass dieser wesentlich freizügiger mit der Verteilung der Files ist. Dadurch hat jedes Mailboxfile wesentlich mehr Raum zu "atmen". Grundvoraussetzung hierfür ist natürlich genügend Freier Platz auf der Festplatte. Dies ist generell ein guter Rat, die Laufwerke mit starker Änderungsfrequenz nicht über 50% zu befüllen. Nach dem Patch ergibt sich nebenstehenden Bild. Die beiden Screenshots sind mit dem Tool ext2vnc erstellt, das es erlaubt über Netzwerk mit einem herkömmlichen VNC Client die Belegung der Blöcke zu analysieren. Wenn Sie sich aber kein Linux Kernel Spezialistenteam leisten können, oder gar sich für den Einsatz von Windows Servern entschieden haben, so müssen Sie mit den Problemen des NTFS leben. Microsoft empfiehlt eine regelmäßige Defragmentierung einmal die Woche. Dazu sind allerdings kommerzielle Defragmentierungstools notwendig. Die Tools die bei Windows 2003 oder XP mitgeliefert werden, sind hier in der Regel nicht geeignet. Optimale Ergebnisse erhält man aber auch dann nur, wenn ausreichend freier Platz auf dem Filesystem vorhanden ist. sysinternals hat einige Tools für die Analyse (NTFSInfo, Diskview) und Behebung von Fragmentierungen. Dazu gehört ein command Line Tool mit dem man einzelne Files defragmentieren kann (contig). Ebenso ein Tool zur Defragmentierung von Files die normalerweise immer benutzt sind (PageDefrag) und somit nicht defragmentiert werden können. Bei der Erstellung von Anwendungen sollte man sich dem Problem bewusst sein, wie in meinem Artikel zum Thema File Persitence bereits ausgeführt geht es aber immer um ein Abwäägen zwischen Einfachheit/Robustheit auf der einen Seite, und ausgeklügelten Reuse Strategien oder den Einsatz von Datenbanken auf der anderen Seite. (Im obigen Beispiel ist diese Entscheidung übrigens Zugunsten des stabilen ext2 Filesystems ausgefallen).

Trackbacks

No Trackbacks

Comments

Display comments as Linear | Threaded

No comments

Add Comment

BBCode format allowed
Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
To leave a comment you must approve it via e-mail, which will be sent to your address after submission.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA