Forum
Tipps
News
Menu-Icon

Suse: Suse: defragmentieren der festplatte unter linux?

morgen

kann oder muß/sollte man unter linux die platte defragmentieren? wenn ja wie  geht das?


Antworten zu Suse: Suse: defragmentieren der festplatte unter linux?:

Hallo,

die Antwort auf deine erste Frage lautet schlicht Nein. Somit hat sich die Zweite damit automatisch erledigt.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Nicht ganz richtig. Welches Datei System benützt du? ReiserFS oder XFS?!?

ich glaub reiser, warum?

Hallo,

Linux unterscheidet sich in vielen Dingen grundlegend von dem Redmonder System, so auch im Festplattendatenhandling. Im Gegensatz zu Windows bringt eine Defragmentierung nichts, denn nach der Fragmentierung wird das Dateisystem sehr schnell wieder einen fuer die Nutzungsweise des Dateisystems charakteristischen Fragmentierungslevel anstreben und dann dort verweilen.

Ausserdem spielt die Laenge der Fragmente eine Rolle. Linux verwendet kernelintern ein Readahead von 16 Blocks. Das bedeutet: Wenn eine Datei sequentiell durchgelesen wird (weit ueber 95% alle Lesezugriffe!), liest Linux bis zu 16 Bloecks am Stueck voraus, um den kernelinternen Cache "vorzuheizen", in der Hoffnung, dass diese Bloecke gleich von dem betreffenden Programm verlangt werden.

Wenn die Fragmente also groesser als 16 Bloecke sind (die meisten sind das, siehe unten), dann ist es letztendlich egal, ob die Datei fragmentiert ist oder nicht, weil der Seek in den Readaheads untergeht. Nur Fragmente, die kleiner sind als 16 Bloecke wirken sich wirklich schaedlich auf die Leseperformance aus.

Das Dateisystem schreibt Dateien nun auch mit einer Art writeahead, aeh, mit Preallocation. Wenn Du im Dateisystem einen Block schreibst, belegt das Dateisystem gleich bis zu 7 weitere Bloecke in Folge fuer diese Datei. Zwei konkurrierende Schreibzugriffe in einem Verzeichnis wuerden also nicht Bloecke der Form

121212121212

anordnen, sondern eine Blockfolge

1ppppppp2qqqqqqq

erzeugen, wobei jeweils 1 und 2 geschriebene Bloecke der Dateien 1 und 2 sind und p und q fuer 1 bzw. 2 vorbestellte Bloecke sind. Werden 1 und 2 konkurrierend verlaengert, entsteht so

11111111222222221ppppppp2qqqqqqqq

und so weiter. Auf diese Weise wird die schaedliche (kleine) Fragmentierung weitestgehend vermieden. Das ganze Verfahren ist eine Verallgemeinerung des Fragment/Block-Verfahrens des BSD Fast Filing Systems.

Ausserdem muss man als Anwender auf einem Multitaskingsystem auch noch zwischen Performance und Durchsatz unterscheiden: Performance ist das, was ein Anwender mit einem einzelnen Prozess maximal aus der Platte an MB/sec rausziehen kann. Durchsatz ist das, was die Platte ueber alle Anwender und Prozesse gerechnet an MB/sec ausspuckt.

In Multitasking-Systemen ist der Durchsatz oft sehr viel groesser als die Performance. Linux benutzt Algorithmen, die den Durchsatz, nicht die Performance des System erhoehen. Zum Beispiel werden Zugriffe auf die Festplatte, die in der Wait Queue der Disk stehen, nach Blocknummern aufsteigend sortiert. Mit einem Saegezahn-Algorithmus klettert der Kopf der Platte zu den hohen Blocknummern und serviced die Requests, um dann in einem long seek nach unten zu zucken und die naechste Runde zu drehen. (Nein, das ist nicht ganz der Fahrstuhl-Algorithmus: Mit dem waren die Latenzen/Service Times zu hoch und der Algorithmus ist nicht fair). Ausserdem werden aufeinanderfolgende Requests fuer denselben Prozess von Linux zu einem Request groesserer Groesse zusammengefasst (geclustert).

Durch eine solche Sortierung erfolgen die Lesezugriffe nicht in der Reihenfolge und mit der Groesse, die der Prozess ausgegeben hat, sondern in der Reihenfolge und mit einer Groesse, die der Platte genehm ist. Auf diese Weise werden die Effekte von grosser Fragmentierung weitgehend ueberdeckt - nur kleine Fragmente wirken sich schaedlich auf den Durchsatz auf.

Und zum Schluss liegt ueber all diesem auch noch der Buffer Cache des Betriebssystems, d.h. beim zweiten Leseversuch kommt sowieso alles aus dem Ram und die Anordnung der Daten auf der Platte ist vollkommen schnurz, egal ob Ext2/3 Reiser und wie sie alle heißen als Filesystem benutzt wird.


Defragmentierung wäre reine Zeitverschwendung

danke für die ausführliche antwort. muß ehrlich sagen ich hab nicht alles verstanden aber das macht nichts. hauptsache ich weiss das ich nicht defragmentieren muss.

danke nochmals und schönen abend

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
3 Leser haben sich bedankt

Moin moin.
@ ..
Cooler Beitrag. Hut ab.

@sprenz

Danke

@...
Cooler Beitrag.
Auch ich ziehe meinen Hut ;)

Vilen dank.
Freut mich, dass es noch Leute
gibt, die um anderen zu helfen so viel Mühe geben

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo,

man tut was man(n) kann.  ;)

Have Fun

@ Dr. Suse

Was für eine grandiose & ausführliche Antwort
vielen Dank!
du hast meinen vollen Respekt & ich wünsche weiter frohes Mehrwertschaffen für dich & deine Umgebung ;)

haunserein


« Linux / Unix: Stream-Software für Debian gesuchtRed Hat: Wo ist der Globale $PATH Eintrag »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Auslagerungsdatei
Die Auslagerungsdatei, auch bekannt als virtueller Speicher, ist ein wichtiges Element im Windows-Betriebssystem. Sie dient als Erweiterung des physischen Arbeitsspeicher...

Dateiendungen
Die Dateiendung, auch Dateinamenerweiterung, Dateierweiterung oder einfach "Endung" genannt, besteht aus meistens drei oder vier Buchstaben und wird mit einem Punkt an de...

Dateisystem
Das Dateisystem eines Computers definiert, wie Daten auf einem Speichermedium organisiert werden. Es bestimmt dabei, wie die Informationen auf dem Medium gespeichert, gel...