Unter
Fragmentierung
(Fragment = Bruchstuck) versteht man die verstreute Speicherung von logisch zusammengehorigen
Datenblocken
des
Dateisystems
auf einem
Datentrager
, was als Spezialfall der allgemeinen
Speicherfragmentierung
betrachtet werden kann. Bei Speichermedien mit
sequentiellem Zugriff
wie beispielsweise
Festplatten
kann Fragmentierung zu einer spurbaren Verlangsamung der Lese- und Schreibvorgange fuhren.
Unter
Defragmentierung
versteht man die mit speziellen Programmen durchfuhrbare Neuordnung von fragmentierten Datenblocken auf dem Speichermedium, so dass logisch zusammengehorige Datenblocke moglichst aufeinanderfolgend auf dem Datentrager abgelegt werden. Dies kann den sequentiellen Zugriff beschleunigen und damit die Arbeitsgeschwindigkeit des gesamten
Systems
erhohen.
Ein Datentrager (auf dem Lesen und Schreiben erlaubt ist) ist kein statisches Gebilde, sondern es finden dauernd Lese-, Schreib- und Loschoperationen statt. Manche Operationen geben
Speicherplatz
wieder frei, manche benotigen neuen Speicherplatz. Dieses dauernde Freigeben und erneute Belegen von
Speicherblocken
fuhrt dazu, dass sich zum einen die unbenutzten Speicherblocke auf dem Datentrager verteilen (Freispeicherfragmentierung) und zum anderen die logisch zusammenhangenden Datenblocke von Dateien und
Metadateien
nicht mehr hintereinander auf dem Datentrager abgespeichert werden (Dateifragmentation). Eine weitere Ursache von Fragmentierung ist das Verlangern schon bestehender Dateien.
Vereinfacht ausgedruckt: Wenn das Betriebssystem eine Datei auf dem Speichermedium ablegen will, kann es vorkommen, dass diese nicht zusammenhangend, sondern verstreut auf dem Datentrager gespeichert wird. Einige Dateisysteme prufen nicht, ob die Daten innerhalb des freien Speicherplatzes zusammenhangend abgelegt werden konnen, sondern beginnen den Speichervorgang einfach in dem ersten freien Speicherplatzbereich. Es kommt jedoch nicht selten vor, dass dieser Speicherbereich nicht groß genug ist, um die gesamte Datei aufzunehmen. In diesem Fall beschreibt das Dateisystem den ersten freien Speicherbereich, bis dieser voll ist, und legt den restlichen Teil der Datei wiederum im nachsten freien Speicherbereich ab.
Im folgenden Diagramm wird dieser Vorgang veranschaulicht:
Vorgang
|
Speicherblock
|
1
|
2
|
3
|
4
|
5
|
6
|
Datei
file.odt
entsteht
|
file.odt
|
frei
|
Datei
film.avi
entsteht
|
file.odt
|
film.avi
|
frei
|
file.odt
wird großer
|
file.odt (1/2)
|
film.avi
|
file.odt (2/2)
|
frei
|
nach der Defragmentierung
|
file.odt
|
film.avi
|
frei
|
Es gibt mehrere Arten der Fragmentierung (auch wenn mit Fragmentierung meist die Intrafile-Fragmentierung gemeint ist):
- Intrafile-Fragmentierung
ist das Verteilen von Nutzdateien auf dem Datentrager, so dass kleine zusatzliche Verzogerungszeiten beim
sequentiellen
Lesen von Dateien auftreten konnen.
- Interfile-Fragmentierung
ist das Verteilen von Dateien und Metadateien, die normalerweise nacheinander gelesen werden. Sie spielt vor allem beim
korrelierten
Lesen vieler kleiner Dateien eine Rolle (zum Beispiel
Verzeichnisse
mit vielen kleinen Bildern).
- Metafile-Fragmentierung
ist das Fragmentieren von Verzeichnissen, Blockbelegungstabellen und ahnlichen Metainformationen.
- Fragmentierung des unbenutzten Speicherplatzes
; sie stellt selbst keinen Nachteil fur den Zugriff auf Dateien dar, ist aber eine der Ursachen fur die Entstehung von Fragmentierung (Neuanlegen von Dateien).
Beim Lesen und Schreiben von fragmentierten Daten kann es je nach Beschaffenheit des Speichermediums zu Geschwindigkeitseinbußen kommen. Bei modernen Dateisystemen (
ReiserFS
,
XFS
,
NTFS
) kommt es zusatzlich zu einer Vergroßerung der Metadaten, die beschreiben, wo sich die Daten auf dem Speichermedium befinden.
Am Beispiel einer Festplatte lasst sich die negative Auswirkung der Fragmentierung besonders gut verdeutlichen: Beim Lesen einer fragmentierten Datei, die uberall verstreut auf der Magnetscheibe der Festplatte abgelegt ist, muss der Lesekopf der Festplatte in kurzen Abstanden sehr oft und uber langere Strecken hinweg auf der Magnetscheibe neu positioniert werden. Dies bewirkt viele kleine Verzogerungen, die sich im Bereich von einigen Millisekunden bewegen. Je nach Große der Datei, Fragmentierungsgrad und Zugriffszeit der Festplatte konnen sich diese Verzogerungen uber den gesamten Lesevorgang zu einer spurbaren Verlangsamung summieren.
Im Gegensatz dazu existieren auch andersartige Speichermedien, die ohne bewegte Teile auskommen und damit nicht von mechanisch begrundeten Verzogerungen bei Lese- und Schreiboperationen betroffen sind. Dazu gehoren unter anderem Datentrager, die auf Speicherchips (vornehmlich
Flash-Speicher
) aufbauen, beispielsweise
USB-Sticks
,
Speicherkarten
oder
SSDs
. Nur teilweise von diesem Problem betroffen sind
Hybridfestplatten
, die sowohl Magnetplatten als auch Speicherchips zum dauerhaften Ablegen von Daten nutzen.
Jedoch konnen auch derartige Speichermedien von einem fragmentierten Dateisystem verlangsamt werden. Aufgrund der anderen internen Organisation des Speichers sind die Auswirkungen einer Fragmentierung abhangig von Gerat und Hersteller jedoch sehr unterschiedlich und konnen nicht mit einer Festplatte verglichen werden. Der
Controller
dieser Speichermedien legt die Daten je nach Modell mitunter nicht in der physischen Reihenfolge auf den Speicherchips ab, die vom Dateisystem abgebildet wird, denn da sich Speicherchips nicht beliebig oft beschreiben lassen, muss beispielsweise das haufige Schreiben auf dieselbe physische Adresse mittels
wear leveling
vermieden werden. Dadurch lasst sich keine verlassliche Aussage bezuglich der Auswirkung von Fragmentierung auf Flash-Speichermedien treffen. Sicher ist jedoch, dass sich das Durchfuhren einer Defragmentierung negativ auf die Lebensdauer von Flash-Speichermedien auswirkt, da diese nicht unbegrenzt oft beschreibbar sind.
Es gibt verschiedene Strategien, um die Fragmentierung eines Dateisystems zu reduzieren. Diese Strategien sind primar auf Festplatten als verwendete Datentrager bezogen und konnten sich bei anderen Speichermedien nicht oder nur wenig vorteilhaft auswirken.
Bei allen Arten von Dateisystemen bewirkt ein Freilassen von 5 bis 20 Prozent des Speicherplatzes ein Verringern der Fragmentierung. Je voller ein Dateisystem belegt ist, desto wahrscheinlicher tritt auch Fragmentierung auf, da die freien Bereiche immer kleiner werden. Sobald eine Datei abgelegt werden soll, die großer ist als die großte ?Lucke“, ist eine kontinuierliche Speicherung nicht mehr moglich und sie fragmentiert zwangslaufig.
Ein probates Mittel ist das Trennen von Programmen und von Nutzerdaten. Das Dateisystem macht dazu keinen Unterschied, jedoch entstehen Fragmente bei Nutzerdaten fortlaufend und bei Programmen mit jedem Update. Eine Trennung erfordert also das Verteilen auf verschiedene Partitionen. Dazu gibt es passende Hilfsmittel, insbesondere fur das Verlagern der Nutzerdaten. Im Ergebnis wird auch das Defragmentieren der Partitionen weniger Zeit erfordern.
Einfache Maßnahmen sorgen fur eine geringere Fragmentierung entsprechend dem Volumen der verschiedenen Dateiklassen.
- geschicktes Verteilen von Betriebssystem, Verzeichnisbaumen und Nutzdaten uber die Festplatten mittels geeigneter Software
- Verwendung einer hoheren Blockgroße des Dateisystems (dabei wird jedoch mitunter Speicherplatz verschwendet)
Parametrieren der Applikationen und der Systemdienste
[
Bearbeiten
|
Quelltext bearbeiten
]
Weitere Maßnahmen beziehen sich auf die Parametrierung der Applikationen:
- Preallocation (man reserviert vorsorglich schon Blocke, obwohl diese noch nicht benotigt werden)
- Spates Festlegen der zu benutzenden Speicherblocke (late allocation) statt sofortigen Festlegens (early allocation)
- mehrstufige Allozierungssysteme (Zerlegung einer Festplatte in Cluster, Blockgruppen, Blocke).
Es gibt verschiedene Moglichkeiten, die Fragmentierung eines Dateisystems anzugeben:
- Verhaltnis der Lese- oder Schreib-Geschwindigkeit des fragmentierten (realen) Dateisystems gegenuber einem nichtfragmentierten (optimalen) Dateisystem
- Verhaltnis der Zahl der fragmentierten Dateien zur Gesamtanzahl der Dateien
- Verhaltnis des durch fragmentierte Dateien belegten Speicherplatzes zum gesamten belegten Speicherplatz
- Verhaltnis des durch fragmentierte Dateien belegten Speicherplatzes zum gesamten vorhandenen Speicherplatz
- Anzahl der zusammenhangenden Blocke zur Gesamtanzahl der belegten Blocke
- Anzahl der zusammenhangenden Blocke zur Gesamtanzahl der vorhandenen Blocke.
Die durch unterschiedliche Verfahren bestimmten Fragmentierungsgrade sind nicht vergleichbar; nicht einmal durch gleiche Verfahren bestimmte Fragmentierungen sind vergleichbar, weil die realen Auswirkungen bei vielen Verfahren weiterhin von Blockgroße, durchschnittlicher Dateigroße sowie Geschwindigkeit und interner Speicherorganisation des Mediums abhangen.
Daruber hinaus ist der Fragmentierungsgrad allein nicht eine verlassliche Messgroße fur die Performance eines Dateisystems. Zum einen liegt das daran, dass in einigen Dateisystemen auch die Metadaten fragmentiert werden konnen, bei anderen jedoch nicht. (Die
MFT
in NTFS ist zum Beispiel davon betroffen.) Zum anderen verfugen verschiedene Dateisysteme uber verschiedene Mechanismen, um den Performanceeinbruch bei vorhandener Fragmentierung zu vermindern.
Das Dateisystem
extended filesystem
von
Linux
implementiert mehrere Mechanismen, um Fragmentierung zu reduzieren. Dazu gehort das Zusammenfassen von Blocken zu Blockgruppen. Dateien werden dann moglichst gleichmaßig auf Blockgruppen verteilt. Dadurch entsteht eine gleichmaßige Verteilung von Dateien (und freien Bereichen) auf dem Speichermedium. Im Gegensatz zu FAT werden nun Dateien immer in moglichst schlecht passende freie Bereiche gelegt, also kleine Dateien in große Lucken, um auf Großenanderungen der betreffenden Dateien ohne Verluste reagieren zu konnen. Hinter jeder Datei versucht
ext2
auch genug Platz zu lassen, so dass kleinere Großenanderungen von Dateien nicht prompt zu einer Fragmentierung fuhren. Dieser Mechanismus wurde durch
Extents
in
ext4
weiter verbessert. Durch die Verteilung der Daten uber den kompletten nutzbaren Bereich fallt im Serverbetrieb die Fragmentierung weniger ins Gewicht als beim Lesen im ?Burst“-Modus. So ordnen moderne
Festplatten-Scheduler
die Lese- oder Schreibanforderungen derart, dass Suchzeiten (z. B. des Schreib-Lese-Kopfes der Platte) minimal werden.
Eine weitergehende Reduzierung von Fragmenten erhalt man unter anderem durch das Dateisystem
XFS
, welches Schreiboperationen verzogert (delayed write) und im RAM moglichst komplett zwischenspeichert. Bei kleinen Dateien ist so die komplette Dateigroße dem Dateisystem bekannt, bevor die Datei auf den Datentrager geschrieben wird. So kann XFS eine optimale Stelle fur die Datei finden. Passt die Datei nicht komplett in das RAM, wird naturlich schon vorher begonnen den Puffer auf den Datentrager zu schreiben.
Bei der Beurteilung der Fragmentierung von Dateisystemen muss man zwischen Durchsatz und Performance unterscheiden: Performance ist die Datenrate, die ein Anwender mit einem einzelnen Prozess maximal vom Dateisystem (in MB/s) erreichen kann. Durchsatz ist die Datenrate, die das Dateisystem uber alle Anwender und Prozesse (mit mehreren, konkurrierenden IO-Anfragen) summiert liefern kann. In
Multitasking
- bzw.
Multiuser
-Systemen ist der Durchsatz oft sehr viel großer als die Performance. Das Betriebssystem Linux hat Algorithmen, die den Durchsatz, nicht die Performance des Systems erhohen. Starke Fragmentierung wirkt sich starker auf die Performance aus. Bei Systemen mit vielen konkurrierenden Anfragen an das Dateisystem wird eine (großere) Datei ohnehin nicht in einem Stuck gelesen, es werden gleichzeitig auch andere Anfragen getatigt.
Je nach Dateisystem gibt es verschiedene Methoden zur Defragmentierung. Wahrend es vor allem fur altere Dateisysteme tatsachlich keine hauseigenen Wege zur Defragmentierung gibt, sind fur moderne Dateisysteme Defragmentierprogramme verfugbar.
Folgende Methoden sind ublich:
- Kopieren der Daten auf eine leere Partition
- Diese Methode ist aufwandiger, aber zuverlassiger. Da jede Datei einzeln kopiert wird, werden auf der Quellpartition alle Teile der Datei zusammengesetzt, welche auf der Zielpartition in aufeinanderfolgenden Speicherblocken gespeichert werden. Alternativ konnen die Dateien in ein Archiv auf derselben Partition gespeichert werden; die Originaldateien werden anschließend geloscht und das Archiv wieder ausgepackt. Der Nachteil ist der doppelte Speicherplatzbedarf in Form einer zusatzlichen Partition bzw. von freiem Platz auf der Partition. Dafur ist diese Moglichkeit bei jedem Dateisystem anwendbar.
- Nutzung von Defragmentierprogrammen
- Dabei muss man zwischen Offline- und Onlinedefragmentierung unterscheiden. Bei ersterer darf das Dateisystem nicht eingebunden sein. Damit ist es zum Beispiel nicht moglich, die
Systempartition
eines laufenden Systems zu defragmentieren. Bei der Onlinedefragmentierung besteht dieses Problem in der Regel nicht. Ein Beispiel fur ein Dateisystem, das Onlinedefragmentierung unterstutzt, ist
XFS
, welches mit dem Programm
xfs_fsr
defragmentiert werden kann.
Neue Fragmentierung tritt unter den verschiedenen autonomen Systemdiensten fortlaufend auf. Jedes
Systemupdate
erzeugt zahlreiche neue Fragmente. Das Defragmentieren sollte daher wiederholt werden, wenn die Systemleistung nach Updates oder nach Neuinstallationen großer Applikationspakete, beispielsweise Office-Paketen, erheblich sinkt.
Unter MS-DOS wurden Dateiverzeichnis und Dateiinhalt nicht getrennt. Daher wurde ein Defragmentieren nur durch Schreiben an anderem Ort erreicht. Das Programm
defrag.exe
wurde mit
MS-DOS
Version 6 eingefuhrt und war eine eingeschrankte lizenzierte Version von Norton SpeedDisk. Es konnte ? wie die Vollversion von SpeedDisk ? in bestimmten Fallen zu einer wesentlichen Geschwindigkeitssteigerung auf den damals ublichen Computern (386/486) fuhren. Der Computer musste sich nach der Defragmentierung nicht mehr einzelne Bruchstucke einer Datei uber die gesamte Festplatte zusammensuchen. Dieses Phanomen konnte bei diesen alteren Computern sogar ?mitverfolgt“ werden, indem die Festplattengerausche analysiert wurden (Klackern von einer zur anderen Seite, spater: durchgangiges Rattern).
Defrag.exe
unter DOS erlaubte bis zu
Windows Me
(die letzte Version von DOS-basiertem Windows, siehe
Windows 9x
) ein genaues visuelles Verfolgen dieses Vorgangs. Beispielsweise wurden Blocke von Dateien zunachst im Lesezugriff grun markiert, eine freie Stelle auf der Festplatte gesucht und zum Schreiben rot unterlegt. Wurde keine genugend große freie Stelle innerhalb des Bearbeitungssegments gefunden, wanderten die Daten zumeist an das Ende der Festplatte. Nach dem Freiraumen wurde ebendieser Block wieder verschoben.
Unter DOS waren auch Programme von Fremdanbietern (
Norton
,
Digital Research
) verbreitet (DISKOPT.EXE/DSKSPEED.EXE). Gemeinsam ist den Defragmentierungsprogrammen, dass sie optional eine Sortierung nach Dateiname, -große oder -datum anbieten, die sich aber nicht oder kaum auf die Effizienz des Dateisystems auswirken. Je nach gewahlter Option (z. B. Sortierung nach Anderungsdatum oder nach bestimmten Dateinamenserweiterungen) lassen sich bestimmte Systemdateien an den Anfang der Partition verschieben, sodass dieser Bereich kaum noch von erneuter Fragmentierung betroffen ist. Dadurch kann sich der Prozess der kunftigen Fragmentierung verlangsamen und die Systemperformance bleibt langer stabil.
Mit dem neuen Dateisystem
NTFS
werden das Dateiverzeichnis und die Dateiinhalte getrennt geschrieben. Das Defragmentieren verlauft daher in mehreren Phasen fur die Verzeichnisse (Folder) und Dateien (Files). Ein erkennbarer Zeitgewinn tritt zuerst ein, wenn die Dateiverzeichnisse defragmentiert werden. Das ist mit Produkten von Fremdanbietern moglich.
1995 lizenzierte
Executive Software
den
Windows-NT
-
Quelltext
und veroffentlichte auf dessen Basis im April das Defragmentierungsprogramm
Diskeeper
fur
Windows NT 3.5
, spater auch fur den Nachfolger
Windows NT 3.51
. Dies verursachte jedoch große Probleme, sobald der Anwender ein
Service Pack
installierte, worauf sich Microsoft entschied, mit Executive Software zusammenzuarbeiten, um eine standardisierte API zur Defragmentierung in
Windows NT 4.0
zu integrieren.
[1]
Zwar war diese undokumentiert und Windows NT 4.0 hatte kein Defragmentierungsprogramm im Lieferumfang, aber zahlreiche Drittanbieter veroffentlichten Defragmentierungsprogramme fur Windows NT.
[1]
Windows 2000
enthalt ein Defragmentierungsprogramm von Microsoft. Eine genaue Vorgehensweise des Programms ist allerdings im Vergleich zu
Windows 9x
nur noch pauschal fur die gesamte Festplatte sichtbar. Einzelne bearbeitete Dateien werden zwar in der
Statusleiste
angezeigt, jedoch wird intern nur ein
Timer
verwendet, der den Fortschritt anzeigt. Mit
Windows Vista
wurde die grafische durch eine prozentuale Anzeige ersetzt.
Windows 7
defragmentiert sich bei geringer Systemauslastung von Zeit zu Zeit selbsttatig. Messungen zufolge bewirkt dies eine spurbare Performanceverbesserung wahrend des Hochfahrens und wahrend des Betriebs.
[2]
In diesem Artikel oder Abschnitt fehlen noch folgende wichtige Informationen:
Hilf der Wikipedia, indem du sie
recherchierst
und
einfugst
.
Die von
macOS
verwendeten Dateisysteme
APFS
und
HFS+
, historisch auch
HFS
, sind so ausgelegt, dass sie den großten freien Speicherblock auf der Festplatte suchen in dem eine Datei gespeichert werden soll. Erst wenn eine Datei nicht in den großten freien Speicherblock passt, wird die Datei aufgeteilt (fragmentiert) und der noch nicht geschriebene Teil wird in einem weiteren Block gespeichert.
Es wird gelegentlich behauptet, dass unixoide Betriebssysteme keine Defragmentierung benotigen wurden. Entstanden ist diese Behauptung aus dem Inhalt der Masterarbeit
A Fast Filesystem for UNIX
von
Bill Joy
,
Samuel Leffler
und
Kirk McKusick
. Die dort gemachten Aussagen beziehen sich jedoch nur auf das
UFS
, das in der Tat auch bei extrem ungunstiger Nutzung nicht merklich an Geschwindigkeit verliert, und sind nicht generell auf andere Dateisysteme ubertragbar.
Wie im Abschnitt ?Vermeiden und Verringerung von Fragmentierung“ erwahnt, sind in den verwendeten Dateisystemen zwar Gegenmaßnahmen implementiert, dennoch tritt Fragmentierung in der Praxis auf. Auch existieren diverse Programme zur Defragmentierung unter Unix und ahnlichen Betriebssystemen.
Unter Windows-NT-Betriebssystemen ab Windows 2000 steht nur Administratoren der mitgelieferte Defragmentierer zur Verfugung, normalen Benutzern wird der Zugriff verwehrt. Im Vergleich zu Fremdprodukten verfugt der auf
Diskeeper
basierende Defragmentierer jedoch nur uber einen eingeschrankten Funktionsumfang.
Ab Windows 7 lauft standardmaßig einmal wochentlich der Windows-eigene Defragmentier-Dienst im Hintergrund
[3]
. Dieser kann auch deaktiviert werden, wenn der Einsatz anderer Programme bevorzugt wird.
Im
Freewarebereich
sind beispielsweise
Ultimate Defrag
,
MyDefrag
und
Defraggler
bekannt. Sie unterstutzen eine Fragmentierung nach verschiedenen Kriterien, was erhebliche Laufzeit erspart.
Die unter
Linux
und
Unix
-Varianten verwendeten
Dateisysteme
beugen der Fragmentierung zumeist vor, deshalb wird weniger Wert auf die Defragmentierung gelegt.
Dennoch sind solche Dateisysteme nicht gegen Fragmentierung resistent.
ext2
kann durch
defrag
,
XFS
mit Hilfe von
xfs_fsr
defragmentiert werden.
Andere populare Dateisysteme wie beispielsweise
ReiserFS
und
ext3
/
ext4
stellen solche Programme zum Defragmentieren nicht zur Verfugung. Die einzige Losung zum Defragmentieren stellt das Kopieren auf eine leere Partition dar (s. o.).
Zur Defragmentierung des von Apple in
macOS
verwendeten
HFS+
lauft im Hintergrund ein Defragmentierungsprogramm, das dem Benutzer keinerlei Ausgabe prasentiert und die Defragmentierung bei
Festplattenzugriffen
automatisch unterbricht, so wie es
Microsoft
auch bei
Windows Vista
realisiert hat.
- ↑
a
b
Mark Russinovich:
Inside Windows NT Disk Defragmenting.
1. Mai 1997, archiviert vom
Original
am
13. Januar 2012
;
abgerufen am 17. Juni 2012
.
Info:
Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft. Bitte prufe Original- und Archivlink gemaß
Anleitung
und entferne dann diesen Hinweis.
@1
@2
Vorlage:Webachiv/IABot/www.windowsitpro.com
- ↑
c’t 5/2012
- ↑
Schedule Disk Defragmenter to run regularly