Was sind Harddisks (HDDs)
Harddisks bestehen aus rotierenden Scheiben mit magnetischem Material. Die Daten werden somit mittels Magnetisierung gespeichert und bleiben auch ohne Strom für längere Zeit erhalten. Das Schreiben und Lesen erfoglt mittels Schreib-/Leseköpfen, die mittels Schrittmotoren an die entsprechende Position (Spur) gebracht werden.
Bei den HDD Herstellern hat es in den letzten Jahren eine massive Konzentration auf nur noch wenige Anbieter gegeben: Seagate, Western Digital sowie Toshiba.
Was ist Flash / sind SSDs
Flash/SSD Technologie gibt es inzwischen seit fast 20 Jahren. Im Storage Bereich wird Flash aber erst seit ca. 5-10 Jahren verstärkt eingesetzt. Bei Flash werden die Daten nicht auf beweglichen Teilen sondern in Silicon "geflashed". Neben Write Cache Memories auf Flash/SSD Basis wurden vor einigen Jahren bei den Storage Herstellern "Flash Cache Karten" eingeführt, die als zusätzliches Lese Cache in den Storages verwendet wurden. Aktuell setzen sich die Flash Drives für High Performance Anwendungen immer mehr durch, die sowohl als Teil einer klassischen Storage als auch in reinen "All Flash Storages", die auf niedrigste Zugriffslatenz hin optimiert sind, Verwendung finden.
Die aktuellen Harddisktechnologien
Aktuell gibt es drei grundsätzlich Technologien - Serial ATA (SATA), Serial attached SCSI (SAS) sowie Fibre Channel (FC). Das FC Interface war lange Zeit "das" System im Enterprise Storage, inzwischen setzen immer mehr Storage Hersteller auf SAS und SATA.
SAS ist die Technologie, die vor allem bei schnellen Harddisks zum Einsatz kommt, während SATA bei PCs/Notebooks oder in Storages bei großen, langsameren Platten Verwendung findet. Diese Unterscheidung wird in den nächsten Jahren immer mehr verschwimmen, weil die Hersteller inzwischen auch schon große, langsamere Harddisks mit SAS Interface anbieten und gleichzeitig Funktionalitäten im SATA Bereich Einzug halten, die eigentlich dem High End Bereich zugezählt werden - wie etwa Native Command Queuing (NCQ). Native Command Queuing ist die Bezeichnung für das Umsortieren der Befehle an das Speichermedium aus Performancegründen, wobei dieser Eingriff in die Reihenfolge entweder vom Kontroller oder teilweise auch von der Harddisk selbst ausgeführt werden kann, damit der Schreib/Lesekopf möglichst kurze Wege hat. Dadurch werden Zugriffszeiten verringert, weil das Positionieren des Schreib/Lesekopfes einen großen Teil der Zugriffszeit ausmacht.
Im SAS und FC Bereich wurden die HDDs mit 10k rpm bzw. 15k rpm (rpm = rotation per minute = Umdrehungen pro Minute) eingesetzt - die Hersteller verabschieden sich aktuell aber von den 15k rpm Disken.
Im SATA Bereich findet man zwischen 3.600 rpm und 7.200 rpm, wobei letzteres typischerweise in Storages genutzt wird. In Notebooks und Desktops kommen die langsameren HDDs zum Einsatz.
Die Daten werden in Sektoren gespeichert, wobei es hier folgende Größen gibt:
-
512Byte bzw. 4096Byte (=4k) wobei man mit 512Bytes maximal 2TB in einer HDD - mit dem alten DOS style Master Boot Record - direkt addresiert werden können. Daher bieten die Hersteller bei größeren Disken wahlweise 4k Sektorsize an
-
520Byte, 528Byte gibt es exklusive bei SAS Harddisks, wobei die Nutzkapazität immer 512Bytes ist, die zusätzlichen Bytes/Sektor werden für eine Checksumme genutzt und kommen nur in Storages zur Verendung
Für den Server / Storage Betrieb werden aktuell 2.5 Zoll sowie 3.5 Zoll Harddisks verwendet (bei Notebooks geht es hinunter bis unter 1 Zoll).
Spezifikationen und was diese bedeuten
Die Tabelle stellt den Stand vom April 2014 dar und wird bei Bedarf aktualisiert. Fett geschriebene Werte sind die aktuell in Storage genutzten Kapazitäten.
Bezeichnung |
Wertebereiche SAS |
Wertebereiche SATA |
Bemerkung |
Kapazität
|
300GB, 450GB, 600GB, 900GB, aber auch schon TB
|
1TB, 2TB, 3TB, 4TB, 5TB, 6TB
|
Bei Seagate geht die Tendenz dahin, für große HDDs sowohl SAS als auch SATA anzubieten.
|
mittlere Positionierungszeit
(average Seek Time)
|
zwischen 3ms und 4ms
|
über 4ms bis zu 8ms
|
Mittlere Zeit, die es braucht den Schreib/Lesekopf auf eine bestimmte Spur zu bringen - typischerweise messen die Hersteller eine Bewegung des Schreib/Lesekopfes um 1/3 der Spuren.
|
durchschnittlichen Rotationslatenz
(Rotation Latency)
|
um die 2ms
|
um die 4ms
|
Wie lange es durchschnittlich dauert, nachdem der Kopf sich in einer Spur positioniert hat, bis die benötigten Daten durch die Rotation der Disk am Kopf vorbei kommen. Wir errechnet aus der halben Zeit für eine Umdrehung der Disk.
|
Zugriffszeit
|
zwischen 5ms und 6ms
bei großen Kapazitäten auch 8. bis 9ms.
|
über 6ms bis 12ms
|
Besteht aus der Seek Time sowie der Rotation Latency.
|
Sequenzielle Leserate
in MB / sec (MBPS)
|
zwischen 100MB/sec und über 220MB/sec
|
ab 80MB/sec bis über 200MB/sec
|
Die Bereichsangaben sind der Geometrie von Harddisks geschuldet - die inneren Spuren fassen einfach weniger Daten wie die äußeren Spuren, zusätzlich wirken sich die Umdrehungen pro Minute aus.
|
Read Cache
|
32MB bis zu 128MB
|
4MB bis zu 32MB (im Storage Bereich teilweise bis zu 128GB)
|
Durch das Memory in den HDDs werden "ganze Spuren" eingelesen und zwischengespeichert, wenn ein Zugriff auf einen anderen Block in der Spur erfolgt, kann dieser ohne Verzögerung sofort geliefert werden.
|
Übertragungs- geschwindigkeit / Interface
|
6GByte/sec und seit kurzem auch 12GByte/sec
|
3GByte/sec und 6GByte/Sec
|
Im Storage Umfeld setzt sich 6GByte/sec aktuell durch, die 12Gyte/sec kommen vereinzelnt schon.
|
Was darf man sich von Harddisks erwarten?
Wenn man bei einer Harddisk eine Zugriffszeit von 5ms hat, und nur mit Einzelblock I/Os = I/Os per Sec (IOPS) (zB: Zugriff über Indexes auf Tabellen) auf die Daten zugreift, bedeutet dies, dass in einer Sekunden genau 200 verschieden Datenblöcke gelesen werden können. In der Praxis liegen aber gerade bei Index Zugriffen immer einige Blöcke "nebeneinander" wodurch das Cache auf den Harddisks regelmäßig Treffer hat - und somit die IOPS Werte verbessert.
Wenn die Daten auf der Harddisk jedoch hintereinander liegen, so kann man mit 100MB/sec bis 200MB/sec sehr viele Daten übertragen - allerdings kommt dies nur bei Oracle Datenbanken nur für Full Table Scans (gesamte Tabelle lesen), Backups und Archivelog Files vor. Aus diesem Grund ist sind die MBPS nur bei Data Warehouse Datenbanken relevant.
Eigenheiten von Storages: NetApp WAFL Filesystem
Bei NetApp Filers (FAS Serie) wird intern ein Wafl Filesystem eingesetzt. Wafl steht für Write Anywhere Filesystem Layout - es zeichnet sich durch sehr gute Write I/O raten aus, weil es einfach alle eintreffenden Write I/Os bündelt und dann in einem Schwung auf den nächsten verfügbaren freien Bereich schreibt - dadurch ist die mögliche Schreibperformance bei NetApp Filern im Vergleich zu Storages anderer Hersteller bei gleicher Anzahl von Harddisks deutlich höher. Beim zufälligen Lesen (Random Read, was bei OLTP (=Online Transaction Processing) Datenbanken großteils verwendet wird) gibt es bedingt durch WAFL kaum einen Performanceunterschied, bei OLAP (= Online Analytical Processing / Data Warehouse) mit vielen Full Table Scans benötigt man aber mehr Harddisks um die gleiche Performance zu erreichen. Im Bereich von Backup kann die NetApp Filer Storage aber durch die Snapshoting Technologie wieder Punkten (aber das ist eine andere, längere Geschichte).
Die aktuelle Flash Storage Technologie
Flash / SSD finden in Storages an verschiedenen Stellen ihren Einsatz. Die ersten Verwendungen waren mit Sicherherheit die READ (oft Flash Cache oder ähnlich genannt) und für das WRITE Caches, damit die Storage die schreibenden I/Os bestätigen konnte, bevor die Daten wirklich auf der Harddisk standen.
Danach folgten bei vielen Herstellern die SSDs als eigenes Storage Tier (nur SSD gemeinsam als schneller Bereich in der Storage). Je nach Hersteller gibt es verschiedenste Varianten wie man diese SSD Bereiche einsetzen kann. Einige Hersteller verfügen auch über Hyprid Bereiche (Beispielsweise NetApp mit den Hybrid Aggregates), wo SSD und HDD gemeinsam genutzt werden - oft benötigte Daten bleiben auf den SSDs, die auch als WRITE Cache genutzt werden.
Das Problem der klassischen Storagehersteller ist, dass diese Ihre Systeme in Wirklichkeit immer noch für Harddiskbetrieb optimiert haben - auch wenn diese alles machen um das zu ändern, verfügen die Storages einfach nicht über die Rechenleistung die volle Power aus SSDs / Flash zu nutzen. Benötigt man wirklich eine sehr hohe I/O Anzahl, gibt es die sogenannten ALL FLASH Storages - diese verfügen über für den SSD Betrieb optimierte Betriebssysteme (die allerdings im Vergleich zu den klassischen Storages weniger Features bieten). Eine wesentliche Einschränkung aktueller ALL FLASH Storages ist, dass diese lediglich SAN oder iSCSI aber kein NFS anbieten, da NFS zu viel Rechenleistung in der Storage benötigt.
Aktuelle Eckdaten von SSD / FLASH
Bei Flash gibt es SLC (1 Bit pro Speicherzelle), MLC/eMLC (2 Bit pro Speicherzelle) wobei das "e" für Enterprise steht, TLC (3 Bit pro Speicherzelle). Die Daten werden beim Schreiben in diese Speicherzellen "geflashed" (gebrannt), was pro Speicherzelle nur eine bestimmte Anzahl von malen möglich ist - je mehr Bit eine Speicherzelle speichern kann, um so seltener kann man diese flashen bevor das Auslesen nicht mehr sicher funktioniert. Diese Alterungserscheinung nennt man Abnützung (wear out).
Damit durch die Abnützung nicht zu schnell Lesefehler auftreten, sorgen spezielle Controller dafür, dass beim Schreiben alle Zellen überschrieben wird - dafür wird ein Teil der SSD (der nicht nutzbar/sichtbar ist) herangezogen. Bei den meisten SSDs werden immer Blöcke von 128kByte auf einmal geschrieben (hängt vom Controller/Hersteller ab).
Gerade im SSD / FLASH Bereich gibt es sehr viele Innovationen, diese Tabelle wurde mit dem Wissensstand vom April 2014 erstellt und wird bei Bedarf aktualisiert.
Bezeichnung |
SLC |
MLC / eMLC |
TLC |
Primäres Einsatzgebiet
|
Storage Caches, PCI Karten in PCs, High End SSD für Server und Storages
|
die eMLC Variante für Server und Storages, die MLC für High End SSD für PCs/Notebooks
|
TLC kommen meist in günstigen SSDs zum Einsatz (Smartphones, Tablets, günstige Notebooks,...)
|
aktuelle Kapatitäten pro SSD
|
100GB bis 1TB (noch sehr selten)
|
100GB bis 1TB (noch sehr selten)
|
40GB bis TB
|
Überschreibbarkeit pro Speicherzelle
|
über 100.000 mal
|
eMLC: über 10.000 mal
MLC einige 1.000 mal
|
einige 100 bis wenige 1.000
|
Angabe zur maximalen Schreibkapazität
wie viel kann man auf das Medium Schrieben bevor es Fehler gibt
|
einige PentaByte
|
viele TerraByte
|
viele 100GB bis wenige TB
|
Zugriffsgeschwindigkeit
|
0.05ms-0.1ms sehr konstant
|
0.08ms bis 0.2ms, es gibt aber auch Ausreisser
|
0.1 bis 1ms, Performance bricht bei größeren Schreibmengen deutlich ein
|
Aktuelle IOPS Zahlen/SSD
|
80.000 bis 170.000 IOPS
|
50.000 bis 100.000 IOPS
|
25.000 bis 100.000 IOPS
|
Aktuelle MBPS Zahlen/SSD
|
einige 100MB/sec bis zu 1TB/sec
|
einige 100MB/sec bis zu 550MB/sec
|
unter 100MB/sec bis 250MB/sec
|
Je nach Hersteller und verwendeten Controller gibt es welche, die beim Schreiben eine deutlich höhere Performance wie beim Lesen aufweisen, bei den meisten SSD kann man aber merklich schneller Lesen wie Schreiben. Im High End SSD Bereich setzen die Hersteller inzwischen auf DRAM Buffer in den SSDs - die Daten werden beim Schreiben zuerst in einem normalen Memory zwischengespeichert um eine höhere, gleichmäßige Schreibperformance sicherzustellen, ein zusätzlicher Kondensator speichert so viel Energie, dass bei einem Stromausfall die Daten noch auf die SSD gespeichert werden können.
Weitere Einsatzgebiete von SSD/Flash im Zusammenhang mit Storage
Es gibt auch die Möglichkeit SSD/Flash im Server zu verbauen und damit die Performance - auch im Betrieb mit einer Storage - zu verbessern.
Hersteller wie <a href="www.fusionio.com>Fusion-IO (aber auch viele andere) bieten hier Lösungen an, die meist als PCIe Karten für Server konzipiert sind und reden in dem Zusammenhang oft von Flash Acceleration oder In-Server Acceleration (oder ähnlichen Marketingbegriffen).
Technisch gesehen werden einfach die Daten, die von der Storage kommen, lokal in der SSD abgespeichert - werden die Daten erneut aufgerufen, kommen diese direkt aus der lokalen SSD/Flash Karte. Damit das ganze funktioniert, braucht man natürlich Software, die einerseits das zwischenspeichern und abrufen aus der lokalen SSD/Flash Karte sicherstellt (dafür gibt es von den Herstellern meist Lösungen für VMware und selten auch für andere Virtualisierungslösungen oder Betriebssysteme). Das zweite Problem um das sich eine Software des Storage Herstellers kümmern muss, ist wenn auf der Storage die Daten manipuliert werden (Snapshot restore,...). Für CLUSTER Datenbanken (Oracle RAC) ist das im Moment noch nicht geeignet.
SSD/Flash als Erweiterung des Oracle Datenbank Buffer Caches
Beginnend mit Oracle 11gR2 Datenbank unter Linux wurde die Smart Flash Cache Funktionalität eingeführt (und in Oracle 12c auch für Data Warehouse Anwendungen erweitert). Dabei wird ein im Server befindliche SSD/Flash als Erweiterung des Database Buffer Caches konfiguriert - die Datenbank kann somit viel, viel mehr Buffer Cache nutzen (bis zu 10-20 mal mehr Buffer Cache).