(19.11.2015)Conqi schrieb: [ -> ] (18.11.2015)mowny schrieb: [ -> ]Das ist doch einfach. Die vom System als unbenutzt markierten Bereiche werden irgendwann wieder zum Schreiben genutzt, der Gesamtspeicher wird ja aus Systemsicht nicht mehr, auch wenn die SSD mehr Blöcke hat als sie mindestens bräuchte und die lustig kreuz und quer gemappt werden. Daher können nur maximal so viele Blöcke aus SSD-Sicht in Benutzung sein, wie die SSD aus Systemsicht groß ist. Mit jedem Schreibvorgang wird also ein Block aus dem Reservepool geholt und einer wieder freigegeben.
Aber ich dachte die SSD verteilt die Daten selbst, um gleichmäßige Schreiblast zu erzielen. Also nicht dass das System fest sagt "schreibe das in Block 25", sondern "schreibe das irgendwohin" und die SSD entscheidet dann, wohin damit. Oder habe ich da bereits was falsch verstanden? Denn wenn das so abläuft, dann wäre die SSD ja gar nicht in der Lage zu erkennen, ob sie Daten gefahrlos überschreiben kann. Wenn hingegen das System entscheidet, wohin geschrieben wird, dann bräuchte die SSD ja keine Intelligenz bzgl. der gleichmäßigen Verteilung von Schreibvorgängen.
Das System sieht eigentlich die SSD nur als Speichermedium mit $GANZVIEL Sektoren und sagt der SSD "schreibe das in Sektor $bla bis Sektor $blubb", und wenn das System SSD-aware ist und die echte Blockgröße der SSD rausfinden kann, dann richtet es eine Schreibvorgänge möglichst an den Blockgrenzen der SSD aus, um das Beschreiben von Teilblöcken zu vermeiden (weil das zu den bereits beschriebenen Problemen führt; etwas nicht ganz unähnliches passiert beim nicht korrekt ausgerichteten Schreibzugriff auf Platten, die intern 4K-Sektoren haben aber nach außen so tun als hätten sie herkömmliche 512byte große).
Die SSD hat aber eine interne Blockverwaltung, die dann halt sagt "Der Block von Sektor $bla bis Sektor $rhabarber ist jetzt in dem Chip da drüben, dritte Reihe links, der hat noch nicht so viele Zyklen runter; dafür ist der Platz wo der Block vorher hingemappt war jetzt wieder frei". Auf diese Blockverwaltung hat das System normalerweise keinen Zugriff, dafür sind sehr spezielle Tools notwendig. Die dazugehörige Mappingtabelle (die idR auch gleich die Defektmarkierung miterledigt) ist natürlich immens wichtig - egal ob die irgendwo am Stück liegt oder jeder Block seinen Datenanteil selber trägt; wenn darin ein Fehler auftritt, ist die SSD erstmal hin, mit etwas Glück ist die SSD mit Erase noch wiederbelebbar, aber die Daten sind weg ...
Bei einer neuen SSD ist anfangs noch gar kein Block belegt, auf einen beliebigen Lesezugriff antwortet die SSD nur mit Nullen. Ähnlich wie bei einem sparse file. Das funktioniert normalerweise auch umgekehrt: Wenn man einen Block nur mit Nullen beschreibt, sagt man damit der SSD, daß dieser Block frei ist, auch ohne TRIM. Das sollte man aber nur mit ganzen Blöcken tun, einfach den gesamten freien Platz mit Nullen beschreiben kann aber je nach Granularität der Blockverwaltung suboptimal sein, weil man damit der SSD ggf. einen Löschzyklus für
alle teilbelegten Blöcke aufzwingt.
Diese teilbelegten Blöcke sind aber auch mit TRIM ein Problem, weil sie bei zunehmender Fragmentierung dazu führen, daß irgendwann alle im Rahmen der Nennkapazität belegbaren Blöcke auch belegt sind und die SSD von TRIM kaum noch profitiert, weil nur noch selten ein kompletter Block frei wird und zurück in den Pool kann. In diesem Fall ist der Pool, genau wie bei einem System ohne TRIM nach mindestens einmaligem Schreiben in alle Blöcke, auf die Reservekapazität beschränkt.
(19.11.2015)Leon schrieb: [ -> ]TRIM hat übrigens keinen direkten Einfluss auf die Lebensdauer
Indirekt schon - wenn der Pool größer ist, weil auch mal wieder Blöcke zurückkommen ohne daß neue belegt werden, kann die SSD besser wear leveling machen.
Zitat:sondern nur auf die Performance. Moderne SSDs haben angeblich auch bei Systemen ohne TRIM keinen deutlichen Performanceverust wie die alten Generationen, wobei ich nicht genau weiß, wie das dann gelöst wurde.
Verbessertes wear leveling, größerer Reservepool (und wenn es nur so ist, daß der absolut größer geworden ist durch die insgesamt vergrößerte Kapazität heutzutage). Andererseits, heutzutage haben die SSDs ja häufig nicht mehr Vielfache von 30GB als Kapazität, sondern von 32, beides allerdings in "Plattenherstellerzählung", so daß immer noch Reserve bis zu den "echten" 32GB auf den Flashchips ist; dadurch hat eine SSD mit 64GB Nennkapazität absolut knapp mehr Reserveblöcke als eine mit 30GB. Sieht erstmal günstiger aus weil mehr nutzbare GB fürs Geld, rächt sich aber, wenn wie oben ausgeführt alle Blöcke belegt sind und der Pool durch defekte Blöcke sowieso schon kleiner wird.