Warum brauchen ext2 und Nachfolger keine Defragmentierung?

8

Die Dateisystemfamilie ext2 / ext3 / ext4 benötigt keine Defragmentierung.

Welche zugrundeliegende Konstruktion hilft diesem Dateisystem, nicht fragmentiert zu werden?

    
atur 20.08.2014, 13:49

3 Antworten

9

Eine Möglichkeit, wie das ext4-Dateisystem die Fragmentierung in Schach hält, ist der Prozess verzögerte Zuweisung (ext4's Standard-Zuordnungsmodus).

  

Bei der verzögerten Zuweisung wird die Zuordnung neu geschriebener Dateidatenblöcke zu Festplattenblöcken im Dateisystem bis zur Rückschreibzeit verschoben.

Dies funktioniert, indem die meisten Blöcke für eine Datei zur gleichen Zeit zugewiesen werden, wenn die Gesamtzahl der Blöcke (oder zumindest ein Ballpark) in jeder Datei bekannt ist. Dies ermöglicht es dem Blockzuordner (dem mballoc , der in der Antwort von MMK erwähnt wird), einen geeigneten Bereich des freien Speicherplatzes zum Ablegen der Datei besser zu finden.

    
Aaron 20.08.2014, 14:53
8

Im ext3-Dateisystem gibt es einen Blockzuordner für die Festplatte für jeden Block, und daher ist es durchaus möglich, dass eine Fragmentierung auftreten kann.

Allerdings gibt es im ext4-Dateisystem einen Multi-Block-Allokator, der das Schreiben von Blöcken auf die Platte verzögern kann, so dass es mehrere Blöcke gleichzeitig in einem einzigen Stück Platte zuordnet, um zusammenhängendes Schreiben zu ermöglichen - und deshalb ist es weniger wahrscheinlich, dass eine Fragmentierung auftreten kann (es ist immer noch möglich, nur weniger wahrscheinlich)

    
mmk 20.08.2014 14:31
5

Zumindest für Ext2 (und Ext3 denke ich, obwohl ich weniger sicher bin), gibt es nichts im Format / auf der Festplatte, das die Defragmentierung verhindern würde.

Der Mangel an Defragmentierung liegt auf der Implementierungsebene, die von Betriebssystem zu Betriebssystem variieren kann. Das heißt, abhängig von der Implementierung kann eine Datei in Ext2 fragmentiert sein oder nicht.

Wenn eine Fragmentierung vermieden wird, liegt das wahrscheinlich an der verzögerten Zuweisung von physischen Blöcken. Das heißt, auf einer Ebene der Implementierung wird das Dateisystem die Daten zwischenspeichern (und über die logische Blocknummer darauf zugreifen), bis es auf die Festplatte geschrieben / übergeben wird. Wenn die Daten schließlich auf die Festplatte geschrieben werden, müssen physische Blöcke zugewiesen werden. Der Zuordnungsalgorithmus kann (oder kann nicht) eine Anzahl zusammenhängender verfügbarer physikalischer Blöcke für die Daten zuordnen.

Hoffe, das hilft.

    
Sparky 20.08.2014 18:00

Tags und Links