Ich frag mich nur wie man mit Software(!) Controllerprobleme beheben will - für mich ist das alles Marketingblabla bis mal jemand einwandfrei erklärt wie man Blockfragmentierung beheben will, wenn man nur auf die Dateisystemfragmente Einfluss hat (die einem SSD relativ egal sind da die Seektime so klein ist).
Naja, wenn man mal überlegt, was Blockfragmentierung eigentlich genau darstellt...
Ich kann natürlich nur Spekulieren, wie Write Combining genau arbeitet. Aber wenn ich ein SSD-Controller wäre und wollte möglichst flott schreiben, dann würde ich mir so lange wie möglich komplett leere Blöcke krallen, um etwas zu schreiben, denn dadurch spare ich mir das Auslesen und Zurückschreiben bereits existierender Daten.
Das Problem, dass ich dadurch erzeuge, ist folgendes - wenn ich nur kleine Dateien schreibe, dann werden die Blöcke nicht voll. Ich schreibe eine Serie von 256KB-Dateien, und meine SSD hat 1024KB-Blöcke. Zwar passen in jeden Block vier Stück, aber um Zeit zu sparen, knall ich erstmal jeweils nur eine Datei in einen Block, auch wenn er dadurch nur ein viertel voll wird. Damit umgehe ich die Write Amplification genannte Zeitverschiebung zwischen dem vom OS gesendeten Befehl und dem tatsächlichen Schreibvorgang auf der SSD. Genau auf dieses Ziel hin (Minimierung von Write Amplification) hat Intel nämlich ihren Controller entwickelt.
Und dann möchte ich eine 1024 KB Datei schreiben. Passt ja an sich in einen Block. Nur leider sind alle Blöcke schon teilweise belegt. Ich muss jetzt also die Datei aufteilen. Ist ja nicht schlimm, sind's halt zwei Blöcke statt einem. Wenn ich sequentiell lese, muss ich ja auch Blöcke der Reihe nach aktivieren.
Soweit, so gut. Jetzt nehmen wir aber mal an, es ist ein paar Monate später, und ich habe mir durch mein Verfahren richtig fett Blockfragmentierung eingefahren. Alle meine Blöcke sind teilweise belegt, keiner hat mehr als 10-20% freie Kapazität. Erstens ist jetzt mein Wear Leveling Algorithmus schwer am rödeln, weil die Platte auf über 80% Kapazität ist, zweitens hab ich noch jede Menge Datenleichen herumliegen, der mangels TRIM-Kommando nicht entfernt wurden, und drittens kann ich so gut wie gar nicht mehr sequentiell arbeiten. Wenn ich eine 2048 KB-Datei schreiben will, dann landet vielleicht 128KB in jeweils einem Block. Statt 2 Blöcken brauche ich 16. Und einen Block aktiv schalten, auslesen, Daten einfügen und zurückschreiben, das kostet Zeit. Zwar lese und schreibe ich die Blöcke immer mit meiner maximalen Lese/Schreibrate, aber wenn nur 128 KB von 1024 KB tatsächlich neue Daten sind, dann schreibe ich real nur noch mit einem Achtel meiner maximalen Rate. Und später beim Lesen sieht's ähnlich aus: Ich muss sechzehn Blöcke a 1024 KB aktiv schalten, um sechzehn mal 128 KB auszulesen. Latenzen sind kein Problem, denn Blockzugriff ist immer gleich schnell. Aber egal wie schnell ich auf Blöcke zugreife, es kommen kaum noch Nutzdaten raus.
Wie kann Software das Problem umgehen? Nun ja, in dem zum Beispiel von vorneherein verhindert wird, dass ich halbvolle Blöcke rumliegen lasse. Hyperfast Diskeeper behauptet ja, genau das zu tun: im Hintergrund werden Daten, die einfach in irgendwelche halb gefüllten Blöcke geklatscht wurden, identifiziert und so zusammengefasst, dass Blöcke komplett gefüllt werden. Ich laufe also nicht mehr in die Gefahr, in eine Situation zu kommen, in der ich nur noch in halbvolle Blöcke schreiben kann - Blockfragmentierung kann so erst gar nicht entstehen (oder zumindest nur viel viel langsamer).
Dieser PerfecktDisk Defragger macht im Modus 'Free Space Consolidation' wohl etwas ähnliches: er schiebt die Daten so zusammen, dass eine maximale Anzahl komplett freier Blöcke zurückbleiben, und gleichzeitig die Daten in den (jetzt vollständig) beschriebenen Blöcken möglichst unfragmentiert sind (eine 1024 KB Datei bekommt quasi ihren eigenen Block). Nur läuft der halt nicht im Hintergrund, sondern wie ein normaler Defragmentierer auch als direkt ausgeführter Task.
...Soweit Theorie und Spekulation
Die Marketingfuzzis und einige OCZ-Poster behaupten ja, dass es funktioniert. Gerade deswegen interessiert es mich brennend, ob man z.B. mit PerfectDisk tatsächlich eine extrem blockfragmentierte SSD "wiederbeleben" kann. Denn wenn das funktioniert, wäre das genau das Blockdefragmentierungstool, was alle brauchen!
Dementsprechend: bitte bitte Tests!