Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

it:ssd_disk [2011/08/19 11:12]
wikisysop [Wear Leveling]
it:ssd_disk [2015/12/14 14:37] (aktuell)
pronto [TRIM Kommando]
Zeile 2: Zeile 2:
 =====Die neue Festplatten Generation Solid-State-Disk (SSD)===== =====Die neue Festplatten Generation Solid-State-Disk (SSD)=====
  
-Mit den neuen >><​fc #​008000>​Solid ​Dtate Disks (SSD)</​fc><<​((http://​de.wikipedia.org/​wiki/​Solid_State_Drive)) kam eine der interessantesten Innovation der letzten Zeit auf den Markt. Die Technologie ist an sich ist nicht neu und wird bereits zB bei USB-Sticks oder Fotokarten schon länger verwendet, jedoch die Technologie in den Bereich der Computerfestplatten zu transferieren,​ brachte einen enormen Geschwindigkeitszuwachs. Der Anwender bekommt unmittelbar ein Feedback, denn die Zugriffszeiten auf Dateien oder Programme auf seinem Rechner verkürzen sich eklatant. Wenn man diese Technologie aber etwas näher betrachtet, dann stößt man auch auf Probleme, welche uU nicht unerheblich sein können. Dieser Artikel soll in groben Zügen die Funktionsweise einer SSD beleuchten, die Probleme daraus ansprechen und die möglichen Gegenmaßnahmen aufzeigen.+Mit den neuen >><​fc #​008000>​Solid ​State Disks (SSD)</​fc><<​((http://​de.wikipedia.org/​wiki/​Solid_State_Drive)) kam eine der interessantesten Innovation der letzten Zeit auf den Markt. Die Technologie ist an sich nicht neu und wird so ähnlich ​bereits zB bei USB-Sticks oder Fotokarten schon länger verwendet, jedoch die Technologie in den Bereich der Computerfestplatten zu transferieren,​ brachte einen enormen Geschwindigkeitszuwachs. Der Anwender bekommt unmittelbar ein Feedback, denn die Zugriffszeiten auf Dateien oder Programme auf seinem Rechner verkürzen sich eklatant. Wenn man diese Technologie aber etwas näher betrachtet, dann stößt man auch auf Probleme, welche uU nicht unerheblich sein können. Dieser Artikel soll in groben Zügen die Funktionsweise einer SSD beleuchten, die Probleme daraus ansprechen und die möglichen Gegenmaßnahmen aufzeigen.
  
-SSD Speicher basieren auf das Prinzip der >><​fc #​008000>​Flash-Speicher</​fc><<​((http://​de.wikipedia.org/​wiki/​Flash-Speicher)). Informationen werden nicht wie bei herkömmlichen Festplatten durch magnetische Ausrichtung gespeichert,​ sondern in sogenannten >><​fc #​008000>​Flash-Zellen</​fc><<​ durch elektrische Ladungen. Im Prinzip kann eine Flash-Zelle eine Informationseinheit (Bit) speichern, jedoch wurden im Laufe der Zeit Zellen entwickelt, welche es erlauben mehr Informationseinheiten in einer Zelle zu speichern. Bei SSD Festplatten kommen sog. >><​fc #​008000>​NAND-Zellen</​fc><<​((http://​de.wikipedia.org/​wiki/​NAND-Flash)) zum Einsatz, welche grundsätzlich page- und blockorientiert arbeiten. Das bedeutet, dass mehrere NAND-Zellen zu Pages zusammengefasst werden, welche idR 512B - 4KiB groß sind. Diese >><​fc #​008000>​Pages</​fc><<​ werden wiederum zu >><​fc #​008000>​Blöcken</​fc><<​ zusammengefasst,​ welche, je nach Größe des Datenträgers,​ 64 oder 128 Pages besitzen. Bei einer modernen SSD Festplatte kommen idR 4KiB Pages und Blöcke mit 128 Pages, was einer Blockgröße von 512KiB entspricht, zum Einsatz. Flash-Speicher besitzen prinzipbedingt die Eigenschaft nur blockweise lesen bzw. schreiben zu können, was sich bei näherer Betrachtung auch als eines der Haupt-Probleme von SSD Festplatten herausstellt.+SSD Speicher basieren auf das Prinzip der >><​fc #​008000>​Flash-Speicher</​fc><<​((http://​de.wikipedia.org/​wiki/​Flash-Speicher)). Informationen werden nicht wie bei herkömmlichen Festplatten durch magnetische Ausrichtung gespeichert,​ sondern in sogenannten >><​fc #​008000>​Flash-Zellen</​fc><<​ durch elektrische Ladungen. Im Prinzip kann eine Flash-Zelle eine Informationseinheit (Bit) speichern, jedoch wurden im Laufe der Zeit Zellen entwickelt, welche es erlauben mehr Informationseinheiten in einer Zelle zu speichern. Bei SSD Festplatten kommen sog. >><​fc #​008000>​NAND-Zellen</​fc><<​((http://​de.wikipedia.org/​wiki/​NAND-Flash)) zum Einsatz, welche grundsätzlich page- und blockorientiert arbeiten. Das bedeutet, dass mehrere NAND-Zellen zu Pages zusammengefasst werden, welche idR 512B - 4KiB groß sind. Diese >><​fc #​008000>​Pages</​fc><<​ werden wiederum zu >><​fc #​008000>​Blöcken</​fc><<​ zusammengefasst,​ welche, je nach Größe des Datenträgers,​ 64 oder 128 Pages besitzen. Bei einer modernen SSD Festplatte kommen idR 4KiB Pages und Blöcke mit 128 Pages zum Einsatz, was einer Blockgröße von 512KiB entspricht. Flash-Speicher besitzen prinzipbedingt die Eigenschaft nur blockweise lesen bzw. schreiben zu können, was sich bei näherer Betrachtung auch als eines der Haupt-Probleme von SSD Festplatten herausstellt.
   ​   ​
 ====Read-Modify-Erase-Write==== ====Read-Modify-Erase-Write====
