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 teilweise ü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

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 25nm Flash Chips von Intel/Micron beträgt die Pagegröße 8 KiB.[3]

Blocks

Pages sind wiederum in Blocks zusammengefasst. Zumeist bilden 128 Pages einen Block (der damit 512 KiB = 524.288 Bytes enthält), bei den 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) (en.wikipedia.org).[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
2013 Q2 20nm (MLC) Intel DC S3500 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 random-write Performance einer SSD erhöhen (Bildquelle: Intel).[15] Das Beispiel zeigt eine 800 GB Intel DC S3500 Series Enterprise-SSD.

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 SMART Attribute einer Intel SSD umfassen unter anderem auch das Attribut mit der Bezeichnung Available Reserved Space. Es gibt die Anzahl der noch verbleibenden Reserveblöcke an. Wenn sich der Wert dem eingestellten Grenzwert annähert ist die SSD zu ersetzen. Mittels smartcl kann dieser Wert angezeigt werden.

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). 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-14-04:~# hdparm -N /dev/sda

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

Secure Erase

Wenn Sie eine gebrauchte SSD für neue Zwecke nutzen möchten, können Sie diese mit einem Secure Erase vollständig löschen. Dabei löscht der SSD Controller alle Blöcke und Sie können die SSD wieder mit voller Performance nutzen.

Wenn Sie eine gebrauchte SSD neu formatieren (z.B. mit NTFS ab Windows 7, Ext4 ab mke2fs 1.41.10 oder XFS ab xfsprogs 3.1.0) ist kein Secure Erase erforderlich. Die Formatierungsroutinen führen ein ATA Trim für die ungenutzten Bereiche aus, somit kann die SSD wieder mit der optimalen Performance arbeiten.

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:[19]

Spezialausführungen

Datenkompression

SSD Controller von Sandforce nutzen ein Feature namens Durawrite, das Schreibzugriffe einsparen soll.[20] 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 (micron.com, 17.08.2010)
  2. 25nm Triple-Level Cell NAND (youtube.com)
  3. 3,0 3,1 Intel & Micron Announce 25nm NAND Flash Production, SSDs to get Bigger/Cheaper in Q4 (anandtech.com, 30.01.2010)
  4. 4,0 4,1 The SSD Anthology: Understanding SSDs and New Drives from OCZ (anandtech.com, 18.03.2009)
  5. Solid State Drives and Caching (intel.com)
  6. SF-1500 SSD Controller (Power Failure Protection: Super-capacitor circuit) (sandforce.com)
  7. Support and Q&A for Solid-State Drives (blogs.msdn.com, 05.05.2009)
  8. Write amplification (en.wikipedia.org)
  9. The SSD Anthology: Understanding SSDs and New Drives from OCZ (anandtech.com, 18.03.2009)
  10. IDF: Schnelle SSDs [Update] (heise.de, 19.08.2008)
  11. Solid State Drive (de.wikipedia.org)
  12. Write amplification (en.wikipedia.org)
  13. Wear leveling (en.wikipedia.org)
  14. Write amplification (en.wikipedia.org)
  15. Intel® SSDs in Server Storage Applications (intel.de) Kapitel 3.1 Adjusting Usable Capacity – Over-Provisioning (Seite 15)
  16. The Impact of Spare Area on SandForce, More Capacity At No Performance Loss? Absatz: When Does Spare Area Matter? (anandtech.com, 03.05.2010)
  17. ATA Secure Erase (ata.wiki.org)
  18. hdparm Manpage (Ubuntu 14.04 LTS) (manpages.ubuntu.com)
  19. Standards zur Ermittlung von SSD-Haltbarkeit veröffentlicht (heise.de, 27.09.2010)
  20. Zellkulturen: Solid-State Disks bis 256 GByte (c't 12/2010, Seite 118) (heise.de)

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

SSD Performance optimieren
SSD RAID Performance-Tests
Synology NAS SSD Cache Konfiguration