Solid-State Drive

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche

Ein Solid-State Drive (SSD) ist ein nicht-flüchtiger Datenspeicher ähnlich einer Festplatte. Im Unterschied zu einer Festplatte hat eine SSD keine beweglichen Teile. Die Daten speichert eine SSD in Flash-Bausteinen (SLC oder MLC). In diesem Artikel erfahren Sie wie SSDs intern funktionieren und welche Mechanismen die I/O Performance von SSDs beeinflussen können.

Die Artikel "Frische Chips" und "Schnelligkeit ist keine Hexerei" aus den ADMIN Magazinen 02 und 03/2011 zeigen wie SSDs intern funktionieren und wie Sie die optimale Performance aus einer SSD heraus holen.

SSD Aufbau

Eine SSD besteht aus einem Controllerchip, mehreren Flash-Bausteinen (zumeist zehn Stück) und teilwiese über einen DRAM Puffer (Cache). Der Controller kann diese Flash-Bausteine parallel ansprechen und somit den Datendurchsatz im Vergleich zu einem USB-Stick (der nur einen Flash-Baustein enthält) vervielfachen.

Speicherzelle

Je nach Typ speichert eine einzelne Speicherzelle ein oder mehrere Bits pro Zelle:

  • SLC (Single Level Cell) speichert 1 Bit pro Speicherzelle
  • MLC (Multi Level Cell) speichert 2 Bits pro Speicherzelle
  • TLC (Triple Level Cell) speichert 3 Bits pro Speicherzelle: diese sind allerdings nicht für SSDs, sondern für kostengünstige USB-Sticks und SD-Karten gedacht. Ein einzelner 8GB TLC-Flash Die von Intel/Micron mit 25nm Strukturbreite ist z.B. mit einer Größe von 131mm² um 20% kleiner als ein 8GB MLC-Flash Die von Intel/Micron.[1] Micron verbaut acht dieser 8GB Dies in ein TSOP (Thin small-outline package), das damit 64GB Speicherkapazität bietet.[2]

Pages

Mehrere Speicherzellen sind jeweils zu einer Page zusammengefasst. Eine Page ist die kleinste Struktur in einer SSD, die gelesen oder geschrieben werden kann. Eine Page ist in der Regel 4 Kibibyte (KiB) groß (= 4.096 Bytes). Bei den kommenden 25nm Flash Chips von Intel/Micron beträgt die Pagegröße 8 KiB.[3]

Blocks

Pages sind wiederum in Blocks zusammengefasst. Aktuell bilden zumeist 128 Pages einen Block (der damit 512 KiB = 524.288 Bytes enthält), bei den kommenden 25nm Chips von Intel/Micron bilden 256 Pages mit je 8 KiB einen Block mit 2 MiB.[3] Ein Block ist die kleinste Einheit, die gelöscht werden kann. Somit können zwar einzelne Pages einzeln gelesen oder beschrieben werden, beim Löschen müssen aber 128 bzw. 256 Pages (1 Block) auf einmal gelöscht werden.[4]

Planes, Dies, Packages

