Einheit 11: Harddisks & Dateisysteme

Lernziele und Kompetenzen

Den Aufbau von Hard Disk Drives und RAID-Systemen kennen lernen und die Prinzipien bei der Ansteuerung durch das Betriebssystem verstehen.

Datenpersistenz

  • Hard Disk Drives (dt. Festplatten sind die seit Jahrzehnten am weit verbreitetsten Art Daten zu speichern.

  • Dateisysteme hΓ€ngen dabei stark von den darunterliegenden GerΓ€ten ab

    • Wie speichern moderne Hard Disks ΓΌberhaupt Daten ab?

    • Wie sieht das Interface hierfΓΌr aus?

    • Wie sind die Daten konkret angeordnet und wie wird darauf zugegriffen?

    • Wie lΓ€sst sich mit β€žDisk Schedulingβ€œ die Leistung verbessern?

    • Welche Konsequenz hat der Wandel von klassischen Festplatten hin zu Solid State Disks (Abk. SSD)?

Das Interface

Der Aufbau ist im Grundprinzip immer Γ€hnlich

  • Das Laufwerk besteht aus einer Anzahl von sog. Sektoren (i.d.R. in Form von 512-Byte BlΓΆcken)

  • Jeder Block kann individuell gelesen und geschrieben werden

  • Alle Sektoren sind nummeriert 0 bis π‘›βˆ’1 (bei 𝑛 Sektoren)

  • Multi-Sektor-Operationen sing mΓΆglich (und gΓ€ngig)

  • Viele Dateisysteme lesen 4KB oder mehr auf einmal

  • Atomare Schreiboperationen sind nur auf 512-Byte BlΓΆcke zugesichert

Torn Write

Was bedeutet atomare Schreiboperationen sind nur auf 512-Byte BlΓΆcken zugesichert?

Nur die ersten drei BlΓΆcke wurden geschrieben, obwohl der Stromausfall erst sehr spΓ€t bei der Schreiboperation von Block 4 aufgetreten ist.

Inoffizielle Annahmen ΓΌber Disks

  • Annahmen, die von vielen Clients getroffen werden (unwritten contract):

    • Auf zwei nahe beieinander liegende BlΓΆcke kann schneller zugegriffen werden, als auf weit entfernt liegende

    • Der Zugriff auf fortlaufende BΓΆcke (engl. sequential read/write) ist der schnellste Zugriff ΓΌberhaupt und gewΓΆhnlich schneller als der wahlfreie Zugriff (engl. random access)

    Angenommen, Sie schreiben einen Treiber fΓΌr (konventionelle) Festplatten unter diesen Annahmen und morgen tauscht jemand die Festplatten gegen Solid State Disks aus, was passiert dann?

Festplattengemoetrie

Grundlegende Geometrie

  • Eine oder mehrere Scheiben (engl. platter), jede mit je zwei Seiten

  • Magnetische OberflΓ€che aus Eisenoxid - oder Kobalt-Deckschicht (engl. surface)

  • Achse bzw. Spindle (engl. spindle)

  • Schreib-/Lesekopf (engl. disk-head)

  • Arm mittels dem der Schreib-/Lesekopf positioniert wird (engl. disk arm)

  • Daten sind in konzentrischen Kreisen (engl.tracks) angeordnet

  • Umdrehung wird in RPM (rotations per minute) gemessen.

  • Typische Werte heutzutage von 7.200 bis 15.000 RPM

  • Interessant wird die Umdrehungszeit, bei 10.000 RPM sind dies ca. 6ms

Vereinfachte Festplatte

  • Einige (vereinfachende) Annahmen

    • Ein Track

    • Track besteht aus 12 Sektoren bzw. BlΓΆcken (Sektoren)

    • Jeder Block besteht aus 512 Byte

    • Die Scheibe dreht sich gegen der Uhrzeiger Sinn

Rotationa Delay

  • Rotational Delay oder auch Rotational Latency – Zeit bis sich der gesuchte Sektor unter dem Schreib-Lese-Kopf befindet

  • Eine vollstΓ€ndige Umdrehung dauert 𝑅

  • Suchen wir Sektor 0 und starten bei Sektor 6, ist das Delay 𝑅/2

  • Der Worst-Case wΓ€re im Beispiel zuvor ein Start bei 5, hier wird fast eine ganze Rotation benΓΆtigt und das Delay betrΓ€gt somit fast 𝑅

Seek Time

  • In Wirklichkeit besitzen HDDs sehr viele Tracks und der Schreib-/Lesekopf muss permanent ausgerichtet werden

    • Hier: Kopf ΓΌber dem innersten Track muss zum Γ€ußersten bewegt werden (engl. seek):

    • Rotation und Seek sind mit die teuersten Operationen einer Festplatte

    • Seeking besteht aus vier Phasen:

      • Beschleunigung (engl. acceleration)

      • Schub bei voller Geschwindigkeit (engl. coasting)

      • Abbremsung (engl. deceleration)

      • Einschwingzeit (engl. settling time) mit 0,5 bis 2ms

Transfer und andere unwichtige Dinge

Erst wenn der Kopf korrekt positioniert ist (stellen Sie sich vor, er wΓ€re nur ungefΓ€hr auf dem richtigen TrackπŸ€¦β€β™‚οΈ) findet der Transfer (engl.transfer) statt.

Um dass sequentielle Lesen zu ermΓΆglichen, nutzen manche Disks ein sog. Spurversatz (engl. trackskew) an, damit keine Latenz nach dem Neupositionieren entsteht, wenn die Daten auf einem anderen Sektor weitergefΓΌhrt werden.

Außen befinden sich mehr Sektoren (Physik rulez!), daher werden Platten oft in Zonen (engl. multi-zoned disks). Γ„ußere Zonen besitzen dann mehr Sektoren als innere.

Schreib-/Lesecache zur Performance-Steigerung. Beim Schreiben kann sofort nach dem Cachen bestΓ€tigt werden (engl. writeback) oder erst nach dem Schreiben auf Platte (engl. writethrough).

I/O Zeiten

Wie setzt sich nun die Zeit fΓΌr einen I/O-Zugriff zusammen?

TI/O=Tseek+Trotation+TtransferT_{I/O}=T_{seek} +T_{rotation}+T_{transfer}

FΓΌr den Plattenvergleich gerne genutzt: I/O Rate:

RI/O=SizetransferTI/OR_{I/O} = {\frac{Size_{transfer}}{T_{I/O}}}

Disk Scheduling

  • Aufgrund der hohen Kosten fΓΌr Disk Zugriffe entscheidet der Disk Scheduler ΓΌber die Zugriffe:

    • Anders als bei Prozessen kann man bei Plattenzugriffen die Dauer gut berechnen

    • Auf Basis von Seek-Zeiten und der Rotation Delay kann der kΓΌrzeste Job gefunden werden

Shortest Seek Time First (SSTF)

  • Anordnung der Jobs nach Track – die Anfrage mit dem am nΓ€chst gelegenen Track wird zuerst gewΓ€hlt

  • Problem: Die Disk Geometrie ist dem Betriebssystem nicht bekannt

  • Anstelle dessen kann der nΓ€chst gelegen Block verwendet werden (nearest-block-first, Abk. NBF)

  • Problem 2: Starvation– Bei einem fortlaufenden Strom von Anfragen auf z.B. die inneren Tracks wΓΌrden Anfragen auf die Γ€ußeren ignoriert

  • Wie kann dieses Problem gelΓΆst werden?

SCAN

  • Anfragen werden von den Γ€ußeren zu den inneren Tracks und wieder zurΓΌck etc. abgearbeitet (engl. sweep)

C-SCAN (Circular SCAN)

  • Anstelle in beiden Richtungen werden Anfragen immer von den Γ€ußeren Tracks abgearbeitet

  • Fairer gegenΓΌber den Γ€ußeren und inneren Tracks, da reines SCAN zweimal die mittleren Tracks trifft

  • Allerdings werden SCAN/C-SCAN nicht annΓ€hernd einem SJF-Ansatz gerecht

Shortest Positioning Time First (SPTF)

  • Ausgangspunkt s. vorherige Abbildung

  • Sollte nun Track 8 oder 16 zuerst gewΓ€hlt werden?

  • AbhΓ€ngig von Seek-Zeit und Rotation-Delay

  • LΓΆst eigentlich unsere vorherigen Probleme

  • Problem: Das Betriebssystem kennt meist nicht die Track-Grenzen nicht und weiß nicht wo sich der Schreib-Lese-Kopf gerade befindet

  • Daher wird SPFT meist innerhalb des Drives selbst implementiert

manchmal auch: Shortest Access Time First (SATF)

Weiter Herausforderungen

  • FrΓΌher wurde das gesamte Scheduling im Betriebssystem realisiert – frΓΌher waren die Disks β€žeinfacherβ€œ gebaut.

  • Heute besitzen Festplatten einen komplexen Scheduler auf dem Disk Controller, der exakte Daten ΓΌber die internen Positionen hat.

  • Das Betriebssystem schickt die Requests an die Disk, die es am geeignetsten hΓ€lt und die Disk kΓΌmmert sich um den Rest.

  • I/O Merging: Requests, die nahe aneinander liegende Sektoren betreffen, sollten mΓΆglichst zusammengefasst werden, da dies den Overhead fΓΌr das Betriebssystem reduziert.

  • Wie lange soll der Scheduler warten, bis eine I/O-Anfrage abgearbeitet wird? Es kΓΆnnte ja noch eine β€žbessereβ€œ Anfrage kommen, so dass die Disk effizienter genutzt werden kann.

RAID-Systeme

Festplatten gehâren zu den langsamsten Komponenten in einem Rechner. Wenn eine Festplatte ausfÀllt, sind die persistierten Daten verloren. Außer Sie haben ein Backup, aber das ist hier nicht der Punkt, wicht hier ist jedoch: RAID ist kein Backup!

ZunÀchst die Frage: Wie kann ein großes, schnelles und zuverlÀssiges Speichersystem geschaffen werden?

  • Von außen betrachtet sieht ein RAID wie eine Festplatte aus.

  • Intern ist ein RAID jedoch ein hΓΆchst komplexes System mit zahlreichen Vorteilen:

    • Performance, Speicherplatz (KapazitΓ€t) und ZuverlΓ€ssigkeit

    • RAID-Systeme verkraften außerdem den Ausfall einzelner Festplatten

Interface

FΓΌr das Dateisystem sieht ein RAI- System aus wie eine einzelne Festplatte (warum es das nicht ist klΓ€ren wir spΓ€ter).

  • Bei einem Request durch das Betriebssystem, muss das RAID ermitteln auf welche Disk (bzw. abhΓ€ngig vom RAID Level, auf welche Disks) zugegriffen werden muss.

  • Da die Daten auf mehrere Disks verteilt sind, mΓΌssen mehrere physikalische I/O-Zugriffe pro logischen I/O-Zugriff stattfinden

RAID Charakteristika

Auf Basis welcher Kriterien kΓΆnnen RAID-Systeme evaluiert werden?

KapazitΓ€t

  • Wie viel effektiver Speicherplatz ist verfΓΌgbar, wenn 𝑁 Disks mit 𝐡 BlΓΆcken verwendet werden? Ohne Redundanz sind dies 𝑁⋅𝐡

  • Wenn zwei Kopien vorgehalten werden (engl. mirroring) wΓ€ren dies (𝑁⋅𝐡)βˆ•2

  • Verschiedene RAID-Level liegen irgendwo dazwischen

ZuverlΓ€ssigkeit

  • Zur Vereinfachung gehen wir derzeit von einem einzigen Fehlermodell aus: Eine Disk fΓ€llt komplett aus, einem sog. Fail-Stop.

  • Des weiteren gehen wir davon aus, dass der RAID-Controller dies auch direkt feststellen kann.

    • Wie viele Disks kΓΆnnen ausfallen, so dass das jeweilige RAID-Design immer noch funktionsfΓ€hig ist?

Es gibt natΓΌrlich noch mehr FehlerfΓ€lle, die wir spΓ€ter betrachten!

Performance

  • Die Performance ist nicht ganz einfach zu bestimmen:

    • HΓ€ngt vom jeweiligen Workload ab

    • Wie hoch ist die Schreibe- oder Lesegeschwindigkeit?

    • Wie wir vorher gelernt haben, hΓ€ngt dies auch von den eingesetzten Disks ab

RAID Level

RAID Level 0

  • Keine Redundanz

  • Mehrere Disks werden genutzt, um die KapazitΓ€t zu erhΓΆhen (engl.striping)

  • Einfachste Form: BlΓΆcke werden ΓΌber die Disks verteilt

  • Werden BlΓΆcke nun sequentiell gelesen, kann dies parallelisiert werden!

Stripes

BlΓΆcke in der gleichen Reihe werden Stripes genannt.

Chunk Size

  • Besser: Mehrere BlΓΆcke auf einer Disk

  • Hier: Zwei 4-KB BlΓΆcke bevor zur nΓ€chsten Disk gesprungen wird

  • Performance Auswirkung:

    • Kleine Chunk Sizes: Dateien werden ΓΌber viele Disks verteilt

    • Große Chunk Sizes: Intra-File ParallelitΓ€t wird reduziert

    • Richtige Grâße: schwer zu bestimmen bzw. β€žit dependsβ€œ

RAID-0 Analyse

KapazitΓ€t

  • Bei 𝑁 Disk mit je 𝐡 BlΓΆcken liefert RAID-0 ein perfektes Ergebnis: 𝑁⋅𝐡

ZuverlΓ€ssigkeit

  • Perfekt, was die Ausfallwahrscheinlichkeit angeht: Bei einem Fehler sind die Daten futsch!

Performance

  • Bei einem Zugriff auf einen einzelnen Block: Vergleichbar mit einzelner Disk

  • Bei sequentiellen Zugriffen: Volle ParallelitΓ€t

  • Bei wahlfreien Zugriffen 𝑁⋅𝑅 MB/s mit

𝑅=(π΄π‘šπ‘œπ‘’π‘›π‘‘π‘œπ‘“π·π‘Žπ‘‘π‘Ž)/(π‘‡π‘–π‘šπ‘’π‘‘π‘œπ΄π‘π‘π‘’π‘ π‘ )𝑅=(π΄π‘šπ‘œπ‘’π‘›π‘‘π‘œπ‘“π·π‘Žπ‘‘π‘Ž)/(π‘‡π‘–π‘šπ‘’π‘‘π‘œπ΄π‘π‘π‘’π‘ π‘ )

FΓΌr eine detaillierte Berechnung sei hier auf OSTEP Kapitel 38.4 verwiesen

RAID Level 1

Mirroring

  • Jeder Block wird im System auf eine andere Disk kopiert (bzw. gespiegelt)

  • Hier: RAID-10 bzw. RAID 1+0, nutzt gespiegelte Paare von Disk

  • Alternativ: RAID-01 bzw. RAID 0+1, besteht aus zwei RAID-0 Arrays, die gespiegelt sind

KapazitΓ€t

  • Es wird nur die HΓ€lfte der KapazitΓ€t genutzt: (𝑁⋅𝐡)βˆ•2 und somit teuer

ZuverlΓ€ssigkeit

  • Ausfall einer Diks wird verkraftet, im vorherigen Fall kΓΆnnen sogar Konstellationen von Disks ausfallen (z.B. Disk 0 und 2), darauf sollte man aber nicht wetten

Performance

  • Einzelne Leseoperation vergleichbar mit einer einzelnen Disk

  • FΓΌr einen Schreibzugriff mΓΌssen jedoch zwei (parallele) physikalische Schreiboperationen durchgefΓΌhrt werden, im Worst-Case muss auf den langsamsten Schreibprozess gewartet werden (z.B. aufgrund von Rotation Delay)

  • Sequentielle Schreib- und Leseoperationen dauern (𝑁/2⋅𝑆) MB/s mit 𝑆=(π΄π‘šπ‘œπ‘’π‘›π‘‘π‘œπ‘“π·π‘Žπ‘‘π‘Ž)/(π‘‡π‘–π‘šπ‘’π‘‘π‘œπ΄π‘π‘π‘’π‘ π‘ ) bzw. die HΓ€lfte des HΓΆchstdurchsatzes

  • Wahlfreie Leseoperationen sind mit 𝑁⋅𝑅 MB/s die beste Operation fΓΌr RAID-1, wogegen wahlfreie Schreiboperationen mit 𝑁/2⋅𝑅 MB/s weniger geeignet sind, da zwei physikalische Schreiboperationen simultan durchgefΓΌhrt werden mΓΌssen.

FΓΌr eine detaillierte Berechnung sei auch hier auf OSTEP Kapitel 38.4 verwiesen

RAID Level 4

  • Nutzung eines sog ParitΓ€tsbits

  • BenΓΆtigt weniger Speicherplatz als gespiegelte RAIDs, jedoch auf Kosten der Performance

  • Mittels der XOR-Funktion wird das ParitΓ€tsbit berechnet

Parity-Bit

  • Invariante

  • Pro Zeile gerade Anzahl von 1en, einschl. des ParitΓ€tsbits

  • RAID muss dies sicherstellen

  • Beim Ausfall einer Zeile C (s.o.) kann diese wiederhergestellt werden

    • Wie? XOR auf die verbleibenden Spalten ausfΓΌhren

  • Aber bei BlΓΆcken?

  • Bitweises XOR auf den ganzen Block (z.B. 4 KB)

KapazitΓ€t

  • 1 Disk fΓΌr ParitΓ€ten ergibt eine GesamtkapazitΓ€t (π‘βˆ’1)⋅𝐡

ZuverlΓ€ssigkeit

  • RAID-1 erlaubt den Ausfall einer Disk

Performance

  • Sequentielle Leseoperationen kΓΆnnen alle Disks (ohne die ParitΓ€tsdisk) nutzen und liefern so einen Maximaldurchsatz von (π‘βˆ’1)⋅𝑆 MB/s

  • Bei einem sog. Full Stripe Write wird ein gesamter Stripe auf einmal beschrieben und der ParitΓ€tsblock kann direkt mit berechnet werden, alle Schreiboperationen kΓΆnnen parallel stattfinden (effizienteste Schreiboperation im RAID-4)

  • Die effektive Bandbreite bei sequentiellen Schreiboperationen ist dabei (π‘βˆ’1)⋅𝑆 MB/s

  • Wahlfreie Leseoperationen liegen bei (π‘βˆ’1)⋅𝑅 MB/s

  • Beim Schreiben eines einzelnen Blocks muss das ParitΓ€tsbit des Stripes neu berechnet werden

Variante 1: Additive Parity

  • Alle bestehenden BlΓΆcke (parallel) lesen und mit dem neune Block XOR

  • Neu berechneter ParitΓ€tsblock und neuer Block kΓΆnnen parallel geschrieben werden

Variante 2: Subtractive Parity

  • Alter Wert wird gelesen, ist dieser mit dem neuen Wert identisch muss das ParitΓ€tsbit nicht geΓ€ndert werden, falls doch, muss das ParitΓ€tsbit umgedreht werden

  • Bei ganzen BlΓΆcken (z.B. 4 KB) wie in RAID-4 sind dies 4096 mal 8 Bit.

  • Der Einsatz des jeweiligen Verfahrens hΓ€ngt also wieder davon ab (β€žit dependsβ€œ)

Auf jeden Fall wird die ParitΓ€tsdisk zum Flaschenhals

RAID Level 5

  • Grundlegend gleich zu RAID-4, jedoch mit den ParitΓ€tsblΓΆcken ΓΌber die versch. Disks verteilt (engl. rotating parity)

  • Flaschenhals wird somit beseitigt

RAID-5 Analyse

  • Die meisten Werte sind identisch zu RAID-4

  • Wahlfreie Leseoperationen sind etwas besser, da alle Disks genutzt werden kΓΆnnen

  • Wahlfreie Schreiboperationen verbessern sich signifikant, da Requests nun parallel ausgefΓΌhrt werden kΓΆnnen.

Übungsaufgaen

Einfache XOR Berechnung

Gegeben sind zwei BinΓ€rzahlen: 1010 und 1100. Berechnen Sie das Ergebnis der XOR-Operation zwischen diesen beiden Zahlen.

1 XOR 1 = 0 0 XOR 1 = 1 1 XOR 0 = 1 0 XOR 0 = 0

Die gesuchte BinΓ€rzahl ist demnach 0110. In diesem Fall handelt es sich um gerade ParitΓ€t (auch als β€œeven parity” bezeichnet). Die XOR-Operation zwischen den beiden BinΓ€rzahlen 1010 und 1100 ergibt die BinΓ€rzahl 0110, die eine gerade Anzahl von Einsen enthΓ€lt. Daher ist dies ein Beispiel fΓΌr gerade ParitΓ€t.

XOR Berechnung mit mehreren DatenblΓΆcken

  • Disk 1 =1111

  • Disk 2 =1110

  • Disk 3 =1100

  • Disk 4 =1000

Die Berechnung des ersten Bits jedes Datenblocks ergibt folgende Berechnung

1 XOR 1 XOR 1 XOR 1

= ((1 XOR 1) XOR 1) XOR 1

= (0 XOR 1) XOR 1

= 1 XOR 1n

= 0

Die Berechnung des zweiten Bits jedes Datenblocks ergibt folgende Berechnung

1 XOR 1 XOR 1 XOR 0

= ((1 XOR 1) XOR 1) XOR 0

= (0 XOR 1) XOR 0

= 1 XOR 0

= 1

Die Berechnung des dritten Bits jedes Datenblocks ergibt folgende Berechnung

1 XOR 1 XOR 0 XOR 0

= ((1 XOR 1) XOR 0) XOR 0

= (0 XOR 0) XOR 0

= 0 XOR 0

= 0

Die Berechnung des letzten Bits jedes Datenblocks ergibt folgende Berechnung

1 XOR 0 XOR 0 XOR 0

= ((1 XOR 0) XOR 0) XOR 0

= (1 XOR 0) XOR 0

= 1 XOR 0

= 1

Die Berechnung ergibt demnach folgenden ParitΓ€tsblock:

Disk 5 = 0101

Last updated