-Solange ein Block vollständig leer ist, muss der Festplattencontroller die Daten resp. die Seiten/​Pages ​nur in den Block schreiben, womit die höchste Performance der SSD zustande kommt. Findet der Festplattencontroller jedoch bereits einige beschriebene Pages im Block vor, muss der gesamte Inhalt des Blockes gelesen ​(Read) ​und in den Cache geladen werden, dort werden die für diesen Speichervorgang eigentlichen Daten bzw. Pages dazu geladen (Modify), der gesamte Block wird gelöscht (Erase) und der Inhalt aus dem Cache wieder zurück in den Block geschrieben (Write). Das hört sich nicht nur umständlich an, es ist umständlich und wird natürlich immer deutlicher bemerkbar, je mehr eine Platte in Benutzung ist, bzw. je weniger freie Blöcke auf einer Platte vorhanden sind.+Solange ein Block vollständig leer ist, muss der Festplattencontroller die Daten nur in den Block schreiben, womit die höchste Performance der SSD zustande kommt. Findet der Festplattencontroller jedoch bereits einige beschriebene Pages im Block vor, muss der gesamte Inhalt des Blockes gelesen und in den Cache geladen werden ​(READ), dort werden die für diesen Speichervorgang eigentlichen Daten bzw. Pages dazu geladen (MODIFY), der gesamte Block wird gelöscht (ERASE) und der Inhalt aus dem Cache wieder zurück in den Block geschrieben (WRITE). Das hört sich nicht nur umständlich an, es ist umständlich und wird natürlich immer deutlicher bemerkbar, je mehr eine Platte in Benutzung ist, bzw. je weniger freie Blöcke auf einer Platte vorhanden sind.
  
 ====Write Amplification==== ====Write Amplification====
Zeile 13: Zeile 13:
  
 ====Wear Leveling==== ====Wear Leveling====
