Warum brauchen ext2 und Nachfolger keine Defragmentierung?

Antworten:

9

Eine Möglichkeit, wie das ext4-Dateisystem die Fragmentierung in Schach hält, ist der Prozess der verzögerten Zuweisung (Standardzuweisungsmodus von ext4).

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

Dies funktioniert, indem die meisten Blöcke gleichzeitig für eine Datei zugewiesen werden, wenn die Gesamtzahl der Blöcke (oder zumindest ein Baseballstadion) in jeder Datei bekannt ist. Auf diese Weise kann der Blockzuweiser (der mballocin der Antwort von MMK erwähnte) besser einen Bereich mit ausreichend großem freiem Speicherplatz für die Datei finden.

Aaron
quelle
Beachten Sie, dass dies in der Tat nur eine Funktion des ext4-Treibers ist . Nun, ich weiß nicht , ob sehr technisch gesprochen , dass nicht die älteren fs mit einer solchen Option montieren könnte (zumindest teilweise ). Noch immer ist DELALLOC als nur ext4 markiert .
Mirh
8

Im ext3-Dateisystem gibt es für jeden Block einen Blockzuweiser für die Festplatte. Daher ist es durchaus möglich, dass eine Fragmentierung auftritt.

Im ext4-Dateisystem gibt es jedoch einen Multi-Block-Allokator, der das Schreiben von Blöcken auf die Festplatte verzögern kann, sodass mehrere Blöcke gleichzeitig in einem einzelnen Block der Festplatte zugeordnet werden können, um ein zusammenhängendes Schreiben zu ermöglichen - und so weiter. Es ist weniger wahrscheinlich, dass eine Fragmentierung auftreten kann (es ist immer noch möglich, nur weniger wahrscheinlich).

mmk
quelle
6

Zumindest für Ext2 (und Ext3, obwohl ich mir weniger sicher bin) gibt es nichts im Format / in der Struktur auf der Festplatte, was eine Defragmentierung verhindern würde.

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

Wenn eine Fragmentierung vermieden wird, liegt dies wahrscheinlich an der verzögerten Zuweisung physischer Blöcke. Das heißt, auf einer bestimmten Ebene der Implementierung speichert das Dateisystem die Daten zwischen (und greift über die logische Blocknummer darauf zu), bis sie auf die Festplatte geschrieben / festgeschrieben werden. Wenn die Daten endgültig auf die Festplatte geschrieben werden, müssen physische Blöcke zugewiesen werden. Der Zuweisungsalgorithmus kann eine Anzahl zusammenhängender verfügbarer physikalischer Blöcke für die Daten zuweisen (oder auch nicht).

Hoffe das hilft.


quelle
Es gibt tatsächlich ein e2defrag-Dienstprogramm, das benötigt werden kann (auf ziemlich vollständigen Discs mit vielen zufällig geschriebenen Dateien). Der verzögerte Allokator von ext4 macht dies noch weniger wahrscheinlich. Aber selbst ext2 hatte eine Art verzögertes Zuweisen / Schreiben, was es weniger erforderlich machte, ein Defragmentierungsdienstprogramm auszuführen als der primitive Allokator von MS-DOS®.
Mirabilos