Auf diesem Die von Intel/Micron sind die vier Planes optisch gut erkennbar. In der höheren Auflösung werden sogar die einzelnen Blöcke sichtbar.
Mehrere Blocks sind zu einer Plane zusammengefasst (z.B. 1 Plane = 1.024 Blocks = 512 MiB. Mehrere Planes sind auf einem Die. Und mehrere Dies bilden ein TSOP (Thin small-outline package).[4]

DRAM Puffer (Cache)

Manche SSDs verfügen über einen DRAM Puffer zur Beschleunigung von Schreiboperationen oder Controller-internen Zwecken.[5] Um den Cache-Inhalt bei einem Stromausfall zu schützen, verfügen manche neueren SSD-Controller über einen integrierten Kondensator um bei einem Stromausfall die Daten von auf die non-volatile Flash-Chips zu schreiben.[6]

Bezüglich dieser Caches gibt es von Microsoft folgenden Hinweis:[7]

Does Write Caching make sense on SSDs and does Windows 7 do anything special if an SSD supports write caching?
Some SSD manufacturers including RAM in their devices for more than just their control logic; they are mimicking the behavior of traditional disks by caching writes, and possibly reads. For devices that do cache writes in volatile memory, Windows 7 expects flush commands and write-ordering to be preserved to at least the same degree as traditional rotating disks. Additionally, Windows 7 expects user settings that disable write caching to be honored by write caching SSDs just as they are on traditional disks.

Strukturbreite

Die Strukturbreite nimmt mit fortlaufender Entwicklung der Flash-Technologie laufend ab. Die Tabelle zeigt exemplarisch einige SSDs und die jeweilige Strukturbreite der eingesetzten Flash-Chips:

Jahr / Quartal Strukturbreite SSDs
2008 Q4 50nm (SLC) Intel X25-E SSDs
2009 Q3 34nm (MLC) Intel X25-M G2 Postville SSDs
2011 Q1 34nm (MLC) Intel 510 Series SSDs
2011 Q1 25nm (MLC) Intel 320 Series SSDs
2012 Q1 25nm (MLC) Intel 520 Series SSDs
2012 Q4 25nm (MLC) Intel DC S3700 Series SSDs

Schreibzugriffe

Damit Sie einzelne Pages innerhalb eines Blocks beschreiben können, muss der gesamte Block zuvor gelöscht werden. Bei einer fabrikneuen SSD sind alle Blöcke gelöscht. Es steht somit ausreichend Platz zum direkten Schreiben zur Verfügung. Bei steigendem Füllstand der SSD kann es passieren, dass der SSD Controller zuerst einen ganzen Block von bis zu 2MB lesen muss, obwohl vielleicht nur wenige Bytes davon geändert werden (Read-Modify-Write).[8][9]

Diese Tatsache kann bei volleren SSD somit zu geringeren Schreibraten und höheren Schreiblatenzen führen. Durch DRAM-Puffer und NCQ wird dieser Effekt aber abgefedert.[10] ATA TRIM vermeidet weiters, dass Daten, die im Filesystem gelöscht wurden, aber noch physikalisch auf der SSD vorhanden sind (weil im Filesystem nur der Inode entfernt wurde), unnötigerweise vom SSD-Controller erhalten werden. Wenn alle Daten eines Blocks alt sind, kann der SSD-Controller den Block gleich löschen, und muss kein längeres Read-Modify-Write ausführen. Auch die Garbage Collection liefert immer Hintergrund kontinuierlich gelöschte Blöcke.

ATA TRIM

Mit dem ATA Trim Kommando teilt das Betriebssystem einer SSD mit welche Datenbereiche nicht mehr benötigt werden und damit als gelöscht angesehen werden können.

Garbage Collection

Viele Hersteller von SSDs implementieren im SSD Controller eine Garbage Collection. In Zeiten ohne I/O Zugriffe fasst der Controller teilweise beschriebene Blöcke in volle Blöcke zusammen. Freigewordene Blöcke löscht er anschließend.[11][12]

Wear Leveling

Flash Zellen sind nur endlich oft beschreibbar, da die Zellen je nach Typ zwischen 3.000 und 100.000 Löschzyklen vertragen. Das blockweise Löschen (das zum Wiederbeschreiben notwendig ist) führt also zu einer Abnutzung (to wear out). Wear leveling ("Abnutzungs-Ausgleichung") soll diese Abnutzung möglichst gleichmäßig auf alle Zellen einer SSD verteilen, um eine möglichst lange Haltbarkeit der SSD zu erreichen.

Dazu verwendet Wear Leveling eine Zuordnungstabelle von den logischen Adressen des Betriebssystems zu den Adressen in der SSD. Ändert das Betriebssystem laufend die Daten an einer bestimmten logischen Adresse, würde ohne Wear Leveling der zugehörige Block auf der SSD schneller defekt werden als andere Blöcke. Durch Wear Leveling schreibt der SSD Controller diese geänderten Daten (die sich an der gleichen logischen Adresse des Betriebssystems befinden) immer auf unterschiedliche physikalische Blöcke der SSD. Die Zuordnungstabelle aktualisiert der SSD Controller dabei immer. Somit werden alle Blöcke der SSD gleichmäßiger beschrieben - die SSD hält länger.

Wear Leveling wird unterteilt in:[13]

  • dynamisches Wear Leveling (verteilt nur dynamische Daten, also solche die sich ändern)
  • statisches Wear Leveling (verschiebt auch statische Daten auf andere Blöcke - dies kostet zwar mehr Performance, vermeidet aber dass Zellen mit statischen Daten nur 1x während der gesamten SSD-Lebensdauer beschrieben werden, während andere Zellen schon ausfallen - die SSD-Lebensdauer ist damit höher als bei dynamischen Wear Leveling)

Write Amplification

Write Aplification bezeichnet das Verhältnis aus den zu schreibenden Daten zu den tatsächlich geschrieben Daten.[14]

Spare Area

Eine größere Spare Area kann die Performance und die Lebensdauer einer SSD erhöhen (Bildquelle: Intel).[15] Das Beispiel zeigt eine Intel X25-M G2 Postville SSDs aus dem Jahr 2009. Enterprise-SSDs wie Intel DC S3700 Series SSDs verfügen von Haus aus über eine große Spare Area, eine weitere Vergrößerung bringt bei diesen SSDs keine Vorteile.

SSDs haben eine sogenannte Spare Area - einen Datenbereich, der für das Betriebssystem nicht direkt sichtbar ist. Diese Spare Area nützt die SSD für:[16]

  • Read-Modify-Write
  • Wear Leveling und
  • Bad Block Replacement

Die Größe der Spare Area beträgt je nach Modell typischerweise zwischen 7% (Intel X25-M G2 Postville SSDs) und 78% (Intel 710 Series SSDs). Sie können diese herstellerseitig vorgegebene Spare Area von herkömmlichen SSDs noch weiter erhöhen (Over-Provisioning), bei Enterprise-SSDs die bereits über eine große Spare Area verfügen bringt eine weitere Vergrößerung jedoch meist keine Vorteile. Sofern die SSDs schon genutzt wurde, sollten Sie diese zuvor mit einem Secure Erase (ATA8-ACS SECURITY ERASE UNIT) löschen[17] (und davor ein Backup der Daten erstellen). Die Spare Area erhöhen Sie danach mit einer der folgenden Möglichkeiten, die jeweils dafür sorgen dass mehr Blöcke ungenutzt bleiben und somit wie die originale Spare Area für Read-Modify-Write, Wear Leveling und Bad Block Replacement genützt werden können.

Erhöhung der Spare Area:

  • durch Freihalten eines unpartitionierten Bereiches beim direkten Betrieb. Erstellen Sie bei einer 160 GB SDD beispielsweise nur eine primäre Partition mit 144 GB und belassen Sie den Rest frei.
  • durch Freihalten eines ungenutzten Bereiches beim Betrieb an einem RAID Controller.
  • per ATA ATA-Kommando ATA8-ACS SET MAX ADDRESS (Host Protected Area feature set). Unter Linux nutzen Sie dazu hdparm -N (siehe dazu SSD Over-Provisioning mit hdparm).[18] Standardmäßig ist HPA bei einer SSD nicht aktiviert:
root@ubuntu-10-10:~# hdparm -N /dev/sda

/dev/sda:
 max sectors   = 312581808/312581808, HPA is disabled
root@ubuntu-10-10:~# 

Maximal 27% Spare Area erscheinen sinnvoll, weil es danach zu dimishing returns kommen kann.[19][20] Intel's X25-E 64GB nutzt 27% Spare Area. Durch diese größere Spare Area steigt auch die IOPS Performance.[21]

Secure Erase

Wenn Sie eine gebrauchte SSD für neue Zwecke nutzen möchten, führen Sie anstelle einer normalen Formatiertung zuerst ein Secure Erase aus. Dabei löscht der SSD Controller alle Blöcke und Sie können die SSD wieder mit voller Performance nutzen.

Warnung: Mit einem Secure Erase löschen Sie unwiederbringlich alle Daten auf der SSD.

Weitere Informationen zum Durchführen eines Secure Erase unter Linux finden Sie im Artikel SSD Secure Erase.

Haltbarkeit

Die JEDEC hat zwei Standards zum einheitlichen Testen von SSDs verabschiedet:[22]

Spezialausführungen

Datenkompression

SSD Controller von Sandforce nutzen ein Feature namens Durawrite, das Schreibzugriffe einsparen soll.[23][24] Bei Performace-Tests kann es hier also relevant sein, ob man mit NULL-Daten oder Random-Daten testet (siehe Fio_Grundlagen#Welche Art von Daten setzt Fio ein?).

Dateisysteme

Manche Dateisysteme beinhalten spezielle Anpassungen für SSDs, etwa das btrfs.

Einzelnachweise

  1. Intel, Micron First to Sample 3-Bit-Per-Cell NAND Flash Memory on Industry-Leading 25-Nanometer Silicon Process Technology (Pressemitteilung)
  2. 25nm Triple-Level Cell NAND (YouTube)
  3. 3,0 3,1 Intel & Micron Announce 25nm NAND Flash Production, SSDs to get Bigger/Cheaper in Q4 (AnandTech)
  4. 4,0 4,1 http://www.anandtech.com/show/2738/5
  5. http://www.intel.com/support/ssdc/hpssd/sb/CS-029623.htm#9
  6. SF-1500 SSD Controller (Power Failure Protection: Super-capacitor circuit)
  7. http://blogs.msdn.com/b/e7/archive/2009/05/05/support-and-q-a-for-solid-state-drives-and.aspx
  8. http://en.wikipedia.org/wiki/Write_amplification#Basic_SSD_operation
  9. http://www.anandtech.com/show/2738/8
  10. http://www.heise.de/newsticker/meldung/IDF-Schnelle-SSDs-Update-197185.html
  11. http://de.wikipedia.org/wiki/Solid_State_Drive#Ma.C3.9Fnahmen
  12. http://en.wikipedia.org/wiki/Write_amplification#Garbage_collection
  13. http://en.wikipedia.org/wiki/Wear_leveling
  14. http://en.wikipedia.org/wiki/Write_amplification
  15. Over-provisioning an Intel SSD (Intel)
  16. The Impact of Spare Area on SandForce, More Capacity At No Performance Loss? Absatz: When Does Spare Area Matter? (AnandTech)
  17. https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase
  18. hdparm Manpage (Ubuntu 10.04 LTS)
  19. Enterprise Data Integrity and Increasing the Endurance of Your Solid-State Drive Seite 10 (IDF 2009)
  20. Using MLC NAND in Datacenters (SNIA)
  21. http://intelstudios.edgesuite.net/idf/2009/sf/aep/IDF_2009_MEMS002/orig_Slide45_1.jpg
  22. Standards zur Ermittlung von SSD-Haltbarkeit veröffentlicht (heise.de)
  23. http://www.sandforce.com/index.php?id=144
  24. Zellkulturen: Solid-State Disks bis 256 GByte (c't 12/2010, Seite 118)

Weitere Informationen


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer, tätig im Bereich Web Operations & Knowledge Transfer bei Thomas-Krenn, hat sein Studium zu Computer- und Mediensicherheit an der FH Hagenberg abgeschlossen. Er ist regelmäßig Autor in Fachzeitschriften und Speaker bei Konferenzen wie LinuxTag, LinuxCon Europe, OSMC u.v.m. Seine Freizeit gestaltet er sehr abwechslungsreich. In einem Moment absolviert er seinen Abschluss im Klavierspielen, im anderen läuft er beim Linzmarathon in der Staffel mit oder interessiert sich für OpenStreetMap.


Das könnte Sie auch interessieren

ATA Trim
SSD Performance optimieren
Synology NAS SSD Cache Konfiguration