-Unter dem Begriff >><​fc #​008000>​Wear Leveling</​fc><<​((http://​en.wikipedia.org/​wiki/​Wear_leveling)) versteht man eine Funktion, welche verhindern soll, dass einzelne, stark frequentierte Bereiche ungleich höher belastet werdenals andere. Da jede NAND-Zelle nur eine bestimmte Lebenserwartung hat, bei einer modernen SSD Festplatte sind das in etwa 10.000 Schreibzyklen,​ soll durch Waer Leveling eine gleichmäßige Benutzung des gesamten Datenträgers erreich werden. ​  +Unter dem Begriff >><​fc #​008000>​Wear Leveling</​fc><<​((http://​en.wikipedia.org/​wiki/​Wear_leveling)) versteht man eine Funktion, welche verhindern soll, dass einzelne, stark frequentierte Bereiche ungleich höher belastet werden als andere. Da jede NAND-Zelle nur eine bestimmte Lebenserwartung hat, bei einer modernen SSD Festplatte sind das in etwa 10.000 Schreibzyklen,​ soll durch Waer Leveling eine gleichmäßige Benutzung des gesamten Datenträgers erreich werden. ​  
  
 Da weder das Betriebssystem noch das Dateisystem Kenntnis über die physikalischen Strukturen einer Festplatte hat, sondern diese unter Angabe eines logischen Adressblocks (>><​fc #​008000>​LBA</​fc><<​((http://​de.wikipedia.org/​wiki/​Logical_Block_Addressing)) -> Logical Block Address) mit dem Festplattencontroller kommunizieren,​ kann vom Betriebssystem keine Optimierung bzw. gleichmäßige Abnutzung einer Festplatte durchgeführt werden. Der Festplattencontroller pflegt eine >><​fc #​008000>​LBA to PBA Lookup Table</​fc><<​ und kennt dadurch die Zuordnung einer LBA mit den zugrunde liegenden physikalischen Blöcken (>><​fc #​008000>​PBA</​fc><<​ -> Physical Block Address). Somit kann der Festplattencontroller dieses LBA Mapping durchaus dynamisch gestalten. Da weder das Betriebssystem noch das Dateisystem Kenntnis über die physikalischen Strukturen einer Festplatte hat, sondern diese unter Angabe eines logischen Adressblocks (>><​fc #​008000>​LBA</​fc><<​((http://​de.wikipedia.org/​wiki/​Logical_Block_Addressing)) -> Logical Block Address) mit dem Festplattencontroller kommunizieren,​ kann vom Betriebssystem keine Optimierung bzw. gleichmäßige Abnutzung einer Festplatte durchgeführt werden. Der Festplattencontroller pflegt eine >><​fc #​008000>​LBA to PBA Lookup Table</​fc><<​ und kennt dadurch die Zuordnung einer LBA mit den zugrunde liegenden physikalischen Blöcken (>><​fc #​008000>​PBA</​fc><<​ -> Physical Block Address). Somit kann der Festplattencontroller dieses LBA Mapping durchaus dynamisch gestalten.
Zeile 29: Zeile 29:
 Mit der Eigenschaft,​ die Festplatte mit möglichst vielen freien Blöcken zu versorgen, ist die Garbage Collection eine der Hauptkomponenten,​ wenn es um die Erhaltung der Performance einer SSD Festplatte geht, jedoch hat sie für sich alleine gestellt einen gravierenden Nachteil. Wie oben beim Wear Leveling schon erwähnt, bekommt der Festplattencontroller erst dann Kenntnis davon, welche Pages gelöscht werden können, wenn vom Betriebssystem die Aufforderung kommt Daten in eine bestimmte LBA zu speichern, weil dadurch der alte Inhalt offensichtlich nicht mehr gebraucht wird. Zwar hat die Garbage Collection immer noch einiges zu tun, weil das Wear Leveling bereits einiges als gelöscht markiert aber gerade bei stark frequentierten Systemen mit hoher Datenfluktuation bleibt doch einiges erst mal unbemerkt. Dadurch passiert es dann natürlich relativ häufig, dass durch die Garbage Collection Pages mit zusammengefasst und verschoben werden, welche eigentlich aus Sicht des Dateisystems schon gelöscht wurden. Mit der Eigenschaft,​ die Festplatte mit möglichst vielen freien Blöcken zu versorgen, ist die Garbage Collection eine der Hauptkomponenten,​ wenn es um die Erhaltung der Performance einer SSD Festplatte geht, jedoch hat sie für sich alleine gestellt einen gravierenden Nachteil. Wie oben beim Wear Leveling schon erwähnt, bekommt der Festplattencontroller erst dann Kenntnis davon, welche Pages gelöscht werden können, wenn vom Betriebssystem die Aufforderung kommt Daten in eine bestimmte LBA zu speichern, weil dadurch der alte Inhalt offensichtlich nicht mehr gebraucht wird. Zwar hat die Garbage Collection immer noch einiges zu tun, weil das Wear Leveling bereits einiges als gelöscht markiert aber gerade bei stark frequentierten Systemen mit hoher Datenfluktuation bleibt doch einiges erst mal unbemerkt. Dadurch passiert es dann natürlich relativ häufig, dass durch die Garbage Collection Pages mit zusammengefasst und verschoben werden, welche eigentlich aus Sicht des Dateisystems schon gelöscht wurden.
  
-An dieser Stelle setzt das >><​fc #​008000>​TRIM</​fc><< ​Kommando((http://​en.wikipedia.org/​wiki/​TRIM)) ein. Dieses Kommando muss sowohl vom Betriebssystem,​ wie auch vom Dateisystem und vom Festplattencontroller unterstützt werden. Wird nun durch das Betriebssystem eine Datei gelöscht, werden mit der Angabe der zu löschenden LBAs nicht nur diese an das Dateisystem weitergegeben,​ sondern auch an den Festplattencontroller. Somit weiß der Festplattencontroller bereits dann, welche seiner Pages ungültig geworden sind, wenn der Inhalt vom Betriebssystem (bzw vom Anwender) tatsächlich gelöscht wird und muss nicht erst warten, bis das Betriebssystem einen Bereich überschreiben möchte, von dem es die Information hat, dass dieser eigentlich wieder leer bzw. verwendbar sein sollte.+An dieser Stelle setzt das >><​fc #008000>ATA TRIM</​fc><<​((http://​en.wikipedia.org/​wiki/​TRIM)) ​Kommando ​ein. Dieses Kommando muss sowohl vom Betriebssystem,​ wie auch vom Dateisystem und vom Festplattencontroller unterstützt werden. Bei Linux ist das zB erst ab Kernel Version 2.6.33 und zB auf dem ext4 Dateisystem der Fall. Wird nun durch das Betriebssystem eine Datei gelöscht, werden mit der Angabe der zu löschenden LBAs nicht nur diese an das Dateisystem weitergegeben,​ sondern auch an den Festplattencontroller. Somit weiß der Festplattencontroller bereits dann, welche seiner Pages ungültig geworden sind, wenn der Inhalt vom Betriebssystem (bzw vom Anwender) tatsächlich gelöscht wird und muss nicht erst warten, bis das Betriebssystem einen Bereich überschreiben möchte, von dem es die Information hat, dass dieser eigentlich wieder leer bzw. verwendbar sein sollte.
  
-In vielen Foren und Erklärungen kann man herauslesen,​ dass TRIM eine eigene Löschroutine besitzt, welche unabhängig von der internen Garbage Collection handelt, was so allerdings nicht stimmt. TRIM optimiert lediglich die SSD-interne Garbage Collection, ​zT sogar erheblich, je nach Verwendungszweck des betroffenen ​Rechners.+In vielen Foren und Erklärungen kann man herauslesen,​ dass TRIM eine eigene Löschroutine besitzt, welche unabhängig von der internen Garbage Collection handelt, was so allerdings nicht stimmt. TRIM optimiert lediglich die SSD-interne Garbage Collection ​oder versetzt den Controller zumindest in die Lage eigene Routinen anzusteuernwas uU auch ein sofortiges Löschen der betroffenen ​Bereiche zur Folge haben kann - aber nicht muss!
  
 **Verwandte Artikel:** **Verwandte Artikel:**
-[[:​win:​disable_defrag_ssd|-> Win 7; W2K8R2: ​Auto-Defragmentierung ​bei Verwendung von SSD deaktivieren]] +[[:​it:​check_trim|→ Die Problematik gelöschter Dateien auf SSD Festplatten]] 
-[[:win:advanced_format_hd|-Advanced Format Festplatten]] +[[:​win:​disable_defrag_ssd|→ Win 7; W2K8R2: ​Laufwerksoptimierung ​bei Verwendung von SSD Festplatten ​deaktivieren]] 
-[[:​win:​chkdsk|-> Festplatten mit chkdsk überprüfen]] +[[:win:enable_TRIM|→ (2008r2; Win 7) TRIM Support bei SSD Festplatten ein-/​ausschalten]] 
-[[it:​hd_geometrie|-> Festplattengeometrie]] +[[:​mac:​activate_trim|→ Mac 10.7; TRIM Support bei Non-Apple SSDs freischalten]] 
-[[:​it:​cluster|-> Cluster: Windows Einheit auf Datenträgern]]+[[:​it:​flash_ssd|→ SSD Festplatte sicher löschen]] 
 +[[:​win:​advanced_format_hd|→ ​Advanced Format Festplatten]] 
 +[[:​win:​chkdsk|→ Festplatten mit chkdsk überprüfen]] 
 +[[it:​hd_geometrie|→ Festplattengeometrie]] 
 +[[:​it:​cluster|→ Cluster: Windows Einheit auf Datenträgern]] 
 +[[:​it:​mbr|→ Master Boot Record (MBR)]] 
 +[[:​it:​ebr|→ Extended Boot Record (EBR)]]
  
  
  --- //pronto 2011/08/05 14:29//  --- //pronto 2011/08/05 14:29//
 {{keywords>​ssd solid state disk trim garbage collection wear leveling Write Amplification read modify erase write löschen nand flash speicher}} {{keywords>​ssd solid state disk trim garbage collection wear leveling Write Amplification read modify erase write löschen nand flash speicher}}
it/ssd_disk.1313745132.txt.gz (37008 views) · Zuletzt geändert: 2011/08/19 11:12 von wikisysop
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0