Ein-/Ausgabegeräte, Festplatten und RAID

Lerne, wie ein Betriebssystem mit der Hardware zusammenarbeitet, die Daten speichert und überträgt. Verfolge eine Anfrage vom Systemaufruf über den Treiber bis zum Gerät und sieh, wie Polling, Interrupts und direkter Speicherzugriff (DMA) die Arbeit zwischen CPU und Gerät aufteilen. Berechne Zugriffszeiten von Festplatten und vergleiche Schedulingstrategien für Festplatten. Sieh anschließend, wie Flash-SSDs Löschblöcke und Verschleiß hinter einer Übersetzungsschicht verbergen. Berechne Kapazität, Geschwindigkeit und Ausfalltoleranz von RAID-Leveln und nutze Prüfsummen, um unbemerkte Datenkorruption zu erkennen und zu beheben.

MittelEinheit 7 von 9 in Kurs: Betriebssysteme – Prozesse, Speicher, Threads und Dateisysteme

Was du lernst

  1. Beschreibe, was ein Gerät dem Betriebssystem bereitstellt und wie der Kernel Polling, Interrupts, direkten Speicherzugriff (DMA) und Gerätetreiber nutzt, um Daten zwischen Speicher und Geräten zu übertragen.
    • Beschreibe die Geräteschnittstelle und das grundlegende Ein-/Ausgabeprotokoll
      Ordne Geräte den Bussen des Rechners zu, benenne die Register, die ein Gerät bereitstellt, und verfolge das einfache Protokoll, mit dem das Betriebssystem einem Gerät einen Befehl erteilt.
    • Wähle zwischen Polling und Interrupts
      Erkläre, wie Interrupts es der CPU ermöglichen, während der Arbeit eines Geräts nützliche Aufgaben auszuführen, wann Polling die bessere Wahl ist und wie hybrides Polling und Interruptbündelung den Verwaltungsaufwand verringern.
    • Übertrage Daten mit direktem Speicherzugriff (DMA)
      Erkläre, warum das Kopieren von Daten durch die CPU bei großen Übertragungen Zeit verschwendet und wie eine DMA-Einheit Daten zwischen Speicher und Gerät überträgt, während die CPU andere Arbeit erledigt.
    • Erkläre Gerätetreiber und die Schichten des Speichersystems
      Zeige, wie Treiber Gerätedetails hinter allgemeinen Schnittstellen verbergen, verfolge eine Leseanfrage vom Systemaufruf zum Gerät und zurück und vergleiche, wie SATA und NVMe Anfragen in Warteschlangen einreihen.
  2. Beschreibe, wie eine Festplatte Daten speichert und erreicht, berechne Dauer und Datenrate einer Ein-/Ausgabe und vergleiche Schedulingstrategien, die Positionierungs- und Rotationszeit verringern.
    • Beschreibe den Aufbau und die Adressierung einer Festplatte
      Stelle den Zusammenhang zwischen der Sektoradressierung des Laufwerks und seinen Magnetscheiben, Spuren, Köpfen und seinem Cache her und erkläre, was das Laufwerk garantiert und was nicht.
    • Berechne Dauer und Datenrate einer Festplatten-Ein-/Ausgabe
      Zerlege eine Ein-/Ausgabe in Positionierung, Rotation und Übertragung, berechne jeden Anteil aus den Angaben zum Laufwerk und erkläre, warum sich zufällige und sequenzielle Arbeitslasten in ihrer Leistung so stark unterscheiden.
    • Vergleiche Schedulingstrategien für Festplatten
      Ordne ausstehende Festplattenanfragen mit FCFS, SSTF, SCAN, C-SCAN, LOOK und SPTF, berechne jeweils die Kopfbewegung und erkläre, wo das Scheduling in einem modernen System stattfindet.
  3. Beschreibe Flash-Zellen, -Seiten und -Löschblöcke, erkläre, wie der Flash Translation Layer ihre Einschränkungen verbirgt, und vergleiche SSDs mit Festplatten hinsichtlich Leistung, Haltbarkeit und Kosten.
    • Beschreibe Flash-Speicher: Zellen, Seiten, Blöcke und Verschleiß
      Erkläre, wie NAND-Flash Bits speichert, wie er in Seiten und Löschblöcke gegliedert ist, welche Operationen er unterstützt und warum er verschleißt.
    • Erkläre den Flash Translation Layer
      Beschreibe, wie die Firmware einer SSD logische Blöcke auf Flash-Seiten abbildet, nach Art eines Protokolls schreibt, Datenmüll bereinigt und Verschleiß verteilt. Berechne außerdem die Schreibverstärkung und die Größe der Zuordnungstabelle.
    • Vergleiche SSDs mit Festplatten
      Vergleiche Latenz, Durchsatz, Haltbarkeit, Ausfallverhalten und Kosten von SSDs und Festplatten und erkläre, was sich für das Betriebssystem ändert.
  4. Erkläre, wie ein redundanter Festplattenverbund Blöcke mit Striping, Spiegelung und Parität zuordnet, berechne Kapazität und Durchsatz für jedes RAID-Level und wähle ein Level passend zur Arbeitslast und ihren Ausfallrisiken.
    • Erkläre, was ein RAID-Verbund leistet und wie du ihn bewertest
      Beschreibe einen RAID-Verbund als eine aus mehreren Festplatten aufgebaute logische Festplatte, das Fehlermodell und die Kennzahlen zum Vergleich von RAID-Leveln sowie die Probleme, die jeder Entwurf mit mehreren Festplatten behandeln muss.
    • Ordne Blöcke mit Striping und Spiegelung zu
      Berechne, wo ein logischer Block in RAID-0 und RAID-10 liegt, erkläre die Wirkung der Chunkgröße und ermittle Kapazität, Zuverlässigkeit und Leistung von Striping und Spiegelung.
    • Schütze Daten durch Parität in RAID-4, RAID-5 und RAID-6
      Berechne XOR-Parität, rekonstruiere damit einen verlorenen Block, aktualisiere die Parität bei einem kleinen Schreibvorgang und erkläre das Problem kleiner Schreibvorgänge sowie den Umgang von RAID-5 und RAID-6 damit.
    • Wähle ein RAID-Level und plane Ausfälle und Wiederaufbauten ein
      Ordne RAID-Level passenden Arbeitslasten zu, schätze die Wiederaufbauzeit und das Risiko unlesbarer Sektoren während eines Wiederaufbaus ab und begründe eine Wahl zwischen Spiegelung und Parität.
  5. Erkenne, wie Speichergeräte teilweise und unbemerkt ausfallen, berechne und vergleiche Prüfsummen und entwirf ein Speichersystem, das Datenkorruption sowie fehlgeleitete und verlorene Schreibvorgänge erkennt und die Daten aus redundanten Kopien wiederherstellt.
    • Erkenne Speicherfehler, die über den vollständigen Ausfall einer Festplatte hinausgehen
      Beschreibe latente Sektorfehler, unbemerkte Datenkorruption sowie fehlgeleitete und verlorene Schreibvorgänge, wie häufig sie auftreten und warum Redundanz allein sie nicht erkennt.
    • Berechne und vergleiche Prüfsummen
      Berechne XOR-, additive und Fletcher-Prüfsummen, beschreibe die CRC und vergleiche Prüfsummenfunktionen anhand der Fehler, die sie erkennen, und ihres Aufwands.
    • Integriere Integritätsprüfungen in ein Speichersystem
      Entscheide, wo Prüfsummen gespeichert werden, verfolge den Lesepfad zum Erkennen und Beheben von Datenkorruption, erkenne fehlgeleitete und verlorene Schreibvorgänge und plane Scrubbing samt seinem Aufwand.

Festplatten und RAID einfach erklärt

5 Kapitel

1

Verfolge eine Ein-/Ausgabeanfrage von der Software bis zur Hardware

Ein Programm kann einen Datenblock anfordern, ohne zu wissen, welcher Controller ihn holt. Der Kernel setzt diese Anfrage in Registerzugriffe, Datenübertragungen und die Behandlung des Abschlusses um. Verfolge diese Aufgaben getrennt: wie ein Befehl das Gerät erreicht, wie die CPU darauf wartet und wer die Byte überträgt. Setze die Aufgaben dann in einem Speichersystem zusammen, das vielen Programmen und CPU-Kernen die gemeinsame Nutzung von Geräten ermöglicht.

1.1 Erteile einem Gerät einen Befehl

Ein Ein-/Ausgabegerät überträgt Daten in einen Rechner oder aus ihm heraus oder speichert sie dauerhaft. Eine Tastatur liefert Eingaben; eine Netzwerkkarte sendet und empfängt Pakete; eine Festplatte behält Daten nach dem Abschalten der Stromversorgung. Geräte sind über Busse oder Verbindungen angeschlossen. PCI Express (PCIe) verbindet leistungsfähige Geräte wie NVMe-SSDs. SATA und USB dienen anderen Speicher- und Peripheriegeräten weiter außen in der Hierarchie. Schnelle Verbindungen sind teurer herzustellen und unterliegen strengeren physikalischen Grenzen, daher kombiniert ein Rechner mehrere Arten.

Die Schnittstelle ist die Sicht der Software

Ein Controller kann Prozessoren, Speicher und Firmware enthalten, also die Software, die im Gerät läuft. Das Betriebssystem steuert ihn über eine bereitgestellte Hardwareschnittstelle. Zwei Controller können intern sehr unterschiedlich aufgebaut sein und dennoch dieselben Befehle unterstützen.

Ein einfaches Gerät hat drei Register:

RegisterWas der Kernel erfährt oder bereitstellt
StatusOb das Gerät bereit, beschäftigt oder fertig ist oder einen Fehler meldet
BefehlWelche Operation gestartet werden soll
DatenDie gesendeten oder empfangenen Byte

Für eine einfache Ausgabeoperation prüft der Kernel zunächst den Status, bis das Gerät bereit ist. Dann schreibt er die Daten, schreibt den Befehl und prüft den Status bis zum Abschluss. Abschließend prüft er, ob ein Fehler vorliegt. Würde er den Befehl schreiben, bevor er die Daten bereitstellt, könnte eine Operation mit dem falschen Inhalt starten. Das wiederholte Prüfen des Status heißt Polling; die Übertragung der Nutzdaten durch die CPU heißt programmierte Ein-/Ausgabe (PIO).

Greife sicher auf Register zu

Die portadressierte Ein-/Ausgabe gibt Registern einen eigenen Adressraum. Auf x86 greifen Befehle wie in und out auf diese Ports zu. Der Kernel kontrolliert, welcher Code sie ausführen darf. Die speicherabgebildete Ein-/Ausgabe (MMIO) platziert Register im physischen Adressraum, sodass Lade- und Speicherbefehle sie über Abbildungen erreichen, die von den Seitentabellen des Kernels kontrolliert werden. PCIe-Geräte verwenden normalerweise MMIO.

Eine MMIO-Adresse bezeichnet eine Geräteoperation, auch wenn der Zugriff einem Speicherzugriff ähnelt. Ein Lesezugriff kann ein Flag zurücksetzen. Ein Schreibzugriff kann eine Übertragung starten. Der Status kann sich ändern, weil das Gerät seine Arbeit abschließt, ohne dass die CPU an diese Adresse schreibt. Gewöhnliches Cache-Verhalten könnte diese Änderungen verbergen oder Zugriffe zusammenfassen, die das Gerät getrennt benötigt.

Linux-Treiber verwenden daher Zugriffsfunktionen wie readl() und writel(), geeignete Abbildungsattribute und erforderliche Speicherbarrieren. Ein volatile-Zeiger kann den Compiler daran hindern, Zugriffe zu entfernen oder zusammenzufassen. Er gewährleistet aber nicht die vollständige Reihenfolge gegenüber gewöhnlichem Speicher oder bei Umordnungen durch die CPU. Ein Befehlsdeskriptor im RAM muss beispielsweise für das Gerät sichtbar sein, bevor ein Doorbell-Register ihm mitteilt, diesen Deskriptor abzuholen.

Belasse die Gerätesteuerung im Kernel

Eine Anwendung ruft normalerweise read() oder write() auf. Der Kernel prüft Berechtigungen und führt das Geräteprotokoll in ihrem Auftrag aus. Das verhindert, dass ein Programm Befehle ausgibt, die die Anfrage eines anderen Programms stören. Ein Benutzerpuffer ist der Datenbereich der Anwendung; ein Befehlsregister ist die Steuerstelle des Controllers. Sie haben unterschiedliche Aufgaben, auch wenn beide Adressen besitzen.

Wichtige Erkenntnisse

  • Die Geräteschnittstelle verbirgt das Innenleben und die Firmware des Controllers.
  • Stelle die Daten bereit, bevor du das einfache Befehlsprotokoll startest; prüfe anschließend Abschluss und Fehler.
  • Polling prüft die Bereitschaft; bei PIO überträgt die CPU die Daten.
  • MMIO-Registerzugriffe können Nebenwirkungen haben und benötigen Zugriffsfunktionen der Plattform und eine festgelegte Reihenfolge.
  • Systemaufrufe ermöglichen es dem Kernel, den gemeinsamen Gerätezugriff zu vermitteln.

1.2 Entscheide, wie die CPU wartet

Ein Gerät kann für den Abschluss einer Anfrage viel länger brauchen als die CPU für deren Ausgabe. Die Wartestrategie entscheidet, ob die CPU in dieser Zeit das Gerät prüft oder andere Arbeit ausführt. Sie ändert nicht, wie schnell das Gerät selbst die Anfrage abschließt.

Abfragen oder schlafen

Beim Polling liest die CPU wiederholt den Status. Ein Abschluss kann schnell bemerkt werden, aber Prüfungen, während das Gerät noch beschäftigt ist, verbrauchen CPU-Zeit. Bei Interrupts wird ein Prozess, der auf einen Lesezugriff wartet, blockiert, und ein anderer bereiter Prozess kann laufen. Wenn das Gerät fertig ist, signalisiert es dies der CPU. Die Interruptbehandlungsroutine des Kernels prüft den Abschluss, bearbeitet das Ergebnis und setzt den wartenden Prozess auf bereit. Der Scheduler entscheidet, wann dieser Prozess wieder läuft.

Angenommen, Prozess A startet einen Festplattenlesezugriff, der 10 ms dauert. Polling belegt die CPU während dieser Wartezeit. Bei interruptgesteuerter Ein-/Ausgabe kann Prozess B während derselben 10 ms rechnen. Die Geräteoperation von A dauert weiterhin 10 ms; nützliche Berechnung überlappt die Wartezeit.

Auch Interrupts verursachen Arbeit: Die CPU sichert den Zustand, führt die Behandlungsroutine aus, stellt den Zustand wieder her und muss möglicherweise Prozesse wechseln und Caches neu füllen. Der Aufwand beträgt gewöhnlich einige Mikrosekunden. Antwortet ein Gerät in 2 µs, kann eine kurze Polling-Schleife günstiger sein als das Blockieren und Aufwecken des Prozesses. Interrupts eignen sich für langsame Operationen, kurzes Polling für sehr schnelle.

Passe dich an Abschlussgeschwindigkeit und Last an

Eine hybride oder zweiphasige Strategie fragt kurz per Polling ab und wartet dann schlafend auf einen Interrupt, falls die Anfrage noch nicht abgeschlossen ist. Bei schnellem Abschluss entfällt der Aufwand des Aufweckens, während langsame Abschlüsse die CPU nicht während ihrer gesamten Dauer belegen. Linux unterstützt für geeignete schnelle Speicheranfragen die Abfrage des Abschlusses per Polling.

Starker Interruptverkehr schafft ein anderes Problem. Wenn fast jeder CPU-Zyklus neu eintreffende Ereignisse behandelt, erhält der Code, der deren Daten verarbeitet, wenig Ausführungszeit. Das ist Livelock: Der Rechner ist beschäftigt, aber der nützliche Fortschritt bricht ein. Der Linux-Netzwerkmechanismus NAPI begrenzt die Interruptarbeit und schaltet unter Last auf stapelweises Polling um.

Interruptbündelung fasst mehrere Abschlüsse zu einer Benachrichtigung zusammen. Bei 100.000 Abschlüssen pro Sekunde und 5 µs CPU-Arbeit pro Interrupt kosten separate Benachrichtigungen:

100.000×5 μs=0,5 s

Das ist jede Sekunde die Hälfte der Zeit eines CPU-Kerns. Die Bündelung von acht Abschlüssen pro Interrupt ergibt 12.500 Interrupts und 62,5 ms CPU-Arbeit pro Sekunde oder 6,25 % eines Kerns. Eine Anfrage muss möglicherweise kurz auf ihren Stapel warten, sodass der geringere Verwaltungsaufwand mit zusätzlicher Benachrichtigungslatenz einhergeht.

Sende Benachrichtigungen an den richtigen Kern

PCIe-Geräte verwenden häufig MSI oder MSI-X, Interrupts, die als Nachrichten an eine spezielle Adresse übermittelt werden. Mehrere Interruptvektoren ermöglichen es einem Gerät, die Abschlüsse verschiedener Warteschlangen an verschiedene Kerne zu leiten. Ein NVMe-Controller kann Warteschlangen pro Kern mit passenden Interruptvektoren koppeln und so die Arbeit für Einreichung und Abschluss nahe beieinander halten. Mehr Vektoren organisieren die CPU-Arbeit; sie verkürzen weder einen Flash-Lesezugriff noch eine Festplattenumdrehung.

Wichtige Erkenntnisse

  • Interrupts lassen Berechnung und Gerätezeit überlappen; ein abgeschlossener Prozess wird bereit, bevor er läuft.
  • Vergleiche bei schnellen Geräten die Polling-Zeit mit dem Aufwand für Interrupt und Aufwecken.
  • Hybrides Warten fragt kurz per Polling ab und blockiert dann bei Bedarf.
  • Livelock verbraucht CPU-Zeit ohne nützlichen Fortschritt.
  • Interruptbündelung verringert den Benachrichtigungsaufwand, indem sie etwas zusätzliche Latenz in Kauf nimmt.
  • MSI-X unterstützt getrennte Interruptvektoren für Gerätewarteschlangen.

1.3 Übergib die Datenübertragung an DMA

Warten und Kopieren sind getrennte Aufgaben. Interrupts können verhindern, dass die CPU aktiv wartet, während ein Gerät arbeitet. Die CPU wäre aber weiterhin beschäftigt, wenn sie jedes Wort durch ein Datenregister übertragen müsste. Direkter Speicherzugriff (DMA) weist diese Übertragung einer Hardwareeinheit zu, die sich gewöhnlich im Gerätecontroller befindet.

Miss die Arbeit, die PIO der CPU überlässt

Stell dir ein 4 Byte großes Datenregister vor, bei dem jeder Zugriff 100 ns dauert. Das Übertragen eines 4-KiB-Blocks benötigt:

4096/4=1024 Zugriffe 1024×100 ns=102,4 μs

Diese Registeroperationen belegen die CPU. Größere Puffer benötigen entsprechend mehr Zugriffe. DMA erspart das wortweise Kopieren über Register; die CPU bereitet weiterhin die Anfrage vor und bearbeitet ihren Abschluss.

Verfolge einen DMA-Lesezugriff
  1. Der Treiber bereitet einen Zielpuffer vor und stellt ihn für den Gerätezugriff bereit.
  2. Er übergibt die DMA-Adresse oder -Adressen, die Anzahl der Byte, die Richtung und den Lesebefehl.
  3. Das Gerät liest die angeforderten Speicherblöcke und schreibt die Byte in den Speicher.
  4. Die CPU führt andere Arbeit aus, während das Gerät Daten überträgt.
  5. Der Abschluss wird gemeldet, gewöhnlich durch einen Interrupt. Die Behandlungsroutine prüft den Status und weckt den wartenden Prozess.

Die DMA-Einheit handelt als Busmaster und startet Speicherübertragungen. Der Einrichtungsaufwand hängt von der Abbildung, der Plattform und der Anzahl der Speicherbereiche ab. DMA verbraucht außerdem Speicherbandbreite, die es mit der CPU teilt. Es erspart CPU-Befehle, aber nicht alle Ressourcen.

Beschreibe verteilten Speicher

Ein Puffer kann im virtuellen Adressraum eines Prozesses zusammenhängend sein und zugleich getrennte physische Seiten belegen. Eine Scatter-Gather-Liste beschreibt diese Bereiche als Paare aus Adresse und Länge. Ein Gerät kann die Daten einer Anfrage über mehrere Bereiche hinweg übertragen, ohne dass die CPU sie zuerst in einen physisch zusammenhängenden Puffer kopieren muss.

Ein Puffer aus drei Seiten kann beispielsweise durch drei nicht benachbarte Seiten hinterlegt sein. Der Treiber erstellt Deskriptoren für die für das Gerät sichtbaren Bereiche und hält die zugrunde liegenden Seiten bis zum Abschluss unverändert an ihrem Platz. Die Fixierung verhindert, dass diese Seiten entfernt oder anderweitig verwendet werden, während die Hardware noch darauf zugreifen kann. Wird die Fixierung zu früh aufgehoben, besteht das Risiko, dass ein späterer DMA-Schreibvorgang fremde Daten überschreibt.

Nutze den Adressraum des Geräts

Ein Gerät verwendet normalerweise keinen virtuellen Zeiger einer Anwendung. Die DMA-API des Kernels liefert Busadressen, die sich von physischen CPU-Adressen unterscheiden können. Eine IOMMU übersetzt Geräteadressen in physischen Speicher und beschränkt den Speicher, auf den ein Gerät zugreifen darf. Diese Isolation hilft auch einem Hypervisor, einer virtuellen Maschine ein Gerät zuzuweisen.

CPU-Caches machen einen weiteren Koordinationsschritt nötig. Vor einer ausgehenden DMA-Übertragung muss das Gerät die neuesten Byte der CPU sehen; nach einer eingehenden Übertragung muss die CPU die Aktualisierungen des Geräts sehen. Manche Hardware hält die Kohärenz automatisch aufrecht. Andere Plattformen benötigen eine Cache-Synchronisierung über die DMA-API. Adressabbildung, Seitenlebensdauer und Cache-Sichtbarkeit lösen jeweils einen anderen Teil der Aufgabe, die Übertragung sicher zu machen.

Wichtige Erkenntnisse

  • DMA übernimmt das Kopieren der Nutzdaten; Interrupts ersparen der CPU das Warten.
  • Die CPU richtet DMA weiterhin ein und bearbeitet den Abschluss.
  • Scatter-Gather-Listen beschreiben Übertragungen über getrennte Speicherbereiche.
  • Fixierte Seiten müssen bis zum Abschluss von DMA stabil an ihrem Platz bleiben.
  • Die DMA-API liefert für Geräte sichtbare Adressen; eine IOMMU übersetzt und beschränkt sie.
  • Cache-Kohärenz oder explizite Synchronisierung macht Aktualisierungen von CPU und Gerät sichtbar.

1.4 Verfolge einen Lesezugriff durch das Speichersystem

Ein Gerätetreiber setzt eine allgemeine Anfrage in die Befehle und Registerzugriffe eines Controllers sowie die Behandlung des Abschlusses um. So kann ein Dateisystem einen Block anfordern, ohne zu wissen, ob die Hardware SATA, NVMe oder USB verwendet. Der Treiber kennt das gerätespezifische Protokoll und die Eigenheiten des Controllers.

Gib jeder Schicht eine Aufgabe

Ein Lesezugriff auf den Speicher durchläuft unter Linux normalerweise diese Kette:

Anwendung → Systemaufruf → Dateisystem → allgemeine Blockschicht → Treiber → Controller → Speichergerät.

Das Dateisystem ordnet eine Dateiposition Speicherblöcken zu. Die Blockschicht reiht Anfragen ein, fasst benachbarte zusammen und kann ihre Reihenfolge planen. Der Treiber reicht die daraus entstehenden Operationen ein. Der direkte Zugriff auf ein rohes Blockgerät kann das Dateisystem umgehen und dennoch die unteren Schichten nutzen.

Die Standardschnittstelle macht neue Hardware nutzbar, ohne jede Anwendung neu zu schreiben. Sie verbirgt aber auch manche Sonderfunktionen. Schnittstellen wie ioctl() oder die Durchreichung von Befehlen ermöglichen es Software, Steuerfunktionen anzufordern, die nicht zu einem gewöhnlichen Lese- oder Schreibzugriff auf Blöcke passen.

Unterscheide Geräteklassen
KlasseTypische Schnittstelle und Beispiele
BlockgerätAdressierte Blöcke; Festplatten und SSDs
Zeichenorientiertes GerätEin Bytestrom; Terminals und serielle Schnittstellen
NetzwerkschnittstellePaketkommunikation über Sockets

Linux stellt Blockgeräte und zeichenorientierte Geräte als spezielle Dateien bereit, etwa /dev/sda und /dev/nvme0n1. Treiber laufen häufig im Kernelmodus, sodass ein Treiberfehler den Kernel zum Absturz bringen oder Speicherinhalte beschädigen kann. Treiberisolation begrenzt diese Auswirkungen in Systemen, die sie unterstützen. Die Treibersammlung von Linux macht einen großen Teil seines Quellcodes aus; Studien haben Treibercode außerdem als besonders fehleranfällig eingestuft.

Verteile Anfragen über Kerne hinweg

Die Linux-Blockschicht blk-mq verwendet Softwarewarteschlangen pro CPU und Hardware-Ausgabewarteschlangen. Ein Ein-/Ausgabe-Scheduler wie mq-deadline, bfq oder kyber kann Anfragen umordnen oder für Fairness sorgen; none verzichtet auf eine zusätzliche Schedulingstrategie. Festplatten profitieren davon, wenn Positionierungsbewegungen verringert werden. Schnelle NVMe-Geräte verwenden häufig none, da sie keinen Kopf positionieren müssen. Der gewählte Scheduler erscheint in /sys/block/<device>/queue/scheduler in eckigen Klammern.

SATA mit AHCI/NCQ unterstützt pro Gerät eine Befehlswarteschlange mit bis zu 32 ausstehenden Befehlen. NVMe unterstützt viele Einreichungs- und Abschlusswarteschlangen im Speicher: bis zu 65.535 Ein-/Ausgabe-Warteschlangen mit jeweils bis zu etwa 64.000 Befehlen. Tatsächliche Controller bieten niedrigere Grenzwerte. Warteschlangenpaare pro Kern verringern die Konkurrenz auf gemeinsam genutzten Einreichungspfaden.

Verfolge einen NVMe-Lesezugriff

Ein Prozess ruft read(fd, buf, 4096) auf. Bei einem Cache-Fehlzugriff findet das Dateisystem den Festplattenblock, und die Blockschicht erstellt eine Anfrage. Der NVMe-Treiber schreibt einen Deskriptor in eine Einreichungswarteschlange und beschreibt dann deren MMIO-Doorbell-Register. Der Controller holt den Befehl ab, überträgt die Daten per DMA in den Speicher und stellt einen Abschlusseintrag ein. Ein MSI-X-Interrupt veranlasst den Kernel, die Anfrage abzuschließen. Bei einem gepufferten Lesezugriff gelangen die Daten über den Seitencache in den Puffer der Anwendung, und read() gibt 4096 zurück. Ein Cache-Treffer kann den Lesezugriff bedienen, bevor eine Geräte-Ein-/Ausgabe nötig wird.

Wichtige Erkenntnisse

  • Treiber passen eine Standardschnittstelle des Kernels an gerätespezifische Protokolle an.
  • Die Blockschicht reiht Anfragen für adressierte Blöcke ein, fasst sie zusammen und plant sie.
  • AHCI/NCQ hat pro Gerät eine flache Warteschlange; NVMe unterstützt viele Warteschlangen im Speicher.
  • Eine Doorbell kündigt eingereihte Arbeit an; DMA überträgt die Nutzdaten; die Abschlussbehandlung beendet die Anfrage.
2

Berechne den Festplattenaufwand und wähle eine Anfragereihenfolge

Eine Festplatte stellt nummerierte Sektoren bereit. Die Bearbeitung einer Anfrage kann aber eine Armbewegung und das Warten auf die Rotation erfordern, bevor Daten übertragen werden. Verbinde diese physischen Schritte mit Latenz, IOPS und Datenrate. Vergleiche dann Anfragereihenfolgen anhand von Bewegungsweg und Wartezeit: Ein kurzer Weg kann den Durchsatz verbessern und zugleich eine entfernte Anfrage warten lassen. Auch Geräte-Caches und Firmware beeinflussen, was das Betriebssystem beobachtet.

2.1 Verbinde Sektoradressen mit der Festplattenhardware

Eine Festplatte stellt ein Feld von Sektoren bereit, die ab null nummeriert sind. Diese Nummern heißen logische Blockadressen (LBAs). Traditionell war ein Sektor 512 Byte groß; viele Laufwerke verwenden heute physische Sektoren mit 4.096 Byte. Ein 512e-Laufwerk akzeptiert auf diesem größeren physischen Format logische Sektoren mit 512 Byte. Ein 4-KiB-Block eines Dateisystems kann sich daher über mehrere logische Sektoren erstrecken.

Stell dir die beweglichen Teile vor

Magnetische Magnetscheiben drehen sich auf einer Spindel. Jede Oberfläche hat konzentrische Spuren, die in Sektoren unterteilt sind, sowie einen Schreib-/Lesekopf an einem beweglichen Arm. Die Köpfe bewegen sich gemeinsam. Spuren an derselben Armposition auf allen Oberflächen bilden einen Zylinder. Übliche Spindeldrehzahlen sind 5.400 und 7.200 Umdrehungen pro Minute, bei schnelleren Festplattenfamilien auch 10.000 und 15.000 Umdrehungen pro Minute.

Benachbarte LBAs werden gewöhnlich nahe beieinander platziert. Das hilft sequenziellen Lesezugriffen, wiederholte Positionierungsbewegungen zu vermeiden. Ein auf einen Reservesektor umgelegter Sektor kann diese Beziehung unterbrechen. Die Software sieht daher einen nützlichen linearen Adressraum, ohne die genaue physische Platzierung zu kennen.

Äußere Spuren bieten mehr Platz für Sektoren. Die Zonenaufzeichnung legt mehr Sektoren auf diesen Spuren ab, sodass pro Umdrehung mehr Byte unter dem Kopf vorbeilaufen. Der sequenzielle Durchsatz kann sinken, wenn sich ein Lesezugriff zur Mitte hin bewegt. Der Spurversatz verschiebt Sektorpositionen zwischen benachbarten Spuren: Nach dem Spurwechsel des Kopfes trifft der nächste sequenzielle Sektor zur richtigen Zeit ein, statt gerade vorbeigelaufen zu sein.

Unterscheide Abschluss und Dauerhaftigkeit

Ein Laufwerk-Cache kann kürzlich gelesene Daten vorhalten und Schreibvorgänge aufnehmen. Diese Puffer reichen von einigen Megabyte bis zu Hunderten Megabyte; der Lesecache kann den Rest einer Spur vorhalten, die gerade unter dem Kopf vorbeiläuft. Beim Write-Back-Caching kann ein Schreibvorgang abgeschlossen werden, während seine Daten noch im flüchtigen Cache liegen. Write-Through wartet auf das Medium. Ein Befehl zum Leeren des Caches fordert an, dass gepufferte Schreibvorgänge den dauerhaften Speicher erreichen; Force Unit Access (FUA) fordert für den betroffenen Schreibvorgang einen dauerhaften Abschluss an.

Atomarität bei Stromausfall ist eine weitere Eigenschaft. Eine atomare Schreibeinheit ändert sich bei Stromausfall entweder vollständig oder bleibt unverändert. Die Sektorgröße allein bietet keine solche Zusicherung: Das Gerät muss seine Garantie dokumentieren. Ein Schreibvorgang über mehrere atomare Einheiten kann einen zerrissenen Schreibvorgang hinterlassen, bei dem einige Einheiten neu und andere alt sind. Das Leeren des Caches betrifft die Dauerhaftigkeit; atomare Einheiten betreffen partielle Aktualisierungen.

Lies Kapazitätsangaben richtig

Laufwerkskapazitäten verwenden dezimale SI-Präfixe. Binäre Einheiten verwenden Zweierpotenzen:

1 TB=1012 Byte,1 TiB=240 Byte

Eine 4-TB-Festplatte enthält daher:

4×1012/240≈3,64 TiB

Beide Angaben beschreiben dieselbe Anzahl an Byte. Ein Werkzeug, das etwa 3,64 anzeigt und mit „TB“ bezeichnet, hat binär gerechnet und eine dezimal wirkende Bezeichnung verwendet; durch die Umrechnung ist kein Speicherplatz verloren gegangen.

Erkenne eine zusätzliche Einschränkung beim Schreiben

Die überlappende magnetische Aufzeichnung (SMR) lässt benachbarte Spuren überlappen, um mehr Daten unterzubringen. Das erneute Schreiben einer Spur kann ihre Nachbarspur stören, was kleine zufällige Aktualisierungen aufwendig macht. Große sequenzielle Schreibvorgänge in geeigneten Zonen funktionieren besser. Es handelt sich um eine Magnetfestplatte mit einer Einschränkung bei der Schreibverwaltung, auch wenn gewöhnliche Lesezugriffe weiterhin dieselben Köpfe und rotierenden Magnetscheiben nutzen.

Wichtige Erkenntnisse

  • LBAs bezeichnen logische Sektoren; logische und physische Sektorgrößen können sich unterscheiden.
  • Die Köpfe positionieren sich über den Spuren, während sich die Magnetscheiben darunter drehen.
  • Zonenaufzeichnung und Spurversatz unterstützen effizienten sequenziellen Zugriff.
  • Ein Write-Back-Schreibvorgang kann vor der dauerhaften Speicherung abgeschlossen sein; das Leeren des Caches und FUA fordern Dauerhaftigkeit an.
  • Atomarität bei Stromausfall beruht auf der dokumentierten Gerätegarantie.
  • Dezimale TB und binäre TiB sind unterschiedliche Einheiten für dieselben Byte.
  • SMR verbessert die Speicherdichte, macht aber kleine zufällige erneute Schreibvorgänge aufwendiger.

2.2 Berechne Latenz, IOPS und Datenrate

Eine Festplattenanfrage benötigt Zeit, um die Daten zu erreichen, bevor sie übertragen werden. Bei einer einfachen Anfrage ohne Warteschlange oder Cache-Treffer lässt sich die Bedienzeit in drei Teile zerlegen:

TI/O=Tseek+Trotation+Ttransfer

Bei der Positionierung wird der Arm zur Spur bewegt und kommt dort zur Ruhe. Während der Rotationslatenz wird gewartet, bis der Sektor den Kopf erreicht. Die Übertragungszeit umfasst die unter dem Kopf vorbeilaufenden Byte. Falls eine Warteschlange vorhanden ist, kommt Wartezeit vor Beginn der Bedienung hinzu.

Rechne die Drehzahl in eine Wartezeit um

Eine Umdrehung dauert 60.000 ms geteilt durch die Drehzahl in Umdrehungen pro Minute. Bei 7.200 Umdrehungen pro Minute:

Trev=60.000/7200≈8,33 ms

Bei einer zufälligen Sektorposition beträgt die durchschnittliche Wartezeit eine halbe Umdrehung, also etwa 4,17 ms. Bei 15.000 Umdrehungen pro Minute dauert eine Umdrehung 4 ms und die durchschnittliche Wartezeit 2 ms. Eine höhere Drehzahl verringert die Rotationslatenz; sie verkürzt nicht direkt die Positionierungszeit des Arms.

Datenblätter geben eine durchschnittliche Positionierungszeit an. Bei gleichmäßig verteilten Anfragen beträgt die durchschnittliche Positionierungsstrecke etwa ein Drittel des gesamten Bewegungswegs, aber die Positionierungszeit ist nicht proportional zur Strecke. Bei kurzen Bewegungen dominieren Beschleunigung und Einschwingen; lange Bewegungen umfassen mehr Fahrt mit voller Geschwindigkeit.

Berechne einen kleinen zufälligen Lesezugriff

Verwende ein Laufwerk mit 7.200 Umdrehungen pro Minute, einer durchschnittlichen Positionierungszeit von 8 ms und einer Übertragungsrate von 200 MB/s. Eine 4-KiB-Anfrage umfasst 4.096 Byte. Berechne zuerst die Übertragung in Sekunden:

Ttransfer=4096/(200×106) s≈0,0205 ms

Addiere dann Positionierung und Übertragung:

TI/O≈8+4,17+0,0205=12,19 ms

Bei jeweils einer ausstehenden Anfrage ergibt sich etwa:

IOPS=1/0,01219≈82

Die effektive Rate beträgt etwa 4.096 Byte multipliziert mit 82 pro Sekunde oder 0,34 MB/s. Eine angegebene Übertragungsrate von 200 MB/s beschreibt die Übertragung bereits positionierter Daten; sie kann die ungefähr 12 ms für die Positionierung bei jeder kleinen zufälligen Anfrage nicht beseitigen.

Berechne einen langen sequenziellen Lesezugriff

Lies nun 100 MB nach einer anfänglichen Positionierung und Rotationswartezeit. Die Übertragungszeit beträgt 100/200 s oder 500 ms. Die Gesamtdauer beträgt etwa 512,17 ms, woraus folgt:

RI/O=100 MB/0,51217 s≈195 MB/s

Die effektive Rate ist ungefähr 580-mal so hoch wie bei kleinen zufälligen Zugriffen. Ein Positionierungsaufwand verteilt sich auf viel mehr Byte. Bei großen sequenziellen Übertragungen dominiert die Übertragungszeit, bei kleinen zufälligen Anfragen die Positionierung.

Verwende durchgehend Byte, wenn du KiB mit MB/s kombinierst, und rechne Millisekunden in Sekunden um, bevor du Byte durch die Zeit teilst. IOPS eignet sich für kleine zufällige Operationen; MB/s eignet sich für sequenzielle Datenströme. Vorauslesen, benachbarte Platzierung und das Zusammenfassen kleiner Schreibvorgänge zu sequenziellen Stapeln verbessern die Leistung, indem sie ändern, wie häufig Positionierungsaufwand anfällt.

Wichtige Erkenntnisse

  • Addiere Positionierungszeit, Rotationslatenz und Übertragungszeit, um die Bedienzeit einer Festplatte zu modellieren.
  • Die durchschnittliche zufällige Rotationslatenz beträgt die Hälfte von 60.000 geteilt durch die Drehzahl in Umdrehungen pro Minute, angegeben in Millisekunden.
  • Verwende Byte und einheitliche Zeiteinheiten, wenn du eine effektive Datenrate berechnest.
  • Bei kleinen zufälligen Anfragen fällt wiederholt Positionierungsaufwand an; große sequenzielle Anfragen verteilen diesen Aufwand.
  • IOPS zählt Operationen pro Sekunde; der Durchsatz zählt Byte pro Sekunde.

2.3 Vergleiche Schedulingwege und Wartezeiten

Ein Festplatten-Scheduler wählt, welche ausstehende Anfrage als Nächstes bearbeitet wird. Die Position liefert ihm nützliche Informationen über den Bedienaufwand. Ein kürzerer Armweg hilft, aber eine Strategie muss auch berücksichtigen, wie lange einzelne Anfragen warten.

Vergleiche die Strategien
StrategieNächste Anfrage oder WegWichtigster Zielkonflikt
FCFSAnkunftsreihenfolgeFaire Reihenfolge, möglicherweise langer Weg
SSTFNächstgelegene SpurGeringer Positionierungsaufwand, mögliches Verhungern
SCANAuf einem Durchlauf bis zum Rand bedienen, dann umkehrenDurch die Durchläufe beschränkte Wartezeit
C-SCANIn einer Richtung bedienen, ohne Bedienung zurückkehrenGleichmäßigere Wartezeiten über die Positionen hinweg
LOOKBei der letzten ausstehenden Anfrage umkehrenUnnötigen Weg zum Rand vermeiden
C-LOOKIn einer Richtung bedienen, zwischen äußersten ausstehenden Anfragen zurückspringenZirkuläre Bedienung ohne unnötigen Weg zum Rand

SSTF kann wiederholt neue Anfragen in der Nähe auswählen, während eine entfernte wartet. Ein Betriebssystem ohne genaue Kenntnis der Geometrie nähert SSTF häufig anhand des LBA-Abstands an, indem es den nächsten Block zuerst wählt. Die Fairness von SCAN-Verfahren setzt voraus, dass das System während seiner Durchläufe Anfragen weiter bedienen kann; ein überlastetes Gerät kann dennoch nicht für jede eintreffende Anfrage eine feste Antwortzeit bieten.

Addiere den Weg abschnittsweise

Nimm die Spuren 0–199, einen Kopf bei 50, der sich zu höheren Spurnummern bewegt, und die eintreffenden Anfragen 82, 170, 43, 140, 24, 16, 190. Beende die Zählung, sobald alle Anfragen abgeschlossen sind.

FCFS folgt der Liste. Der Weg beträgt 32 + 88 + 127 + 97 + 116 + 8 + 174 = 642 Spuren. SSTF besucht 43, 24, 16, 82, 140, 170, 190, insgesamt 208 Spuren.

SCAN besucht die höheren Anfragen, fährt weiter bis 199 und kehrt dann bis 16 um. Der Weg beträgt 149 + 183 = 332. LOOK kehrt bei 190 um, was 140 + 174 = 314 ergibt. C-LOOK fährt von 50 bis 190, springt zurück zu 16 und endet bei 43: 140 + 174 + 27 = 341 Spuren. Der Rücksprung ist eine tatsächliche Bewegung, auch wenn dabei keine Anfrage bedient wird. C-SCAN würde bis 199 fahren, ohne Bedienung zu 0 zurückkehren und dann in aufsteigender Richtung bis 43 bedienen.

Das beste Gesamtergebnis in dieser endlichen Warteschlange belegt nicht, welche Strategie für einen Strom zukünftiger Anfragen am besten ist. Der kurze Weg von SSTF geht hier bei anhaltender Last mit dem Risiko des Verhungerns einher.

Berücksichtige Rotation und Firmware

Shortest Positioning Time First (SPTF) minimiert die Summe aus Positionierungszeit und Rotationslatenz. Eine weiter entfernte Spur kann gewinnen, wenn ihr Sektor früher eintrifft. Für genaue Entscheidungen sind Geometrie und Rotationsposition nötig, daher ist die Firmware des Laufwerks besser dafür geeignet als das Betriebssystem.

Das Betriebssystem kann Anfragen für benachbarte Blöcke zusammenfassen und dann mehrere Befehle über NCQ einreichen. Die Firmware ordnet diesen Stapel anhand interner Informationen um. Antizipierendes Scheduling kann die Festplatte kurz ungenutzt lassen, um auf eine wahrscheinliche Folgeanfrage in der Nähe zu warten. Deadline-Scheduling begrenzt das Aufschieben; Linux mq-deadline verfolgt Ablauffristen und bevorzugt Lesezugriffe. SSD-Scheduling konzentriert sich auf Fairness und Latenz, weil keine Positionierung oder Rotation eingespart werden kann.

Wichtige Erkenntnisse

  • FCFS hält die Ankunftsreihenfolge ein; SSTF erkauft kürzere Wege mit dem Risiko des Verhungerns.
  • SCAN und LOOK durchlaufen beide Richtungen; zirkuläre Varianten bedienen in einer Richtung.
  • Zähle jede Bewegung, einschließlich einer zirkulären Rückkehr ohne Bedienung.
  • SPTF berücksichtigt neben der Positionierung auch die Rotationsposition.
  • Das Betriebssystem fasst Anfragen zusammen und reiht sie ein; die Laufwerksfirmware kann sie anhand der verborgenen Geometrie umordnen.
  • Fristen und antizipierendes Scheduling verfolgen Ziele über den kürzesten Weg hinaus.
3

Erkläre Flash-Aktualisierungen und SSD-Leistung

Flash kann eine kleine Seite schnell lesen, aber ihre erneute Nutzung setzt das Löschen eines viel größeren Blocks voraus. Ein SSD-Controller verbirgt diesen Unterschied hinter logischen Adressen. Verfolge, wie er neue Versionen platziert, alten Speicherplatz zurückgewinnt und Verschleiß verteilt. Nutze diese Mechanismen dann, um Schreibverstärkung, Warteschlangentiefe und Haltbarkeitsangaben zu deuten. Das Fehlen beweglicher Teile verändert den Speicheraufwand, macht aber nicht jeden Zugriff gleich günstig.

3.1 Verstehe Seiten, Löschblöcke und Verschleiß

NAND-Flash speichert Informationen als elektrische Ladung in Zellen. Der Controller unterscheidet Ladungszustände, um die Bits zu lesen. Eine Zelle mit mehr Bits benötigt mehr unterscheidbare Zustände. Das erhöht die Speicherdichte, erschwert aber Programmierung und Fehlerkontrolle.

Zähle die Ladungszustände
ZelltypBits pro ZelleLadungszustände
SLC12
MLC24
TLC38
QLC416

Für eine Zelle mit b Bits beträgt die Anzahl der Zustände 2b. Mehr Bits pro Zelle senken im Allgemeinen die Kosten pro Gigabyte, während die Programmierung langsamer wird und die Belastbarkeit durch Löschzyklen sinkt. Das sind Eigenschaften der Zellorganisation; auch der Controller und die Parallelität der gesamten SSD beeinflussen die Leistung.

Ordne jeder Operation ihre Einheit zu

Flash-Chips enthalten Löschblöcke, die jeweils viele Seiten enthalten. Eine Seite ist gewöhnlich 4–16 KiB groß, während ein Löschblock Hunderte Seiten enthalten und Hunderte KiB bis mehrere MiB umfassen kann. Eine Flash-Seite, eine Seite des virtuellen Speichers und ein Dateisystemblock sind unterschiedliche Einheiten, auch wenn manche Größen zufällig übereinstimmen.

Ein Lesevorgang liefert eine Seite zurück, gewöhnlich in einigen zehn Mikrosekunden. Ein Programmiervorgang schreibt eine gelöschte Seite und dauert einige Hundert Mikrosekunden. Ein Löschvorgang setzt einen ganzen Block auf Einsen zurück und dauert Millisekunden. Seiten werden in der vom Chip vorgegebenen Reihenfolge programmiert, gewöhnlich von niedrigeren zu höheren Seiten. Der Controller muss diese Reihenfolgeregeln beim Platzieren von Daten einhalten.

Eine benutzte Seite kann nicht einfach eine Ersatzversion aufnehmen. Zuerst muss ihr Löschblock gelöscht werden, wodurch der Inhalt jeder Seite in diesem Block zerstört wird. Das ist der zentrale Unterschied: Schreibvorgänge erfolgen seitenweise, Löschvorgänge blockweise.

Betrachte den Aufwand einer Aktualisierung an derselben Stelle

Stell dir einen Block mit den Seiten A, B, C und D vor. Um A durch A′ zu ersetzen und dabei dieselbe physische Platzierung beizubehalten:

  1. Lies B, C und D in einen temporären Speicher.
  2. Lösche den ganzen Block einschließlich des alten A.
  3. Programmiere A′, B, C und D in die gelöschten Seiten.

Eine Seite neuer Informationen hat drei Lesevorgänge, vier Programmiervorgänge und einen Löschvorgang verursacht. Nur A zu löschen ist nicht möglich. Eine SSD vermeidet diesen Aufwand bei jedem Überschreiben durch den Host, indem sie den Ersatz an anderer Stelle schreibt und ihre Zuordnung ändert.

Gehe mit Schäden und Ladungsverlust um

Jeder Programmier-/Löschzyklus (P/E-Zyklus) beschädigt die Zellen geringfügig. Typische Haltbarkeitsbereiche liegen bei etwa 50.000–100.000 Zyklen für SLC, 1.000–3.000 für TLC und etwa 1.000 oder weniger für QLC; tatsächliche Angaben unterscheiden sich je nach Chipgeneration und Hersteller stark. Controller nehmen Blöcke außer Betrieb, die unzuverlässig werden.

Ladung geht mit der Zeit ebenfalls verloren, besonders in verschlissenen Zellen. Lesen oder Programmieren kann benachbarte Zellen stören. Leistungsfähige fehlerkorrigierende Codes (ECC) beheben viele daraus entstehende Bitfehler, und der Controller kann Daten mit steigender Fehlerzahl auffrischen. Flash ist dauerhafter Speicher mit unterschiedlich aufwendigen Operationen und begrenzter Haltbarkeit. Ein schneller Seitenlesezugriff allein sagt daher wenig über den Aufwand anhaltender Überschreibungen aus.

Wichtige Erkenntnisse

  • Eine Zelle, die b Bits speichert, muss 2ᵇ Ladungszustände unterscheiden.
  • Flash liest und programmiert Seiten, löscht aber ganze Blöcke.
  • Programmierung benötigt gelöschten Speicherplatz; das Erhalten benachbarter gültiger Seiten macht Aktualisierungen an derselben Stelle aufwendig.
  • P/E-Zyklen verschleißen Zellen, während Störungen und Ladungsverlust Fehler erzeugen.
  • ECC, Auffrischung und das Ausmustern von Blöcken helfen dem Controller, diese Fehler zu bewältigen.

3.2 Verfolge logische Seiten durch den FTL

Der Host liest und überschreibt logische Blöcke. Der Flash Translation Layer (FTL) der SSD ordnet diese Adressen physischen Flash-Seiten zu und verwaltet die dahinter verborgenen Löschvorgänge. Würde die logische Seite N dauerhaft auf der physischen Seite N bleiben, müssten bei häufigem Überschreiben dieselben Blöcke wiederholt gelöscht werden.

Schreibe eine neue Version an anderer Stelle

Ein logstrukturierter FTL programmiert neue Daten in eine freie Seite und ändert ihre Zuordnung. Angenommen, LBA 100 ist der physischen Seite 0 und LBA 101 der Seite 1 zugeordnet. Eine Überschreibung von LBA 100 wird in Seite 2 programmiert. Die Zuordnung wird zu 100 → 2; Seite 0 wird ungültig. Der Host fordert weiterhin LBA 100 an und erhält die neue Version.

Ungültig ist ein Zuordnungszustand, keine sofortige physische Löschung. Die alten Bits bleiben bestehen, bis ihr Löschblock zurückgewonnen wird. Das Löschen oder Überschreiben einer Datei gibt daher keine verlässliche Zusicherung, wann jede alte physische Kopie verschwindet. Zuverlässiges Löschen nutzt eine geeignete Sanitize-Operation des Laufwerks oder ein korrekt verwaltetes Verschlüsselungsverfahren für das gesamte Laufwerk mit anschließender Schlüsselvernichtung.

Gewinne Speicherplatz zurück und zähle zusätzliche Schreibvorgänge

Die Garbage Collection (GC) wählt einen Block, kopiert seine gültigen Seiten an eine andere Stelle, aktualisiert die Zuordnung und löscht den alten Block. Ungültige Seiten müssen nicht kopiert werden. Ein Block mit vielen ungültigen Seiten liefert pro kopierter gültiger Seite mehr freien Speicherplatz.

Die Schreibverstärkung (WA) misst diese zusätzliche Programmierung:

WA=in den Flash programmierte Bytevom Host geschriebene Byte

In einem Block mit 64 Seiten, davon 48 gültig und 16 ungültig, kopiert die GC 48 Seiten. Das Löschen des Blocks erzeugt 64 freie Seiten, aber die Kopien haben an anderer Stelle 48 Seiten verbraucht: Der Nettogewinn beträgt 16. Wird dieser Gewinn mit 16 Seiten des Hosts gefüllt, entstehen 64 Flash-Seitenprogrammiervorgänge für 16 Seitenschreibvorgänge des Hosts, also WA = 4. Höhere Verstärkung verbraucht Bandbreite und die Belastbarkeit durch Löschzyklen schneller.

Over-Provisioning reserviert Flash-Speicherplatz, den der Host nicht füllen kann. Mehr freier Speicher gibt der GC Spielraum, günstigere Blöcke zu wählen. TRIM, bei NVMe Deallocate und bei SCSI UNMAP genannt, teilt dem Gerät mit, welche logischen Bereiche keine benötigten Daten mehr enthalten. Die Seiten einer gelöschten Datei können dann als ungültig behandelt werden, statt während der GC kopiert zu werden.

Plane Zuordnungsspeicher und Verschleiß ein

Eine Zuordnung auf Seitenebene benötigt einen Eintrag pro logischer Seite. Ein Gerät mit 1 TiB und 4 KiB großen Seiten hat:

240/212=228 Eintra¨ge

Bei 4 Byte pro Eintrag benötigt die Tabelle 1 GiB. Die Zuordnung auf Blockebene verkleinert die Tabelle, macht aber kleine Aktualisierungen aufwendig. Hybride Zuordnung kombiniert Blockzuordnungen mit protokollartigen Bereichen mit Seitenzuordnung; ein anderer Ansatz hält nur aktive Einträge der Seitenzuordnung im Cache.

Der Verschleißausgleich verteilt Löschvorgänge über die Blöcke. Neue Schreibvorgänge wechseln bereits den Ort, aber Blöcke mit kalten, unveränderten Daten könnten sonst dauerhaft verschont bleiben, während heiße Bereiche verschleißen. Das Verschieben einiger kalter Daten gibt wenig genutzte Blöcke für den Pool der beschreibbaren Blöcke frei. Diese Migration kann zusätzliche Schreibvorgänge erzeugen, daher wägt der Controller gleichmäßigen Verschleiß gegen Kopieraufwand ab.

Wichtige Erkenntnisse

  • Ein FTL ordnet logische Adressen des Hosts physischen Flash-Seiten zu.
  • Aktualisierungen an anderer Stelle machen alte Seiten ungültig, ohne deren Bits sofort zu löschen.
  • GC kopiert gültige Seiten, bevor sie einen Block löscht.
  • Die Schreibverstärkung teilt die gesamten Flash-Programmiervorgänge durch die Schreibvorgänge des Hosts.
  • Over-Provisioning und TRIM verringern unnötiges Kopieren.
  • Zuordnungen auf Seitenebene tauschen Speicherbedarf gegen Flexibilität bei Aktualisierungen.
  • Der Verschleißausgleich bezieht wenig genutzte Blöcke in die Löschvorgänge ein.

3.3 Deute SSD-Geschwindigkeit und Haltbarkeit

Eine SSD hat weder Festplattenarm noch rotierende Magnetscheibe. Sie vermeidet mechanische Positionierungsverzögerungen im Millisekundenbereich, aber ihre Geschwindigkeit hängt weiterhin von Anfragegröße, Parallelität, Schreibverlauf und der Hintergrundarbeit ihres Controllers ab.

Vergleiche Latenz und Durchsatz
Arbeitslast oder EigenschaftFestplatteFlash-SSD
Latenz kleiner zufälliger LesezugriffeMillisekundenEinige Zehn bis etwa hundert Mikrosekunden
Rate kleiner zufälliger LesezugriffeUngefähr 75–200 IOPSNVMe kann bei genügend eingereihter Arbeit Hunderttausende erreichen
Sequenzielle ÜbertragungBis zu einigen Hundert MB/sEtwa 550 MB/s bei SATA; mehrere GB/s bei NVMe
Wichtigster interner AufwandPositionierung, Rotation, ÜbertragungSeitenzugriff, Controllerarbeit, GC, Parallelität

Dies sind typische Geräteklassen, keine Garantien für jedes Laufwerk. Der Durchsatz von SATA-SSDs wird durch die Verbindung mit 6 Gb/s begrenzt. NVMe nutzt PCIe und kann viele Flash-Kanäle gleichzeitig beschäftigen.

Ein Programm, das einen kleinen Lesezugriff ausgibt und vor dem nächsten auf dessen Abschluss wartet, erfährt die Latenz jeder Anfrage. Bei einer Latenz von 80 µs erlaubt dieses serielle Muster etwa 12.500 Operationen pro Sekunde. Ein Gerät, das mit einer viel höheren IOPS-Rate beworben wird, benötigt viele gleichzeitig laufende Anfragen, bereitgestellt durch Threads oder asynchrone Ein-/Ausgabe. Warteschlangentiefe schafft Möglichkeiten für parallele Arbeit; sie kann auch zusätzliche Wartezeit verursachen, wenn das Gerät ausgelastet ist.

Berücksichtige den Schreibverlauf

Zufällige und sequenzielle Schreibvorgänge bleiben unterschiedlich. Zufällige Aktualisierungen können ungültige Seiten verstreut zwischen gültigen Seiten hinterlassen und dadurch die Kopierarbeit der GC erhöhen. Sequenzielle Arbeitslasten können ganze Bereiche gemeinsam ungültig machen, was ihre Rückgewinnung günstiger macht und die WA näher bei eins hält. Eine leere SSD kann direkt in freien Speicher programmieren; eine gefüllte SSD muss ihn zurückgewinnen. Die Leistung im stationären Zustand umfasst diesen laufenden GC-Aufwand, Tests im Neuzustand dagegen möglicherweise nicht.

Lies Haltbarkeitsangaben als Schreibbudget

TBW ist die angegebene Gesamtzahl der vom Host geschriebenen Terabyte. DWPD bezeichnet vollständige Schreibvorgänge des Hosts auf das Laufwerk pro Tag über den Garantiezeitraum. Für ein Gerät mit 1 TB und einer Angabe von 600 TBW über fünf Jahre gilt:

DWPD=600/(1×5×365)≈0,33

Bei 50 GB pro Tag wären 600 TB Schreibvorgänge des Hosts nach 12.000 Tagen erreicht, also nach etwa 33 Jahren. Diese Rechnung vergleicht Arbeitslasten und ist keine Lebensdauerprognose: Controllerausfälle, Alterung und Garantiegrenzen sind weiterhin relevant. Hohe interne Verstärkung verschleißt Zellen schneller, obwohl die Haltbarkeitsangabe die Schreibvorgänge des Hosts zählt.

Wähle das passende Gerät für die Arbeit

Festplatten bieten geringe Kosten pro Terabyte für große, selten genutzte Datensätze. SSDs eignen sich für latenzempfindliche Arbeit. Hierarchische Datenspeicherung hält heiße Daten auf SSDs und kältere auf Festplatten. Beide können ausfallen: Festplatten haben mechanische Fehler und defekte Sektoren; SSDs haben Verschleiß, Controllerfehler und Firmwarefehler. Redundanz und separate Datensicherungen bleiben für beide sinnvoll.

Bei SSDs erzeugt Defragmentierung Schreibvorgänge und bringt beim Positionierungsaufwand wenig Nutzen. TRIM hilft dem Controller, ungenutzte Daten zu erkennen. Aktuelle Partitionierungswerkzeuge richten Anfänge häufig an 1-MiB-Grenzen aus und vermeiden so ungünstig ausgerichtete Blockanfragen.

Wichtige Erkenntnisse

  • Eine SSD beseitigt die mechanische Positionierung, aber Controller und Flash verursachen weiterhin Aufwand.
  • Hohe beworbene IOPS-Zahlen erfordern genügend unabhängige gleichzeitig laufende Anfragen.
  • Zufällige Schreibvorgänge und GC können die Schreibleistung im stationären Zustand senken.
  • TBW zählt Schreibvorgänge des Hosts; DWPD verteilt dieses Budget auf Kapazität und Garantietage.
  • Wähle SSDs für schnellen Zugriff und Festplatten für wirtschaftliche große Kapazitäten.
  • TRIM und geeignete Ausrichtung helfen SSDs, unnötige Arbeit zu vermeiden.
4

Ordne Daten zu und bewerte RAID-Entscheidungen

Ein Verbund kombiniert Festplatten hinter einer Blockgeräteschnittstelle. Sein Aufbau entscheidet, welche Festplatten jeden Block speichern, wie viel Kapazität für Daten bleibt und was einen Ausfall übersteht. Arbeite dich von Striping und gespiegelten Paaren zur XOR-Parität vor und zähle dann physische Ein-/Ausgaben, um die Leistung zu erklären. Beziehe schließlich den degradierten Betrieb und die Wiederaufbauzeit in die Wahl eines Levels ein: Ein intakter Verbund ist nur eine Phase seiner Betriebszeit.

4.1 Bewerte, was ein Verbund leistet

RAID, ein redundanter Verbund preiswerter oder unabhängiger Festplatten, stellt mehrere physische Festplatten als ein logisches Blockgerät dar. Intern leitet eine Zuordnung jeden logischen Block an Datenkopien oder an einen Stripe mit Redundanz. Anwendungen und Dateisysteme können die Blockschnittstelle weiter nutzen, ohne diesen Aufbau zu kennen.

Vergleiche drei getrennte Kennzahlen

Kapazität ist der nutzbare Platz für Benutzerdaten. Zuverlässigkeit beschreibt die Ausfälle, die ein Aufbau tolerieren kann. Leistung umfasst sowohl den Durchsatz über viele Operationen als auch die Latenz einer einzelnen Operation. Ein Level kann eine Kennzahl verbessern und zugleich eine andere verringern. Mehr Gesamtdurchsatz muss auch nicht die Latenz einer einzelnen Blockanfrage senken.

Verwende dieses einfache Modell für gleich große Festplatten:

SymbolBedeutung
NAnzahl der Festplatten
BBlöcke pro Festplatte
SSequenzieller Durchsatz einer Festplatte
RZufälliger Durchsatz einer Festplatte für die Anfragegröße
TLatenz einer Anfrage an eine Festplatte

S und R verwenden dieselben Einheiten für die Datenrate, etwa MB/s. Bei einer Festplatte unterscheiden sie sich stark: Das frühere Zeitbeispiel ergab etwa 195 MB/s sequenziell und 0,34 MB/s bei kleinen zufälligen Lesezugriffen. Die Modellformeln setzen genügend gleichzeitige Arbeit und keinen Engpass im Controller voraus; sie sollen den Aufwand des Aufbaus sichtbar machen.

Benenne das Fehlermodell

Eine Fail-Stop-Festplatte funktioniert korrekt, bis sie vollständig und erkennbar ausfällt. Das macht die grundlegende Betrachtung von RAID handhabbar: Der Verbund weiß, welche Festplatte fehlt. Reale Festplatten können auch unlesbare Sektoren haben oder falsche Byte zurückgeben. Diese partiellen und unbemerkten Fehler benötigen zusätzlich zu einem Aufbau, der den Ausfall einer ganzen Festplatte übersteht, Integritätsprüfungen.

Ein redundanter Verbund läuft im degradierten Betrieb, solange die ausgefallenen Festplatten innerhalb seiner Toleranz bleiben. Er stellt weiterhin Daten bereit, aber die verbliebenen Festplatten leisten zusätzliche Arbeit oder haben weniger freie Lesekapazität. Ein Wiederaufbau füllt eine Ersatzfestplatte anhand der verbliebenen Informationen. Ein Hot-Spare-Laufwerk ist eine eingebaute, ungenutzte Festplatte, die einen zeitnahen Wiederaufbau ermöglicht. RAID-0 hat keine Redundanz und nach dem Verlust eines Mitglieds keinen solchen degradierten Betriebszustand.

Halte Aktualisierungen über mehrere Festplatten konsistent

RAID kann in einem Hardwarecontroller mit eigenem Prozessor und geschütztem Cache, in Betriebssystemsoftware wie Linux md oder innerhalb eines Dateisystems wie ZFS laufen. Jede Variante muss einen Schreibvorgang behandeln, der zwischen Aktualisierungen verschiedener Festplatten unterbrochen wird. Spiegel können voneinander abweichen; Daten und Parität können verschiedene Versionen beschreiben. Der Paritätsfall heißt Write Hole.

Ein geschützter nichtflüchtiger Cache oder ein geeignetes Journal kann ausstehende Aktualisierungen für die Wiederherstellung erhalten. Eine Write-Intent-Bitmap hält fest, welche Bereiche nach einer Unterbrechung erneut synchronisiert werden müssen. Sie bewahrt die neuen Daten nicht auf und ist für sich genommen keine vollständige Lösung des Paritäts-Write-Hole-Problems, wenn außerdem eine Festplatte fehlt.

RAID erhält die Verfügbarkeit bei bestimmten Festplattenausfällen. Das Löschen einer Datei oder ein Schreibvorgang durch Erpressungssoftware erreicht die Kopien des Verbunds über die normale Schnittstelle. Feuer oder Diebstahl kann den gesamten Verbund beseitigen. Separate Datensicherungen bieten wiederherstellbare Versionen oder Kopien über solche gemeinsamen Ereignisse hinaus.

Wichtige Erkenntnisse

  • Vergleiche nutzbare Kapazität, Ausfalltoleranz, Durchsatz und Anfragelatenz getrennt.
  • Das grundlegende Fail-Stop-Modell nimmt an, dass eine ausgefallene Festplatte erkannt wird.
  • Redundante Verbünde können im degradierten Betrieb Daten bereitstellen und auf ein Ersatzlaufwerk wiederaufbauen.
  • Unterbrochene Aktualisierungen über mehrere Festplatten benötigen einen Konsistenzmechanismus.
  • Eine Bitmap bezeichnet Bereiche zur erneuten Synchronisierung; geschützte Protokolle können Aktualisierungsinformationen bewahren.
  • RAID und separate Datensicherungen schützen vor unterschiedlichen Arten von Verlust.

4.2 Finde Blöcke in Stripes und gespiegelten Paaren

RAID-0 verteilt Daten per Striping über Festplatten, ohne redundante Informationen vorzuhalten. Bei einem Chunk von einem Block und einer Nummerierung ab null geht der logische Block A an:

Festplatte=A mod N,Offset=⌊A/N⌋

Bei vier Festplatten gehört Block 14 zu Festplatte 2 beim Offset 3. Modulo wählt die Festplatte; ganzzahlige Division zählt die vollständigen Stripe-Zeilen vor diesem Block.

Beziehe die Chunkgröße in die Zuordnung ein

Ein Chunk ist eine Folge aufeinanderfolgender Blöcke, die auf einer Festplatte abgelegt werden, bevor zur nächsten gewechselt wird. Seine Größe sei c Blöcke. Bestimme zuerst den Chunk, dann die Festplatte und den lokalen Offset:

q=⌊A/c⌋,Festplatte=q mod N Offset=⌊q/N⌋c+(A mod c)

Für Block 14, c = 2 und N = 4 ist der Chunk 7, die Festplatte 3 und der Offset 2. Würdest du direkt A modulo N verwenden, blieben die Chunks aus zwei Blöcken unberücksichtigt. Kleine Chunks können eine große Anfrage auf mehr Festplatten verteilen; größere Chunks halten mehr benachbarte Arbeit auf einer Festplatte. Übliche Chunks in Verbünden reichen von 64 bis 512 KiB; Linux md verwendet häufig standardmäßig 512 KiB.

RAID-0 hat die Kapazität NB und ideale sequenzielle und zufällige Gesamtraten von NS und NR. Eine kleine Anfrage an eine einzelne Festplatte dauert weiterhin etwa T. Der Ausfall eines beliebigen Mitglieds führt zum Verlust eines Teils der Daten des Verbunds. Daher eignet sich dieser Aufbau für reproduzierbare temporäre Daten, wenn Verfügbarkeit unwichtig ist.

Ergänze gespiegelte Kopien

Ein RAID-1-Spiegel aus zwei Festplatten schreibt jeden Block auf beide Mitglieder. RAID-10 verteilt Daten per Striping über gespiegelte Paare. Bei vier Festplatten und Chunks von einem Block über die Paare hinweg geht Block A an Paar A modulo 2 beim Offset ⌊A/2⌋, und beide Mitglieder speichern ihn.

RAID-10 nutzt die Hälfte der Rohkapazität. Es übersteht jeden einzelnen Ausfall und kann N/2 Ausfälle überstehen, wenn jeder ein anderes Paar trifft. Der Verlust beider Mitglieder eines Paars führt zum Verlust der Daten dieses Paars, selbst wenn alle anderen Paare intakt bleiben.

Zähle die nutzbare Arbeit pro Festplatte

Jeder gespiegelte Schreibvorgang aktualisiert zwei Festplatten parallel. Seine Latenz beträgt etwa T, bestimmt durch das langsamere Mitglied, während der zufällige Gesamtschreibdurchsatz NR/2 beträgt. Lesezugriffe können auf alle Kopien verteilt werden, was bei genügend unabhängigen zufälligen Lesezugriffen NR ergibt.

Vier Festplatten mit je 4 TB; S = 200 MB/s, R = 1 MB/sRAID-0RAID-10
Nutzbare Kapazität16 TB8 TB
Sequenzielle Lese-/Schreibrate im einfachen Modell800 MB/s400 MB/s
Zufällige Leserate4 MB/s4 MB/s
Zufällige Schreibrate4 MB/s2 MB/s

Das einfache Modell für gespiegelte sequenzielle Lesezugriffe ergibt NS/2, weil Partner die Blöcke des jeweils anderen überspringen. Implementierungen, die jeder Kopie ganze Lesebereiche zuweisen, können besser abschneiden. Spiegelung bietet mehr Kapazität zur Bedienung von Lesezugriffen; sie lässt eine einzelne Festplatte einen einzelnen Lesezugriff nicht in der halben Zeit abschließen.

Wichtige Erkenntnisse

  • Verwende Modulo für die Festplatte bei einem Stripe aus einzelnen Blöcken und ganzzahlige Division für den lokalen Offset.
  • Bestimme bei größeren Chunks zuerst den Chunk, bevor du die Festplatte auswählst.
  • RAID-0 hat die volle nutzbare Kapazität und toleriert keinen Festplattenausfall.
  • RAID-10 verteilt Daten per Striping über gespiegelte Paare und nutzt die Hälfte der Rohkapazität.
  • Zwei Ausfälle sind nur überlebbar, wenn kein gespiegeltes Paar beide Mitglieder verliert.
  • Gespiegelte Schreibvorgänge belegen zwei Festplatten; unabhängige Lesezugriffe können jede der beiden Kopien nutzen.
  • Das Ergebnis NS/2 für gespiegelte sequenzielle Lesezugriffe im einfachen Modell hängt von der Aufteilung der Lesezugriffe ab.

4.3 Rekonstruiere und aktualisiere Parität

Ein Paritäts-Stripe speichert Datenblöcke und einen Redundanzblock, der ihrem bitweisen XOR entspricht. Für jede Bitposition ist XOR eins, wenn eine ungerade Anzahl der Eingaben eins ist. Die XOR-Verknüpfung eines Werts mit sich selbst hebt ihn auf. Diese Aufhebung ermöglicht es dem Verbund, einen fehlenden Block zu berechnen.

Stelle einen bekannten fehlenden Block wieder her

Für die Daten 0011, 0101 und 1001 gilt:

P=0011⊕0101⊕1001=1111

Wenn der zweite Block fehlt:

D2=0011⊕1001⊕1111=0101

Der Verbund muss wissen, welcher Block zu rekonstruieren ist. Eine Paritätsabweichung zwischen scheinbar intakten Blöcken zeigt Inkonsistenz, identifiziert aber nicht das fehlerhafte Mitglied. Eine Prüfsumme kann helfen festzustellen, welche Daten gültig sind.

Aktualisiere einen Block, ohne den ganzen Stripe zu lesen

Das Rekonstruieren der Parität aus den übrigen Daten ist additive Parität. Bei fünf Datenfestplatten muss das Ändern eines Blocks die anderen vier Datenblöcke lesen und anschließend mit dem neuen Wert verknüpfen. Subtraktive Parität oder Read-Modify-Write entfernt den Beitrag des alten Blocks und fügt den neuen ein:

Pnew=Pold⊕Dold⊕Dnew

Ändere im obigen Stripe 0101 in 1100:

1111⊕0101⊕1100=0110

Das benötigt zwei Lesezugriffe, alte Daten und alte Parität, gefolgt von zwei Schreibzugriffen, neue Daten und neue Parität. Die Lesephase muss vor der Schreibphase abgeschlossen sein, was etwa 2T Latenz ergibt. Ein Full-Stripe-Write hat jeden neuen Datenblock und berechnet daher die neue Parität direkt, ohne alte Blöcke lesen zu müssen.

Verteile die Paritätsarbeit
LevelPlatzierung der RedundanzNutzbare BlöckeTolerierte FestplattenausfälleIdeale Rate kleiner zufälliger Schreibvorgänge
RAID-4Eine eigene Paritätsfestplatte(N − 1)BEin beliebigerR/2
RAID-5Ein Paritätsblock, abwechselnd auf den Festplatten(N − 1)BEin beliebigerNR/4
RAID-6Zwei unabhängige Redundanzblöcke pro Stripe(N − 2)BZwei beliebigeNR/6

Die Paritätsfestplatte von RAID-4 führt für jede kleine Aktualisierung einen Lese- und einen Schreibzugriff aus und erzeugt so einen festen Engpass. RAID-5 verteilt die Parität auf die Mitglieder, sodass Aktualisierungen unabhängiger Stripes gleichzeitig laufen können. Pro kleinem logischen Schreibvorgang fallen weiterhin vier physische Ein-/Ausgaben an. Zufällige Lesezugriffe können alle Festplatten mit NR nutzen; große sequenzielle Schreibvorgänge erreichen etwa (N − 1)S.

RAID-6 ergänzt unabhängige P- und Q-Redundanz und verwendet für Q gewöhnlich einen Reed–Solomon-Code. Zwei Kopien desselben XOR würden nur eine Gleichung ergeben. Die Aktualisierung eines Datenblocks durch Read-Modify-Write liest alte Daten, P und Q und schreibt anschließend alle drei: sechs Ein-/Ausgaben.

Bei vier 4-TB-Festplatten mit R = 1 MB/s bieten RAID-4 und RAID-5 12 TB und zufällige Schreibraten von 0,5 beziehungsweise 1 MB/s. RAID-6 bietet 8 TB und etwa 0,67 MB/s. Bei degradiertem RAID-5 benötigt ein fehlender Datenblock N − 1 Lesezugriffe auf verbliebene Blöcke. Bei RAID-6 mit einem fehlenden Datenblock benötigt die Rekonstruktion mit P N − 2 Lesezugriffe und lässt Q aus; zwei fehlende Blöcke benötigen beide unabhängigen Gleichungen.

Wichtige Erkenntnisse

  • XOR-Parität rekonstruiert einen identifizierten fehlenden Block.
  • Eine Paritätsabweichung allein kann unbemerkte Datenkorruption nicht lokalisieren.
  • Read-Modify-Write liest alte Daten und Parität und schreibt anschließend beide neuen Werte.
  • Full-Stripe-Writes vermeiden das Lesen alter Daten und alter Parität.
  • RAID-4 bündelt den Paritätsengpass auf einer Festplatte; RAID-5 verteilt ihn.
  • RAID-6 benötigt zwei unabhängige Codes und übersteht zwei beliebige Festplattenausfälle.
  • Zähle vier Ein-/Ausgaben für einen kleinen RAID-5-Schreibvorgang und sechs für RAID-6.
  • Lesezugriffe im degradierten Betrieb rekonstruieren fehlende Daten und beanspruchen die verbliebenen Festplatten stärker.

4.4 Wähle ein Level unter Berücksichtigung des Wiederaufbaus

Beginne die Wahl eines RAID-Levels bei der Arbeitslast und den Verlusten, die das System überstehen muss. Die Kapazität allein berücksichtigt weder den Schreibaufwand noch die Leistung im degradierten Betrieb oder die Zeit zur Wiederherstellung der Redundanz. Ein größerer Verbund hat mehr Festplatten, die Kapazität beitragen, aber während der Wiederherstellung sind auch mehr Mitglieder und Sektoren Risiken ausgesetzt.

Stimme den Aufbau auf die Arbeitslast ab

RAID-0 eignet sich für temporäre Daten, die sich wiederherstellen lassen und bei denen keine Toleranz gegenüber Festplattenausfällen nötig ist. RAID-10 eignet sich für viele kleine zufällige Lese- und Schreibzugriffe, wenn der Verzicht auf die Hälfte der Kapazität akzeptabel ist. Paritäts-RAID nutzt Speicherplatz effizient und funktioniert gut bei großen Full-Stripe-Writes. RAID-6 ergänzt Schutz gegen zwei beliebige Ausfälle, was bei einem langen Wiederaufbau großer Laufwerke nützlich ist.

Bei vier Festplatten bieten RAID-10 und RAID-6 jeweils die Hälfte der Rohkapazität. RAID-10 benötigt pro kleinem logischen Schreibvorgang zwei physische Schreibvorgänge; Read-Modify-Write bei RAID-6 benötigt sechs Ein-/Ausgaben. RAID-6 übersteht jedes Ausfallmuster mit zwei Festplatten, während bei RAID-10 verschiedene Paare betroffen sein müssen. Keine der beiden Optionen ist bei jeder Kennzahl überlegen.

Berechne eine untere Schranke für den Wiederaufbau

Der Wiederaufbau eines Spiegels kopiert dessen verbliebene Partnerfestplatte. Der vollständige Wiederaufbau eines Paritätsverbunds liest verbliebene Daten und rekonstruiert fehlende Blöcke. Die P-Gleichung von RAID-6 kann einen fehlenden Datenblock ohne Q rekonstruieren; die tatsächlichen Lesezugriffe bei der Wiederherstellung hängen von Aufbau und Implementierung ab. Der Wiederaufbau ganzer Geräte kann umfangreiche Lesezugriffe auf die verbliebenen Festplatten umfassen.

Das Beschreiben einer 20-TB-Ersatzfestplatte mit 200 MB/s dauert mindestens:

T=20×1012200×106=100.000 s

Das sind etwa 27,8 Stunden ohne konkurrierende Last oder zusätzlichen Engpass. Normale Ein-/Ausgabe, Positionierungsbewegungen, Controllerarbeit und Drosselung der Wiederherstellung können die Dauer verlängern. Ein Hot-Spare-Laufwerk verkürzt die Wartezeit bis zum Beginn des Wiederaufbaus; es beseitigt nicht die Kopierzeit.

Untersuche die Gefährdung während der Wiederherstellung

Ein degradierter RAID-5-Verbund hat seine einzige Toleranz für einen Festplattenausfall bereits aufgebraucht. Ein weiterer Festplattenverlust lässt die Wiederherstellung scheitern. Auch ein unlesbarer Sektor auf einer verbliebenen Festplatte kann einen Stripe mit zwei unbekannten Blöcken hinterlassen: dem Block des fehlenden Mitglieds und dem unlesbaren Block des verbliebenen Mitglieds. Andere Stripes können weiterhin wiederherstellbar sein.

Als Beispielrechnung liest der Wiederaufbau von vier 4-TB-RAID-5-Mitgliedern drei vollständige verbliebene Festplatten:

3×4×1012×8=9,6×1013 Bits

Werden Fehler mit einem pro 10¹⁴ Bits modelliert, beträgt die erwartete Anzahl 0,96. Das ist eine erwartete Anzahl unter diesem Ratenmodell, keine Ausfallwahrscheinlichkeit von 96 %. Eine Fehlergrenze aus dem Datenblatt ist keine gemessene Vorhersage für einen bestimmten Wiederaufbau. Spezifikationen für Unternehmenslaufwerke geben häufig eine strengere Grenze an, etwa einen Fehler pro 10¹⁵ Bits.

Die Erweiterung von RAID-5 von vier auf acht Festplatten erhöht die nutzbare Kapazität von 75 % auf 87,5 % des Rohspeichers und erhöht zugleich die Menge der bei der Wiederherstellung gelesenen verbliebenen Daten. Ähnliches Alter und ähnlicher Verschleiß schwächen außerdem die Annahme unabhängiger Ausfälle. Eine schreibintensive Datenbank kann RAID-10 bevorzugen, ein großes sequenzielles Archiv RAID-6. Plane Scrubbing ein, um defekte Sektoren aufzudecken, solange Redundanz besteht, und bewahre separate Datensicherungen auf.

Wichtige Erkenntnisse

  • Wähle anhand von Arbeitslast, Kapazität, Ausfallmustern und Gefährdung bei der Wiederherstellung.
  • Kapazität geteilt durch die Wiederaufbaurate ergibt eine optimistische Wiederaufbauzeit.
  • Ein degradierter RAID-5-Verbund toleriert keinen weiteren vollständigen Festplattenausfall.
  • Ein unlesbarer Sektor auf einer verbliebenen Festplatte kann die Rekonstruktion seines Stripe verhindern.
  • Eine erwartete Fehleranzahl ist keine Ausfallwahrscheinlichkeit.
  • Mehr RAID-5-Mitglieder verbessern die Speichereffizienz und erhöhen zugleich die Gefährdung bei der Wiederherstellung.
5

Prüfe Daten und behebe nachgewiesene Fehler

Eine Festplatte kann online bleiben und dabei unlesbare oder falsche Blöcke zurückgeben. Unterscheide diese Fehler vom Ausfall einer ganzen Festplatte und vergleiche dann Prüfsummenverfahren und die Fehler, die sie übersehen können. Die Platzierung der Prüfsumme ist ebenso wichtig wie die Berechnung: Korrekte Byte an der falschen Adresse und eine alte Version an der richtigen Adresse benötigen unterschiedliche Prüfungen. Kombiniere Überprüfung mit Redundanz und regelmäßigen Lesezugriffen, um Fehler zu finden und zu beheben, bevor die Wiederherstellungsmöglichkeiten verloren gehen.

5.1 Erkenne partielle und unbemerkte Fehler

Das Fail-Stop-Modell erkennt eine ganze Festplatte als fehlend. Ein Fail-Partial-Gerät funktioniert größtenteils, während einige Blöcke unlesbar oder falsch sind. Solche Fehler können in selten genutzten Daten verborgen bleiben, bis ein weiterer Ausfall diese Blöcke für einen Wiederaufbau nötig macht.

Unterscheide einen gemeldeten Lesefehler von falschen Bytes

Ein latenter Sektorfehler (LSE) bedeutet, dass das Laufwerk einen Sektor nicht lesen kann und einen Fehler meldet. Physische Schäden oder Bitfehler, die die Korrekturfähigkeit des internen ECC übersteigen, können ihn verursachen. Da der Ort bekannt ist, kann ein redundantes System einen Spiegel lesen oder den Block aus der Parität rekonstruieren. Schreibt es die wiederhergestellten Daten erneut, kann das Laufwerk die beschädigte Stelle ausmustern oder auf eine andere Stelle abbilden.

Unbemerkte Datenkorruption bedeutet, dass ein Lesezugriff falsche Byte zurückgibt, ohne einen Fehler zu melden. Fehlerhafte Firmware, ein Controller- oder Busfehler oder ein fehlgeleiteter Schreibvorgang können dies verursachen. Der Erfolgsstatus des Befehls besagt, dass die Übertragung abgeschlossen wurde; er ist keine Ende-zu-Ende-Prüfung des Inhalts.

Unterscheide Adress- und Versionsfehler
FehlerWas falsch istWarum eine lokale Datenprüfsumme ihn übersehen kann
Fehlgeleiteter SchreibvorgangKorrekte neue Byte landen auf der falschen Festplatte oder im falschen BlockDaten und zugehörige Prüfsumme können zusammen übertragen werden
Verlorener SchreibvorgangEine als abgeschlossen gemeldete Aktualisierung erreicht den Speicher nieAlte Byte stimmen weiterhin mit ihrer alten Prüfsumme überein

Ein fehlgeleiteter Schreibvorgang kann einen nicht zugehörigen Block überschreiben und das vorgesehene Ziel unverändert lassen. Ein verlorener Schreibvorgang lässt die alte Version des vorgesehenen Blocks bestehen. Eine Adresskennung hilft, den ersten Fehler zu erkennen; eine unabhängig gespeicherte Erwartung der neuen Version hilft beim zweiten.

Der interne ECC des Laufwerks korrigiert viele Fehler in gespeicherten Bits. Er kann nicht alle Fehler an anderen Stellen des Pfads prüfen, etwa einen Wert, der beschädigt wurde, bevor das Laufwerk seinen Code berechnet, oder nachdem es ihn zurückgegeben hat. Ein auf das Medium begrenzter Schutz lässt andere Komponenten ungeprüft.

Verstehe, warum die Größenordnung zählt

Eine Feldstudie beobachtete 1,53 Millionen Festplatten im produktiven Einsatz über 32 Monate. LSEs betrafen etwa 8,5 % der Nearline-Laufwerke und 1,9 % der Laufwerke der Unternehmensklasse. Eine separate Korruptionsstudie derselben Grundgesamtheit über 41 Monate fand Prüfsummenabweichungen bei 0,86 % beziehungsweise 0,065 %. Dies sind historische Beobachtungen über unterschiedliche Studienzeiträume, keine jährlichen Wahrscheinlichkeiten oder aktuellen Garantien. In einem großen Laufwerksbestand werden selbst Fehler, die pro Laufwerk selten sind, zu regelmäßigen Betriebsereignissen.

Nutze Redundanz mit Überprüfung

Ein gewöhnlicher Lesezugriff auf einen Spiegel mit zwei Kopien kann eine Kopie auswählen, ohne sie mit der anderen zu vergleichen. Er kann beschädigte Byte zurückgeben, wenn keine Prüfsumme geprüft wird. Werden die Kopien verglichen und stimmen sie nicht überein, sagen zwei Kopien allein nicht, welche richtig ist. Eine gültige Prüfsumme bietet eine Grundlage, um eine korrekte Version auszuwählen.

Während eines RAID-5-Wiederaufbaus kann ein LSE auf einer verbliebenen Festplatte die letzte für ihren Stripe nötige Information beseitigen. Dem Verbund fehlt bereits ein Block, und eine XOR-Gleichung kann zwei Unbekannte nicht rekonstruieren. Das Auffinden und Beheben latenter Fehler, solange alle Mitglieder verfügbar sind, erhält Möglichkeiten für den nächsten Ausfall.

Wichtige Erkenntnisse

  • Ein LSE ist die gemeldete Unfähigkeit, einen Sektor zu lesen; unbemerkte Datenkorruption liefert falsche Daten ohne Fehlermeldung.
  • Fehlgeleitete Schreibvorgänge haben das falsche Ziel; verlorene Schreibvorgänge hinterlassen eine alte Version.
  • Der ECC des Laufwerks schützt das Medium, lässt aber andere Teile des Datenpfads ungeschützt.
  • Zwei voneinander abweichende Spiegelkopien müssen überprüft werden, um eine korrekte Kopie zu finden.
  • Ein latenter Fehler kann nicht mehr behebbar sein, nachdem die Redundanz aufgebraucht ist.

5.2 Berechne Prüfsummen und vergleiche ihre Stärke

Eine Prüfsumme fasst einen Datenblock in einem viel kleineren Wert zusammen. Berechne sie beim Lesen erneut und vergleiche sie mit dem gespeicherten Erwartungswert. Eine Abweichung deckt eine Inkonsistenz auf. Verschiedene Eingaben können denselben Wert haben, was Kollision heißt. Daher bieten übereinstimmende Prüfsummen einen starken Beleg, dessen Aussagekraft von der gewählten Funktion und dem Fehlermuster abhängt.

Probiere XOR und Addition

Für die Byte 0x36, 0x5A, 0xC1 und 0x0F ergibt bitweises XOR 0xA2. Binär lautet die Rechnung:

00110110⊕01011010⊕11000001⊕00001111=10100010

Kippe das niederwertigste Bit in beiden ersten Bytes, sodass 0x37 und 0x5B entstehen. Die beiden Änderungen heben sich bei XOR auf, und 0xA2 bleibt bestehen. Eine günstige Operation kann eine vorhersehbare Schwachstelle haben.

Eine 8-Bit-additive Prüfsumme addiert die Bytewerte modulo 256:

(54+90+193+15) mod 256=96=0x60

Das doppelte Kippen oben ändert die Summe zu 0x62, sodass Addition diesen Fehler erkennt. Aber eine Umordnung der Byte lässt sowohl einfache Addition als auch XOR unverändert.

Ergänze die Abhängigkeit von der Position

Eine Fletcher-Prüfsumme führt zwei Summen, die mit null initialisiert werden. Aktualisiere für jedes Byte d die erste Summe und addiere dann ihren neuen Wert zur zweiten:

s1=(s1+d) mod 255,s2=(s2+s1) mod 255
ByteNeues s₁Neues s₂
545454
90144198
1938225
1597122

Das Ergebnis ist (97, 122). Das Vertauschen der ersten beiden Byte ergibt (97, 158). Die erste Summe ignoriert die Reihenfolge, aber die zweite gewichtet Positionen durch das laufende Aufsummieren. Fletcher erkennt Einzelbitfehler und viele Bündelfehler bei geringem Aufwand, auch wenn Kollisionen möglich bleiben.

Verfolge eine kurze CRC-Division

Eine zyklische Redundanzprüfung (CRC) behandelt Bits als Polynomkoeffizienten und dividiert mithilfe von XOR. Beim Generator 1011, der x³ + x + 1 darstellt, schützt ein drei Bit langer Rest die Daten. Hänge für die Daten 1101 drei Nullen an:

  1. Beginne mit 1101000 und verknüpfe mit 1011000 per XOR; es bleibt 0110000.
  2. Richte den Generator an der führenden Eins aus und verknüpfe mit 0101100 per XOR; es bleibt 0011100.
  3. Verknüpfe mit 0010110 per XOR; es bleibt 0001010.
  4. Verknüpfe mit 0001011 per XOR; es bleibt 0000001.

Der Rest ist 001, speichere also 1101001. Die Division dieses Codeworts ergibt null; die Änderung zu 1111001 ergibt den Rest 110. Eine n-Bit-CRC erkennt jedes Fehlerbündel mit einer Länge von höchstens n Bits. CPU-Unterstützung macht CRC für Speicher- und Netzwerkverkehr praktikabel, einschließlich CRC32C in ext4-Metadaten und Btrfs.

Kryptografische Hashfunktionen wie SHA-256 widerstehen außerdem gezielten Kollisionsversuchen. Eine Hashfunktion gegen Manipulation benötigt einen vertrauenswürdigen Erwartungswert; werden sowohl Daten als auch ihr nicht vertrauenswürdiger Hashwert ersetzt, versagt der Vergleich. OpenZFS verwendet normalerweise Fletcher für gewöhnliche Daten und SHA-256 für Deduplizierung. Acht Prüfsummenbytes pro 4-KiB-Block kosten etwa 0,2 % Speicherplatz. Die Erkennung allein liefert keine Ersatzbytes: Die Reparatur benötigt Redundanz oder einen fehlerkorrigierenden Code.

Wichtige Erkenntnisse

  • Eine Prüfsummenabweichung erkennt Inkonsistenz; eine Kollision kann einen Fehler verbergen.
  • XOR übersieht sich aufhebende Bitänderungen; Addition übersieht umgeordnete Teile.
  • Fletcher aktualisiert zwei laufende Summen, sodass Bytepositionen das Ergebnis beeinflussen.
  • CRC nutzt Polynomdivision mit XOR und erkennt Fehlerbündel bis zu einer begrenzten Länge.
  • Kryptografische Hashfunktionen erhöhen die Kollisionsresistenz, benötigen aber für den Schutz vor Manipulation einen vertrauenswürdigen Erwartungswert.
  • Prüfsummen erkennen Fehler; zur Reparatur sind zusätzliche Informationen nötig.

5.3 Platziere Prüfungen dort, wo sie den Fehler erkennen können

Eine Prüfsummenfunktion bestimmt, welche Änderungen erkennbar sind. Der Speicherentwurf bestimmt, mit welchem Wert sie verglichen wird, zu welcher Adresse sie gehört und ob ein korrekter Ersatz existiert. Eine starke Prüfsumme an der falschen Version kann weiterhin veraltete Daten akzeptieren.

Wähle einen Platz für den Erwartungswert
PlatzierungFunktionsweiseWichtigste Folge
Pro SektorZum Beispiel 512 Datenbytes plus 8 Schutzbytes in einem 520-Byte-SektorDer Schutz wird mit dem Sektor übertragen
Gebündelter PrüfsummenblockEin 4-KiB-Block enthält 512 Prüfsummen zu je acht ByteDie Aktualisierung von Daten kann auch die Aktualisierung eines anderen Blocks erfordern
Übergeordneter BlockzeigerEin übergeordneter Block speichert die Prüfsumme des referenzierten untergeordneten BlocksDer erwartete Inhalt wird von außerhalb des untergeordneten Blocks geprüft

ZFS verwendet Prüfsummen in übergeordneten Blockzeigern und erzeugt so einen Prüfbaum bis zu seiner Wurzel. Schutzinformationen können auch die erwartete Adresse enthalten. Die Referenzkennung von T10 verwendet die unteren 32 Bits der logischen Blockadresse zusammen mit einer 16-Bit-Daten-CRC und einer Anwendungskennung. Eine Adressprüfung kann korrekte Byte zurückweisen, die vom falschen Ort zurückgegeben wurden.

Unterscheide falschen Ort und falsche Version

Angenommen, ein Lesezugriff auf Festplatte 3, Block 1.207 gibt ein gültiges Daten-Prüfsummen-Paar zurück, das für eine andere Adresse gekennzeichnet ist. Die Prüfsumme allein stimmt überein, aber die Adresskennung deckt die Fehlleitung auf.

Ein verlorener Schreibvorgang ist schwieriger: Der alte Inhalt kann eine gültige Prüfsumme und die korrekte Adresse haben. Die Leseprüfung nach dem Schreiben vergleicht einen erneuten Lesezugriff mit dem erwarteten neuen Inhalt und fügt ungefähr eine weitere Ein-/Ausgabe hinzu. Sie muss das gespeicherte Ergebnis prüfen und nicht lediglich dieselbe flüchtige Cache-Kopie. Eine separat gespeicherte erwartete Prüfsumme, etwa in einem festgeschriebenen übergeordneten Blockzeiger, kann stattdessen die veraltete untergeordnete Version zurückweisen. Der separate Erwartungswert muss selbst die beabsichtigte Aktualisierung beschreiben.

Prüfe vor Rückgabe oder Reparatur

Lies bei einem Lesezugriff den Block und seine erwartete Prüfsumme, berechne sie erneut und vergleiche. Besteht die erste Kopie die Prüfung nicht, lies eine andere Kopie oder rekonstruiere den Block aus der Redundanz. Prüfe das Ergebnis, bevor du es zurückgibst. Besteht es die Prüfung, gib die korrekten Daten zurück und überschreibe die beschädigte Kopie. Das ist Selbstheilung. Kann keine gültige Kopie gefunden werden, gib einen Fehler statt ungeprüfter Byte zurück.

Ein gespiegelter ZFS-Pool liest zum Beispiel Festplatte A und erkennt eine Prüfsummenabweichung. Die Kopie von Festplatte B besteht die Prüfung. Das System gibt die Daten von B zurück, repariert A und erfasst den Fehler von A. Gewöhnliche Spiegelung ohne Prüfsummenprüfung könnte die fehlerhaften Byte von A unbemerkt zurückgeben.

Suche nach Fehlern, bevor ein Ausfall die Wiederherstellung erzwingt

Scrubbing liest und prüft gespeicherte Daten regelmäßig, einschließlich Blöcken, auf die Anwendungen selten zugreifen. Solange Redundanz verfügbar ist, kann das System Fehler beheben, bevor ein weiteres Mitglied ausfällt. In der historischen LSE-Studie fand Scrubbing mehr als 60 % der Fehler.

Die Prüfung verbraucht CPU-Zeit, Prüfsummenplatz und manchmal zusätzliche Ein-/Ausgabe. Acht Byte pro 4 KiB kosten etwa 0,2 %; acht pro 512 Datenbytes kosten etwa 1,6 %. Scrubbing-Lesezugriffe konkurrieren mit Anfragen im Vordergrund, daher sind Zeiten geringer Last günstig. Das Ende-zu-Ende-Argument legt die abschließende Prüfung nahe an das Dateisystem oder die Anwendung und deckt damit mehr vom Pfad ab als ein nur auf das Medium bezogener ECC des Laufwerks.

Wichtige Erkenntnisse

  • Die Platzierung der Prüfsumme bestimmt, welcher Erwartungswert bei einem Lesezugriff verfügbar ist.
  • Adressinformationen erkennen Daten am falschen Ort; ein separater aktueller Erwartungswert kann veraltete Daten erkennen.
  • Prüfe eine wiederhergestellte Kopie, bevor du sie zurückgibst oder zur Reparatur verwendest.
  • Scrubbing prüft selten gelesene Daten, solange Redundanz sie noch reparieren kann.
  • Ende-zu-Ende-Prüfungen erfassen Fehler über das Laufwerksmedium hinaus.

Festplatten und RAID: Beispiele

5 Interaktive Lektionen

1

Verfolge eine Anfrage, ohne die CPU zu belegen

16 Schritte
Verfolge Befehle, Warten, DMA und den Abschluss über Warteschlangen bei einem Speicherlesezugriff.
  1. 1
    EinführungTrenne die Aufgaben einer Ein-/Ausgabeanfrage

    Eine Speicheranfrage umfasst mehrere Aufgaben: beschreiben, was zu tun ist, Byte übertragen und den Abschluss melden. Die CPU muss nicht alle Aufgaben ständig selbst ausführen: DMA lässt Hardware die Byte übertragen, und Interrupts ermöglichen der CPU, während des Wartens andere Arbeit auszuführen.

    Verfolge eine Anfrage von ihrer Registerschnittstelle über Warten und Übertragung und setze dann den vollständigen Pfad durch Treiber und Controller zusammen.

  2. 2
    ErklärungBeginne mit der Geräteschnittstelle

    Der Controller verbirgt seine Firmware und interne Hardware hinter Registern. In einem einfachen Ausgabeprotokoll prüft der Treiber, ob der Status bereit ist, stellt Daten bereit, schreibt den Befehl und prüft dann Abschluss und Fehler.

    Die Reihenfolge ist wichtig: Das Schreiben des Befehls kann die Hardware sofort starten. Eine Anwendung erreicht diese kontrollierte Operation über einen Systemaufruf.

  3. 3
    KernaussageEine Registeradresse kann Arbeit auslösen

    Bei MMIO erreichen Lade- und Speicherbefehle Geräteregister über abgebildete Adressen. Ein Registerlesezugriff kann ein Flag zurücksetzen; ein Schreibzugriff kann einen Befehl starten. Gewöhnliche Annahmen über RAM sind hier nicht sicher.

    Der Treiber verwendet Zugriffsfunktionen der Plattform und erforderliche Barrieren. Einen Zeiger als volatile zu deklarieren, gewährleistet nicht die vollständige Reihenfolge zwischen einem RAM-Deskriptor und der MMIO-Benachrichtigung, die das Gerät veranlasst, ihn abzuholen.

  4. 4
    HerausforderungKorrigiere die Befehlsreihenfolge

    Ein Treiber stellt fest, dass ein Ausgabegerät bereit ist, schreibt seinen Befehl und füllt dann das Datenregister. Welche Reihenfolge sollte er verwenden und warum?

    ---reveal---

    Stelle die Daten bereit, bevor du den Befehl ausgibst. Der Befehl startet das Gerät, das andernfalls veraltete Daten verarbeiten könnte. Nach der Einreichung prüft der Treiber den Abschluss und jeden gemeldeten Fehler.

  5. 5
    BeispielLass einen anderen Prozess laufen

    Prozess C startet einen Lesezugriff, der 7 ms dauert. Prozess D hat eine Berechnung bereit. Beim Polling prüft die CPU während der gesamten Wartezeit wiederholt den Status des Lesezugriffs von C.

    Beim interruptgesteuerten Warten wird C blockiert und D kann laufen. Bei Abschluss prüft die Behandlungsroutine die Anfrage und setzt C auf bereit. Der Lesezugriff dauert weiterhin 7 ms; nützliche Berechnung hat diese Zeit ausgefüllt.

  6. 6
    ErklärungVergleiche den Benachrichtigungsaufwand

    Ein sehr schneller Abschluss kann eintreffen, bevor sich Blockieren und Aufwecken lohnen würden. Eine kurze Polling-Phase vermeidet diesen Aufwand; bei einer hybriden Strategie schläft anschließend der wartende Prozess, falls die Anfrage noch nicht abgeschlossen ist.

    Bei hohem Aufkommen teilt die Interruptbündelung einen Interrupt auf mehrere Abschlüsse auf. Das verringert die CPU-Arbeit, kann aber den frühesten Abschluss verzögern, während der Stapel gebildet wird.

  7. 7
    HerausforderungWähle eine Stapelgröße anhand ihres Aufwands

    Ein Gerät liefert jede Sekunde 60.000 Abschlüsse. Die Behandlung eines Interrupts kostet 6 µs CPU-Zeit. Wie viel CPU-Zeit wird pro Sekunde eingespart, wenn drei Abschlüsse pro Interrupt gebündelt werden?

    ---reveal---

    Separate Interrupts kosten 360 ms pro Sekunde. Stapel mit drei Abschlüssen benötigen 20.000 Interrupts:

    20.000×6 μs=120 ms

    Die Einsparung beträgt 240 ms pro Sekunde. Die Bedienzeit des Geräts bleibt unverändert, während sich die Benachrichtigung verzögern kann.

  8. 8
    BeispielZähle den bei PIO nötigen Kopieraufwand

    Angenommen, 8 KiB Nutzdaten durchlaufen ein 8 Byte großes Datenregister, wobei jeder Zugriff 80 ns kostet. Die CPU muss ausführen:

    8192/8=1024 Zugriffe 1024×80 ns=81,92 μs

    Diese Operationen übertragen nur die Nutzdaten. DMA übergibt die Übertragung an die Hardware; der CPU bleiben Puffervorbereitung, Einreichung und Abschlussbehandlung.

  9. 9
    ErklärungHalte den Zielbereich stabil

    Der Treiber bildet den Puffer für den Gerätezugriff ab und hält die zugrunde liegenden Seiten bis zum Abschluss fixiert. Eine Scatter-Gather-Liste beschreibt getrennte Bereiche aus Adresse und Länge, wenn die physischen Seiten nicht benachbart sind.

    Das Gerät erhält DMA-Busadressen, keinen gewöhnlichen Benutzerzeiger. Eine IOMMU kann diese Adressen übersetzen und das Gerät auf erlaubten Speicher beschränken.

  10. 10
    TippKoordiniere die Sichtbarkeit im Speicher

    Eine gültige Adresse ist nur ein Teil einer korrekten DMA-Übertragung. Das Gerät muss die neuesten ausgehenden Daten der CPU sehen, und die CPU muss eingehende, vom Gerät geschriebene Byte sehen.

    Auf manchen Plattformen übernimmt die Hardwarekohärenz diese Aufgabe. Andere benötigen eine explizite Cache-Synchronisierung über die DMA-API. Halte den Puffer abgebildet und stabil, bis das Gerät nicht mehr darauf zugreift.

  11. 11
    HerausforderungUntersuche eine vorzeitige Pufferfreigabe

    Ein Treiber startet DMA in zwei fixierte Seiten, gibt sie vor Abschluss frei und überlässt sie einem anderen Prozess. Warum kann ein späterer Interrupt dies nicht sicher machen?

    ---reveal---

    Das Gerät kann bereits in die erneut verwendeten Seiten geschrieben haben, bevor es seinen Interrupt auslöst. Die Seiten müssen fixiert bleiben und dürfen erst wiederverwendet werden, wenn DMA abgeschlossen ist. Die anschließende Abschlussbehandlung kann die Beschädigung des Speicherinhalts nicht rückgängig machen.

  12. 12
    VerbindungLeite die Anfrage durch das Speichersystem

    Bei einem gepufferten Lesezugriff mit Cache-Fehlzugriff findet das Dateisystem die angeforderten Speicherblöcke. Die Blockschicht reiht deren Anfragen ein oder fasst sie zusammen, und der Treiber reicht Hardwarebefehle ein.

    Diese Aufteilung lässt das Dateisystem für verschiedene Geräte dieselbe Blockschnittstelle nutzen. Eine spezielle Steuerfunktion wie ein gerätespezifischer Befehl kann eine Schnittstelle wie ioctl() benötigen.

  13. 13
    ErklärungReiche Arbeit über eine NVMe-Warteschlange ein

    Der NVMe-Treiber stellt einen Befehl in eine Einreichungswarteschlange im Speicher und beschreibt dann die MMIO-Doorbell. Der Controller holt den Eintrag ab, überträgt die Nutzdaten per DMA und stellt einen Abschlusseintrag ein. MSI-X kann die Benachrichtigung an einen geeigneten Kern leiten.

    Viele Warteschlangenpaare ermöglichen CPU-Kernen, Arbeit mit weniger Konkurrenz um gemeinsame Ressourcen einzureichen als eine einzelne flache Gerätewarteschlange.

  14. 14
    HerausforderungBetrachte eine Anfrage vor der Einreichung

    Zwei benachbarte Blockleseanfragen warten im Kernel. Wo können sie zusammengefasst werden, und welche spätere Aktion teilt einem NVMe-Controller mit, dass er die eingereichte Arbeit abholen soll?

    ---reveal---

    Die allgemeine Blockschicht kann die benachbarten Anfragen vor der Einreichung durch den Treiber zusammenfassen. Der NVMe-Treiber füllt dann einen Einreichungseintrag und beschreibt das zugehörige Doorbell-Register. Das Zusammenfassen betrifft die Anfrage; die Doorbell kündigt eingereihte Arbeit an.

  15. 15
    HerausforderungErkläre geringe CPU-Auslastung bei einem großen Lesezugriff

    Ein großer Lesezugriff mit Cache-Fehlzugriff wird abgeschlossen, während ein anderer Prozess rechnet. Die CPU erledigt Einrichtungs- und Abschlussarbeit, kopiert aber nicht Wort für Wort über Geräteregister. Welche Mechanismen erklären die Beobachtung?

    ---reveal---

    DMA überträgt die Nutzdaten direkt in den Speicher. Interruptgesteuertes Warten lässt den lesenden Prozess blockieren, während andere Berechnungen laufen. Treiber und Blockschicht organisieren Einreichung und Abschluss; keiner der beiden Mechanismen lässt die Arbeit des Speichergeräts selbst verschwinden.

  16. 16
    ZusammenfassungVerfolge die Zuständigkeit an jeder Schnittstelle

    Lies den Ablauf einer Anfrage, indem du fragst, wer die Blockadresse kennt, wer das Controllerprotokoll kennt, wer die Nutzdaten überträgt und wer den Abschluss meldet.

    Halte Warten, Kopieren und Scheduling auseinander, wenn du den CPU-Aufwand untersuchst. Derselbe Lesezugriff kann eine Standard-Blockschnittstelle, eine MMIO-Benachrichtigung, DMA und einen Interrupt kombinieren.

2

Leite aus Festplattenbewegungen eine Leistungsschätzung ab

13 Schritte
Verbinde Sektorgarantien, Zugriffszeitberechnungen und Anfrage-Scheduling.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungBeginne mit der Arbeit hinter einer Adresse
  2. 2
    ErklärungUnterscheide drei Speichergarantien
  3. 3
    HerausforderungBeurteile die Meldung eines gepufferten Schreibvorgangs
  4. 4
    BeispielRechne die Spindeldrehzahl in eine durchschnittliche Wartezeit um
  5. 5
    BeispielAddiere die Übertragung für einen kleinen Lesezugriff
  6. 6
    KernaussageVerteile die Positionierung auf mehr Daten
  7. 7
    HerausforderungSchätze eine andere zufällige Arbeitslast ab
  8. 8
    BeispielZeichne einen LOOK-Weg
  9. 9
    BeispielZähle den zirkulären Rückweg
  10. 10
    HerausforderungWende eine Strategie auf neu eintreffende Anfragen an
  11. 11
    VerbindungBetrachte mehr als die Positionierungsstrecke
  12. 12
    HerausforderungWähle, was verbessert werden soll
  13. 13
    ZusammenfassungNutze die richtige Größe für die Entscheidung
3

Verfolge eine SSD-Überschreibung bis zur Rückgewinnung

14 Schritte
Verfolge Zelleinschränkungen, veränderte Zuordnungen, zusätzliche Schreibvorgänge und die für den Host sichtbare Leistung.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungBetrachte, was eine Überschreibung tatsächlich bewirkt
  2. 2
    ErklärungWähle die physische Einheit der Operation
  3. 3
    KernaussageVerbinde Speicherdichte mit Zellgrenzen
  4. 4
    HerausforderungErhalte benachbarte Seiten
  5. 5
    BeispielLeite eine logische Überschreibung um
  6. 6
    ErklärungKopiere nur, was noch gültig ist
  7. 7
    BeispielBerechne den verborgenen Programmieraufwand
  8. 8
    TippGib der Garbage Collection bessere Informationen
  9. 9
    HerausforderungGewinne einen Block mit mehr gültigen Seiten zurück
  10. 10
    ErklärungStelle genügend unabhängige Anfragen bereit
  11. 11
    BeispielRechne eine Haltbarkeitsangabe um
  12. 12
    HerausforderungDeute eine Verlangsamung im stationären Zustand
  13. 13
    HerausforderungNutze Löschinformationen, um interne Arbeit zu verändern
  14. 14
    ZusammenfassungVerbinde die physische Sicht mit der Sicht des Hosts
4

Leite eine RAID-Entscheidung aus der physischen Arbeit ab

18 Schritte
Ordne Stripes zu, rekonstruiere mit Parität und vergleiche die Leistung im intakten Zustand mit der Gefährdung beim Wiederaufbau.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungVergleiche einen Verbund anhand mehrerer Aspekte
  2. 2
    ErklärungHalte Schnittstelle und Aufbau auseinander
  3. 3
    VerbindungPlane den Zustand nach einem Ausfall
  4. 4
    HerausforderungUnterscheide Verfügbarkeit von der Wiederherstellung früherer Versionen
  5. 5
    BeispielOrdne einen Stripe mit Ein-Block-Chunks zu
  6. 6
    ErklärungErgänze gespiegelte Paare
  7. 7
    HerausforderungVerfolge einen größeren Chunk
  8. 8
    KernaussageUnterscheide einen Schreibvorgang von vielen
  9. 9
    BeispielBerechne die XOR-Parität eines Stripe
  10. 10
    BeispielStelle den fehlenden Wert wieder her
  11. 11
    BeispielAktualisiere die Parität mit dem geänderten Block
  12. 12
    ErklärungVerlagere den Engpass oder ergänze eine Gleichung
  13. 13
    HerausforderungWähle die passende Paritätsaktualisierung
  14. 14
    BeispielBerechne die Zeit, bevor du einen Wiederaufbau zusagst
  15. 15
    ErklärungUntersuche Fehler während dieses Zeitraums
  16. 16
    HerausforderungWähle zwischen Aufbauten mit gleicher Kapazität
  17. 17
    HerausforderungVerbinde Arbeitslast und Aktualisierungsphasen
  18. 18
    ZusammenfassungVerfolge den Aufbau bis zur Wiederherstellung
5

Prüfe einen Block, bevor du seinen Bytes vertraust

15 Schritte
Unterscheide Fehlerarten, berechne Prüfsummen und verfolge eine geprüfte Reparatur.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungFrag dich, was ein erfolgreicher Lesezugriff belegt
  2. 2
    ErklärungUnterscheide unlesbare von unbemerkt falschen Daten
  3. 3
    BeispielVerfolge das Ziel und die Version
  4. 4
    HerausforderungUntersuche einen erfolgreichen Lesezugriff auf veraltete Daten
  5. 5
    BeispielBerechne eine additive Prüfsumme
  6. 6
    KernaussageErkenne eine Kollision ohne zufälliges Raten
  7. 7
    BeispielBerücksichtige Positionen mit Fletcher
  8. 8
    HerausforderungWähle die richtige Prüfsummenrechnung
  9. 9
    VerbindungVerstehe, was stärkere Prüfungen ergänzen
  10. 10
    ErklärungSpeichere den Erwartungswert außerhalb des verdächtigen Werts
  11. 11
    BeispielPrüfe die Reparaturquelle
  12. 12
    TippFinde verborgene Fehler, solange Kopien bestehen
  13. 13
    HerausforderungWähle eine Prüfung für einen falsch platzierten Block
  14. 14
    HerausforderungRepariere, bevor die Redundanz aufgebraucht ist
  15. 15
    ZusammenfassungVerfolge die Belege für einen zurückgegebenen Block

Festplatten und RAID: Übungsaufgaben

50 Übungsfragen in 5 Sets

Set 1: Geräte, Zeitberechnung und Schutz von Daten10 Übungsfragen

Frage 1 von 10

Ein Treiber muss eine einfache Ausgabeoperation starten. Das Gerät ist bereit. Was muss er unmittelbar tun, bevor er das Befehlsregister beschreibt?
  1. Auf den Abschluss der Ausgabe warten.
  2. Die Nutzdaten für die Ausgabe bereitstellen.
  3. Das Beschäftigt-Bit des Geräts zurücksetzen.
  4. Daten vom Gerät lesen.
Antwort zeigenAntwort ausblenden
Antwort: B
Das einfache Protokoll stellt die Nutzdaten bereit, bevor der Befehl die Operation startet. Nach dem Start kann das Gerät diese Daten sofort verarbeiten. Das Warten auf den Abschluss gehört nach der Befehlseinreichung; vorher würde es auf eine Operation warten, die noch nicht begonnen hat.

Frage 2 von 10

Auf einem CPU-Kern dauert eine Speicheroperation 14 ms. Ein anderer Prozess hat eine Berechnung von 9 ms bereit. Wie kann interruptgesteuertes Warten die CPU-Nutzung verbessern?
  1. Es verkürzt die Geräteoperation auf 5 ms.
  2. Es führt die Befehle beider Prozesse gleichzeitig aus.
  3. Es schließt die Übertragung ohne CPU-Einrichtung ab.
  4. Es führt die bereite Berechnung während des Wartens aus.
Antwort zeigenAntwort ausblenden
Antwort: D
Der aufrufende Prozess kann blockieren, während der Scheduler den anderen Prozess für seine 9 ms Berechnung ausführt. Das Gerät benötigt weiterhin 14 ms. Wer die Berechnung von der Gerätezeit abzieht, verwechselt das Überlappen zweier Aktivitäten mit einer Beschleunigung der Speicherhardware.

Frage 3 von 10

Ein Laufwerk hat physische Sektoren mit 4 KiB und akzeptiert logische Sektoren mit 512 Byte. Was bezeichnet eine LBA?
  1. Einen dem Host bereitgestellten logischen Sektor.
  2. Eine physische Spur unter einem Kopf.
  3. Einen einer Datei zugewiesenen Dateisystemblock.
  4. Eine bei Stromausfall garantierte atomare Einheit.
Antwort zeigenAntwort ausblenden
Antwort: A
Eine LBA bezeichnet einen Sektor der logischen Schnittstelle, hier eine Einheit von 512 Byte. Mehrere solche Sektoren können sich einen physischen Sektor mit 4 KiB teilen. Wer jede LBA als physischen Sektor behandelt, übersieht die Emulationsschicht. Keine der beiden Größen begründet Atomarität bei Stromausfall.

Frage 4 von 10

Eine HDD mit 6.000 Umdrehungen pro Minute hat eine durchschnittliche Positionierungszeit von 4 ms und eine Übertragungsrate von 100 MB/s. Sie bedient unabhängige zufällige Lesezugriffe über 10.000 Byte nacheinander, ohne Cache-Treffer oder Warteschlangen. Welche effektive Datenrate ergibt sich ungefähr?
  1. 2,44 MB/s
  2. 100 MB/s
  3. 1,10 MB/s
  4. 0,71 MB/s
Antwort zeigenAntwort ausblenden
Antwort: C
Eine Umdrehung dauert 10 ms, die durchschnittliche Rotationslatenz beträgt also 5 ms. Die Übertragung von 10.000 Byte dauert 0,1 ms. Insgesamt ergeben sich 9,1 ms und etwa 1,10 MB/s. Das Ergebnis 2,44 MB/s lässt die Rotation aus, obwohl die zufällige Position diese Wartezeit nötig macht.

Frage 5 von 10

Eine NAND-Seite enthält alte Daten. Welche physische Einheit muss gelöscht werden, bevor dieselbe Seite erneut programmiert werden kann?
  1. Das einzelne programmierte Byte.
  2. Der zugehörige Löschblock.
  3. Der Dateisystemblock des Hosts.
  4. Die einzelne belegte Flash-Seite.
Antwort zeigenAntwort ausblenden
Antwort: B
Das Löschen setzt den ganzen Flash-Löschblock zurück, der die Seite enthält. Alle anderen gültigen Seiten müssen vorher gesichert werden. Wer die seitenweise programmierte Einheit mit der Löscheinheit verwechselt, übersieht, warum eine Aktualisierung an derselben Stelle erhebliches Kopieren erfordern kann.

Frage 6 von 10

Wie groß ist bei einer HDD mit 12.000 Umdrehungen pro Minute die durchschnittliche Rotationslatenz für einen zufällig positionierten Sektor?
  1. 2,5 ms
  2. 5 ms
  3. 1,25 ms
  4. 12 ms
Antwort zeigenAntwort ausblenden
Antwort: A
Eine Umdrehung dauert 60.000/12.000 = 5 ms. Ein gleichmäßig positionierter Zielsektor benötigt im Durchschnitt eine halbe Umdrehung, also 2,5 ms. Wer 5 ms verwendet, behandelt jede Anfrage so, als sei ihr Sektor gerade am Kopf vorbeigelaufen und müsse fast eine volle Umdrehung zurücklegen.

Frage 7 von 10

Eine Datei wird versehentlich von einem Volume auf einem intakten gespiegelten Verbund gelöscht. Warum ist eine separate Datensicherung weiterhin nützlich?
  1. Das Löschen ändert ein Mitglied; das andere wird als frühere Kopie bewahrt.
  2. Das Löschen bleibt im Cache, bis eine Sicherung das fehlende Mitglied wiederherstellt.
  3. Das Löschen ändert die Parität; ein Spiegelaufbau macht die Dateiaktualisierung rückgängig.
  4. Das Löschen ändert beide aktuellen Kopien; eine Sicherung kann eine frühere Version bewahren.
Antwort zeigenAntwort ausblenden
Antwort: D
Spiegelung hält Kopien der aktuellen Daten vor, sodass ein Löschvorgang die Datei aus diesen Kopien zugleich entfernen kann. Eine separate Datensicherung kann eine frühere wiederherstellbare Version bewahren. Wer das zweite Spiegelmitglied als frühere Kopie behandelt, verwechselt Redundanz mit der Wiederherstellung versionierter Daten.

Frage 8 von 10

Ein RAID-0-Verbund hat fünf Festplatten und Chunks aus einem Block. Festplatten und lokale Offsets werden ab null nummeriert. Wo liegt der logische Block 23?
  1. Festplatte 4, Offset 3.
  2. Festplatte 2, Offset 5.
  3. Festplatte 3, Offset 4.
  4. Festplatte 3, Offset 5.
Antwort zeigenAntwort ausblenden
Antwort: C
Die Festplatte ist 23 modulo 5, also 3, und der lokale Offset ist ⌊23/5⌋, also 4. Vor diesem Block liegen vier vollständige Stripe-Zeilen. Offset 5 rundet den Quotienten auf, statt nur vollständige Zeilen zu zählen.

Frage 9 von 10

Eine Festplatte gibt einen Block mit falschen Bytes zurück und meldet erfolgreichen Abschluss. Welche Art von Fehler ist aufgetreten?
  1. Ein erkannter Ausfall der gesamten Festplatte.
  2. Ein gemeldeter latenter Sektorfehler.
  3. Eine unbemerkte Datenkorruption.
  4. Ein bestätigter verlorener Schreibvorgang.
Antwort zeigenAntwort ausblenden
Antwort: C
Unbemerkte Datenkorruption gibt falsche Daten zurück, ohne einen Lesefehler zu melden. Ein latenter Sektorfehler macht den Sektor dagegen unlesbar und wird vom Laufwerk gemeldet. Ein erfolgreicher Befehlsstatus allein prüft weder den Inhalt noch den gesamten Pfad, den die Daten durchlaufen haben.

Frage 10 von 10

Eine additive 8-Bit-Prüfsumme beginnt bei null und ignoriert Überläufe. Welche Prüfsumme ergibt sich aus den dezimalen Bytes 150, 90 und 40?
  1. 25
  2. 24
  3. 255
  4. 280
Antwort zeigenAntwort ausblenden
Antwort: B
Die Bytewerte ergeben zusammen 280; die Reduktion modulo 256 ergibt 24. Die gespeicherte Prüfsumme muss in acht Bits passen. Wer 280 beibehält, ignoriert die Überlaufregel; modulo 255 ergäbe 25 und gehört zu einer anderen Prüfsummenkonvention.
Set 2: Warteschlangen, Flash-Wartung und Wiederherstellung10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Welche CPU-Aufgabe übernimmt DMA bei einer großen Geräteübertragung hauptsächlich?
  1. Den nächsten bereiten Prozess auswählen.
  2. Dateiberechtigungen der Anwendung prüfen.
  3. Jedes Nutzdatenwort zum Gerät oder von ihm kopieren.
  4. Jeden Anfrageabschlussinterrupt behandeln.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Zwei benachbarte Blockleseanfragen warten auf dasselbe Linux-Speichergerät. Welche Schicht kann sie kombinieren, bevor der Hardwaretreiber die Arbeit einreicht?
  1. Die allgemeine Blockschicht.
  2. Die Interruptvektortabelle des Geräts.
  3. Die Sektorumlegungstabelle des Laufwerks.
  4. Die virtuelle Adressabbildung der Anwendung.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Spuren sind von 0–99 nummeriert. Der Kopf steht bei 30 und bewegt sich zu höheren Spurnummern; Anfragen liegen bei 10, 45 und 70. Wie weit bewegt LOOK den Kopf, bevor alle drei abgeschlossen sind?
  1. 109 Spuren
  2. 100 Spuren
  3. 40 Spuren
  4. 89 Spuren
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Ein Host überschreibt die logische Seite 27. Der FTL legt ihre neue Version auf der freien physischen Seite 93 ab. Welche Änderung sorgt dafür, dass spätere Lesezugriffe die neue Version zurückgeben?
  1. Seite 27 unabhängig löschen.
  2. Alle Seiten in physische Reihenfolge bringen.
  3. Die logische Seite 27 in Seite 93 umnummerieren.
  4. Die Zuordnung von logisch zu physisch ändern.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Eine SSD benötigt für jeden Lesezugriff 125 µs. Ein Programm wartet vor dem nächsten Lesezugriff auf den vorherigen; weiterer Aufwand fällt nicht an. Wie hoch ist seine ungefähre Operationsrate?
  1. 125 IOPS
  2. 8.000 IOPS
  3. 80.000 IOPS
  4. 125.000 IOPS
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Die Garbage Collection gewinnt einen Block mit 100 Seiten zurück, der 60 gültige Seiten enthält. Sie kopiert diese Seiten an eine andere Stelle und nutzt dann den netto freien Speicherplatz für neue Seiten des Hosts. Alle Seiten sind gleich groß. Welche Schreibverstärkung ergibt sich für die Kopien und neuen Schreibvorgänge?
  1. 1,5
  2. 0,6
  3. 2,5
  4. 4,0
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Ein Stripe hat die Datenblöcke 1010 und 0110 und die XOR-Parität 1100. Die Festplatte mit 0110 fällt aus. Welcher Block rekonstruiert die fehlenden Daten?
  1. 0110
  2. 1100
  3. 1010
  4. 0000
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Sechs Festplatten mit je 3 TB stehen zur Verfügung. Ein Verbund muss mindestens 12 TB bereitstellen und zwei beliebige Festplattenausfälle überstehen. Welcher Aufbau erfüllt unter den RAID-Modellen mit gleich großen Festplatten beide Anforderungen?
  1. RAID-10 mit drei gespiegelten Paaren.
  2. RAID-1 mit zwei der Festplatten.
  3. RAID-5 über alle sechs Festplatten.
  4. RAID-6 über alle sechs Festplatten.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Welche Wartungsoperation liest und prüft regelmäßig Daten, auf die Anwendungen möglicherweise selten zugreifen?
  1. Scrubbing des Speichers.
  2. Over-Provisioning des Flash-Speichers.
  3. Zusammenfassen von Anfragen.
  4. Bündeln von Interrupts.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Ein Schreibvorgang sendet ein korrektes Daten-Prüfsummen-Paar an Block 840 statt an den vorgesehenen Block 480. Welche zusätzliche Prüfung kann beim Lesen von Block 840 das falsche Ziel aufdecken?
  1. Das Paar erneut mit derselben Prüfsumme prüfen.
  2. Die gemeldete Spindeldrehzahl vergleichen.
  3. Seine Adresskennung mit der angeforderten Adresse vergleichen.
  4. Warten, bis beide Spiegelkopien ausgewählt sind.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 3: Ordne Anfragen zu und berücksichtige verborgene Arbeit10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Ein Treiber schreibt einen Befehlsdeskriptor in den RAM und betätigt dann eine MMIO-Doorbell. Warum kann ein volatile-Doorbell-Zeiger allein unzureichend sein?
  1. Er ordnet Portregister, aber keine abgebildeten Register.
  2. Er schützt den Zeiger, aber nicht den Deskriptorinhalt.
  3. Er ordnet Gerätelesezugriffe, aber keine Geräteschreibzugriffe.
  4. Er gewährleistet nicht jede erforderliche Speicherreihenfolge.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Ein Benutzerpuffer aus drei Seiten belegt nicht benachbarte physische Seiten. Ein Treiber hat sie für DMA abgebildet. Was muss bis zum Abschluss durch das Gerät gelten?
  1. Die Anwendung muss die CPU weiter das Gerät abfragen lassen.
  2. Die zugrunde liegenden Seiten müssen fixiert und stabil bleiben.
  3. Die physischen Seiten müssen benachbarte Nummern erhalten.
  4. Das Gerät muss den ursprünglichen Benutzerzeiger nutzen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Ein HDD-Kopf startet auf Spur 40 mit ausstehenden Anfragen bei 10, 44 und 47. Er verwendet SSTF. Unmittelbar nach jedem Abschluss trifft eine neue Anfrage eine Spur über der aktuellen Kopfposition ein. Welche ersten drei Anfragen werden bedient?
  1. 44, dann 45, dann 46.
  2. 44, dann 47, dann 48.
  3. 44, dann 47, dann 10.
  4. 44, dann 45, dann 47.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Ein Laufwerk meldet einen Schreibvorgang als abgeschlossen, nachdem es ihn im flüchtigen Cache abgelegt hat. Welche Cachingstrategie beschreibt das?
  1. Write-Through-Caching.
  2. Vorauslese-Caching.
  3. Write-Back-Caching.
  4. Spurversatz-Caching.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Eine Fletcher-Prüfsumme beginnt mit beiden Summen bei null und verwendet Modulo 255. Welches Paar ergibt sich nach den dezimalen Bytes 100 und 200, wenn für jedes Byte die erste Summe vor der zweiten aktualisiert wird?
  1. (44, 144)
  2. (45, 145)
  3. (45, 90)
  4. (100, 45)
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Eine 2-TB-SSD ist über fünf Jahre für 1.460 TBW ausgelegt. Welche DWPD-Angabe ergibt sich bei 365 Tagen pro Jahr?
  1. 0,8 DWPD
  2. 2,0 DWPD
  3. 0,2 DWPD
  4. 0,4 DWPD
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Acht gleich große Festplatten leisten jeweils dauerhaft 120 kleine zufällige physische Ein-/Ausgaben pro Sekunde. Wie viele kleine logische Schreibvorgänge pro Sekunde können RAID-5 und RAID-6 im idealen gleichmäßig ausgelasteten Modell mit Read-Modify-Write leisten?
  1. RAID-5: 240; RAID-6: 160.
  2. RAID-5: 480; RAID-6: 320.
  3. RAID-5: 120; RAID-6: 120.
  4. RAID-5: 960; RAID-6: 960.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Ein Paritäts-Stripe hat die alte Parität 1011. Ein Datenblock ändert sich von 0010 in 1101. Wie lautet die neue XOR-Parität?
  1. 0110
  2. 1001
  3. 0100
  4. 1111
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Eine XOR-Prüfsumme umfasst die Byte 0x20 und 0x10. Bei beiden Bytes kippt das niederwertigste Bit, sodass 0x21 und 0x11 entstehen. Was geschieht mit der Prüfsumme?
  1. Sie steigt von 0x30 auf 0x32.
  2. Sie fällt von 0x30 auf 0x2E.
  3. Sie wechselt von 0x30 zu 0x31.
  4. Sie bleibt gleich 0x30.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Eine bestätigte Aktualisierung von Block 80 soll mit der neuen Prüfsumme eines festgeschriebenen übergeordneten Blocks übereinstimmen. Ein Lesezugriff gibt die früheren Byte mit ihrer passenden alten Prüfsumme und der Adresskennung 80 zurück. Eine Spiegelkopie stimmt mit dem übergeordneten Block überein. Welche Kopie soll zurückgegeben werden, was weist die erste Kopie zurück, und was soll repariert werden?
  1. Die erste zurückgeben; ihre Adresskennung stimmt; den Spiegel reparieren.
  2. Den Spiegel zurückgeben; die Prüfung gegen den übergeordneten Block weist die erste zurück; die erste reparieren.
  3. Die erste zurückgeben; ihre lokale Prüfsumme stimmt; den übergeordneten Block reparieren.
  4. Den Spiegel zurückgeben; die Adresskennung der ersten stimmt nicht; die Kennung reparieren.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 4: Erkläre Zielkonflikte bei Leistung und Integrität10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Ein Gerät schließt 240.000 Anfragen pro Sekunde ab. Jeder Interrupt kostet 4 µs CPU-Zeit. Viererstapel verursachen höchstens 12 µs zusätzliche Benachrichtigungsverzögerung; Achterstapel höchstens 28 µs. Die Grenzwerte sind 0,30 Kerne und 20 µs zusätzliche Verzögerung. Welche Strategie erfüllt beide?
  1. Ein Interrupt für je acht Abschlüsse.
  2. Ein Interrupt für jeden Abschluss.
  3. Ein Interrupt für je vier Abschlüsse.
  4. Ein Interrupt für je zwei Abschlüsse.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Was teilt ein Schreibzugriff auf die Doorbell einer Einreichungswarteschlange dem Controller bei einer NVMe-Anfrage mit?
  1. Dass ein Prozess sein Ergebnis bereits verarbeitet hat.
  2. Dass eine Datei den dauerhaften Speicher erreicht hat.
  3. Dass alle CPU-Caches die neuen Nutzdaten enthalten.
  4. Dass eingereihte Arbeit zur Verfügung steht.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Eine HDD hat eine Positionierungszeit von 3 ms, eine Umdrehungsdauer von 10 ms und eine Übertragungsrate von 200 MB/s. Ignoriere Cache-Treffer und Warteschlangen. Welche kleinste Größe einer einzelnen sequenziellen Anfrage ergibt bei durchschnittlicher zufälliger anfänglicher Rotationswartezeit einen effektiven Durchsatz von mindestens 100 MB/s?
  1. 1,6 MB
  2. 0,8 MB
  3. 1,0 MB
  4. 2,0 MB
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Für zwei Festplattenanfragen werden Positionierungs- und Rotationszeiten von 1 ms/7 ms beziehungsweise 3 ms/1 ms vorhergesagt. Wie ordnet SPTF sie?
  1. Es bedient die erste, weil 1 ms die kürzere Positionierungszeit ist.
  2. Es bedient die zweite, weil 4 ms die kürzere Gesamtpositionierungszeit ist.
  3. Es bedient die erste, weil 7 ms die längere Rotationswartezeit ist.
  4. Es bedient die zweite, weil eine längere Positionierung immer Vorrang hat.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Eine SSD mit 512 GiB verwendet logische Seiten mit 8 KiB und einen 8 Byte großen Zuordnungseintrag pro Seite. Wie viel Speicherplatz benötigt die vollständige Zuordnung auf Seitenebene, wenn sie im Speicher bleibt?
  1. 256 MiB
  2. 1 GiB
  3. 64 MiB
  4. 512 MiB
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Eine gefüllte SSD wird bei anhaltenden zufälligen Überschreibungen langsamer, obwohl ihre Verbindungsgeschwindigkeit unverändert ist. Welche interne Arbeit kann den Rückgang erklären?
  1. Zunehmende Rotationswartezeiten zwischen Flash-Seiten.
  2. Das Kopieren bereits ungültig markierter Seiten bei der GC.
  3. Das Kopieren gültiger Seiten bei der Garbage Collection.
  4. Das Löschen nur der einzelnen überschriebenen Flash-Seiten.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Ein redundanter Verbund hat ein Mitglied verloren, stellt aber innerhalb seiner Ausfalltoleranz weiterhin alle angeforderten Daten bereit. In welchem Zustand befindet er sich?
  1. Im degradierten Betrieb.
  2. In einem abgeschlossenen Wiederaufbau.
  3. In einer Fail-Stop-Abschaltung.
  4. In einem Betrieb ohne Striping.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Der Wiederaufbau eines RAID-5-Verbunds mit vier Festplatten muss drei verbliebene Festplatten mit je 6 TB lesen. Modelliere für eine Beispielrechnung einen Lesefehler pro 10¹⁵ Bits. Welche erwartete Fehleranzahl ergibt sich, und was bedeutet sie?
  1. 0,018 Fehler; eine erwartete Anzahl unter dem Ratenmodell.
  2. 0,144 Fehler; eine erwartete Anzahl unter dem Ratenmodell.
  3. 0,144 Fehler; genau 14,4 % Wahrscheinlichkeit für Datenverlust.
  4. 0,018 Fehler; genau 1,8 % Wahrscheinlichkeit für Datenverlust.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Zwei Spiegelmitglieder geben für denselben Block unterschiedliche Inhalte zurück. Keines meldet einen Lesefehler, und es ist keine erwartete Prüfsumme verfügbar. Welche Schlussfolgerung ist gerechtfertigt?
  1. Das zuerst gelesene Mitglied muss die neuesten Daten enthalten.
  2. Das Mitglied mit mehr freiem Speicher muss korrekt sein.
  3. Die Abweichung identifiziert das fehlerhafte Mitglied.
  4. Die Kopien weichen ab, aber keine ist als korrekt geprüft.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Wie viele unterscheidbare Ladungszustände benötigt eine QLC-Flash-Zelle, um ihre vier Bits darzustellen?
  1. 16
  2. 8
  3. 4
  4. 32
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 5: Wähle Entwürfe unter mehreren Einschränkungen10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Ein Geräteregister setzt bei jedem Lesen sein Bereitschaftsflag zurück. Warum muss der Treiber wiederholte Lesezugriffe als Geräteoperationen behandeln?
  1. Das Register enthält immer einen vollständigen Datenblock.
  2. Jeder Lesezugriff kann den sichtbaren Gerätezustand ändern.
  3. Jeder Lesezugriff gibt garantiert gepufferte Byte zurück.
  4. Das Register ist nur über DMA beschreibbar.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Während einer Paketflut ist eine CPU ständig mit Interruptbehandlung beschäftigt, während die Anwendung fast keine Pakete verarbeitet. Welche Änderung wirkt diesem Livelock-Mechanismus entgegen?
  1. Für jedes wartende Paket einen eigenen Interrupt auslösen.
  2. Die Interruptrate beibehalten und jeden Verbraucher blockieren.
  3. Bei hoher Last Polling in begrenzten Stapeln ausführen.
  4. Jedes abgeschlossene Paket einen weiteren Interrupt auslösen lassen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Ein Puffer ist virtuell zusammenhängend und erstreckt sich über zwei nicht benachbarte physische Seiten. Der Treiber übergibt den Benutzerzeiger an ein DMA-Gerät und gibt die Seiten vor Abschluss frei. Welche Korrektur behebt beide Fehler?
  1. Den Benutzerzeiger behalten und das Befehlsregister leeren.
  2. Eine Seite abbilden und nur den Abschlussstatus kopieren.
  3. Die Seiten fixieren, aber weiter den virtuellen Zeiger übergeben.
  4. Abgebildete Scatter-Gather-Adressen bereitstellen und Seiten fixiert halten.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Ein Gerät garantiert Atomarität bei Stromausfall für eine 4-KiB-Einheit. Ein ausgerichteter Schreibvorgang über 8 KiB umfasst zwei solche Einheiten und wird im flüchtigen Write-Back-Cache bestätigt. Was lässt sich für einen sofortigen Stromausfall folgern?
  1. Weder die gesamte 8-KiB-Aktualisierung noch ihre Dauerhaftigkeit ist garantiert.
  2. Die gesamte 8-KiB-Aktualisierung ist atomar, weil beide Einheiten ausgerichtet sind.
  3. Der gesamte Schreibvorgang ist dauerhaft, weil die Bestätigung bereits vorliegt.
  4. Nur die zweite 4-KiB-Einheit kann ihren vorherigen Inhalt behalten.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Welcher physische Vorgang begrenzt hauptsächlich die Programmier-/Löschhaltbarkeit von NAND?
  1. Wiederholtes Lesen zählt immer als vollständige Löschzyklen.
  2. Jedes Löschen entfernt dauerhaft eine gespeicherte Bitposition.
  3. Wiederholte Programmier-/Löschzyklen beschädigen Flash-Zellen.
  4. Wiederholte ECC-Prüfungen verbrauchen das Schreibbudget der Zelle.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Ein Verbund hat eine Write-Intent-Bitmap, aber kein Protokoll neuer Daten oder Parität. Welche Wiederherstellungsinformation liefert die Bitmap nach einer unterbrochenen Aktualisierung?
  1. Den genau vorgesehenen neuen Inhalt jedes betroffenen Blocks.
  2. Die Bereiche, die geprüft und erneut synchronisiert werden müssen.
  3. Die Identität jedes unbemerkt beschädigten Datenmitglieds.
  4. Die fehlenden Paritätswerte für jeden unvollständigen Stripe.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Ein RAID-10-Verbund mit sechs Festplatten hat die Paare (0, 1), (2, 3) und (4, 5). Festplatte 2 ist ausgefallen. Jede intakte Festplatte hat die zufällige Leserate R. Welcher zweite Ausfall erhält alle Daten, und welche ideale zufällige Gesamtleserate bleibt?
  1. Festplatte 3 fällt aus; 4R bleiben.
  2. Festplatte 4 fällt aus; 3R bleiben.
  3. Festplatte 3 fällt aus; 3R bleiben.
  4. Festplatte 4 fällt aus; 4R bleiben.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Ein RAID-0-Verbund hat vier Festplatten und Chunks aus drei Blöcken. Festplatten und lokale Offsets beginnen bei null. Wo liegt der logische Block 29?
  1. Festplatte 1, Offset 8.
  2. Festplatte 1, Offset 7.
  3. Festplatte 3, Offset 6.
  4. Festplatte 2, Offset 8.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Vier Festplatten mit je 8 TB müssen 16 TB bereitstellen, zwei beliebige Ausfälle von Mitgliedern überstehen und ein vollständiges Ersatzlaufwerk wiederaufbauen. Die Schreibrate des Ersatzlaufwerks darf 160 MB/s nicht überschreiten. Welches Level und welche optimistische Mindestzeit passen?
  1. RAID-10; etwa 13,9 Stunden.
  2. RAID-6; etwa 6,9 Stunden.
  3. RAID-6; etwa 13,9 Stunden.
  4. RAID-5; etwa 13,9 Stunden.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Ein gespiegelter Lesezugriff auf Festplatte A besteht die Prüfung gegen seine erwartete Prüfsumme nicht. Festplatte B liefert eine Kopie, die die Prüfung besteht. Was sollte ein selbstheilendes System tun?
  1. Die Daten von A zurückgeben und nur die abweichende Prüfsumme erfassen.
  2. Die Daten von B zurückgeben und damit die Kopie auf A reparieren.
  3. Beide Kopien zurückweisen, weil der erste Lesezugriff fehlschlug.
  4. B mit Daten von A überschreiben, weil A zuerst ausgewählt wurde.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Hängst du bei deiner eigenen Aufgabe fest? Hausaufgabenhilfe

Schlüsselbegriffe

103 Schlüsselbegriffe, jeweils mit Definition

A

Additive Prüfsumme
Eine additive Prüfsumme summiert Datenteile modulo eines festen Bereichs und erkennt günstig manche Änderungen, bleibt aber gegenüber der Reihenfolge der Teile unempfindlich.
Eine additive Acht-Bit-Prüfsumme reduziert eine Gesamtsumme von 300 modulo 256 auf den Wert 44.
Adresskennung
Eine Adresskennung hält den Ort fest, zu dem ein Block gehört, sodass ein Leser die zurückgegebene Kennung mit dem angeforderten Ziel vergleichen kann.
Eine Adresskennung für Block 720 widerspricht einem Lesezugriff, der Block 270 angefordert hat.
Antizipierendes Scheduling
Antizipierendes Scheduling wartet kurz auf eine wahrscheinliche Folgeanfrage in der Nähe, statt den Kopf sofort zu anderer ausstehender Arbeit wegzubewegen.
Antizipierendes Scheduling kann eine Positionierungsbewegung weg und zurück sparen, wenn ein Prozess bald einen weiteren Block anfordert.

B

Befehlsregister
Ein Befehlsregister nimmt eine Geräteoperationsanfrage entgegen und kann die Hardwarearbeit starten, sobald der Treiber den erforderlichen Befehl schreibt.
Der Treiber stellt Ausgabedaten bereit, bevor er das Befehlsregister beschreibt, das die Übertragung startet.
Blockgerät
Ein Blockgerät stellt Speicher als adressierte Blöcke bereit, die über die Blockanfrageschnittstelle des Kernels unabhängig gelesen oder geschrieben werden können.
Linux stellt einen NVMe-Namensraum als Blockgerät bereit, das ein Dateisystem lesen und beschreiben kann.
Blockschicht
Die Blockschicht reiht Speicheranfragen ein und kann sie zusammenfassen oder einplanen, bevor sie Operationen an den passenden Hardwaretreiber weitergibt.
Die Blockschicht kombiniert zwei benachbarte Lesezugriffe, sodass der Treiber eine größere Anfrage einreichen kann.
Busmaster
Ein Busmaster ist ein Gerät oder Controller, der Übertragungen auf der Verbindung initiiert, etwa eine DMA-Einheit, die Hauptspeicher liest oder beschreibt.
Eine SSD handelt als Busmaster, wenn sie einen angeforderten Block direkt in den abgebildeten Puffer schreibt.

C

C-LOOK
C-LOOK bedient Anfragen in einer Richtung und springt zwischen den äußersten ausstehenden Anfragen zurück. So vermeidet es Wege zu ungenutzten physischen Festplattenrändern.
C-LOOK bewegt sich zur niedrigsten ausstehenden Anfrage zurück, ohne während des Rückwegs Anfragen zu bedienen.
C-SCAN
C-SCAN bedient Anfragen in einer Richtung und kehrt ohne Bedienung zum Anfang zurück. Dadurch erhalten die Positionen einen gleichmäßigeren Bedienungszyklus.
Der Rückweg bei C-SCAN bewegt den Kopf trotzdem und muss zum Gesamtweg gezählt werden.
Chunkgröße
Die Chunkgröße ist die zusammenhängende Datenmenge eines Verbunds, die auf einer Festplatte abgelegt wird, bevor die Platzierung zum nächsten Mitglied des Stripe wechselt.
Eine Chunkgröße von zwei Blöcken platziert zwei benachbarte logische Blöcke auf derselben Festplatte, bevor gewechselt wird.

D

Degradierter Betrieb
Degradierter Betrieb ist die fortgesetzte Bereitstellung durch einen redundanten Verbund nach Ausfällen innerhalb seiner Toleranz, bevor die fehlende Redundanz wiederaufgebaut wurde.
Ein RAID-5-Verbund im degradierten Betrieb kann Daten lesen, aber keinen weiteren vollständigen Festplattenausfall tolerieren.
Direkter Speicherzugriff (DMA)
Direkter Speicherzugriff (DMA) überträgt Daten mithilfe von Hardware zwischen einem Gerät und dem Hauptspeicher, ohne dass die CPU jedes Nutzdatenwort kopieren muss.
Direkter Speicherzugriff (DMA) lässt die CPU rechnen, während ein Controller einen vorbereiteten Speicherpuffer füllt.
Doorbell-Register
Ein Doorbell-Register ist ein Gerätesteuerregister, das Software beschreibt, um einen Controller über eine Änderung des Einreichungs- oder Abschlusszustands einer Warteschlange zu benachrichtigen.
Nachdem der Treiber einen Befehl im Speicher abgelegt hat, beschreibt er das Doorbell-Register der Einreichungswarteschlange.
Durchsatz
Durchsatz ist abgeschlossene Arbeit pro Zeiteinheit, etwa MB/s oder IOPS, und unterscheidet sich von der Dauer einer einzelnen Anfrage.
Mehr gespiegelte Lesekopien können den Durchsatz erhöhen, während ein einzelner Blocklesezugriff weiterhin etwa gleich lange dauert.
DWPD
DWPD drückt das angegebene tägliche Schreibvolumen des Hosts über den Garantiezeitraum als Vielfaches der vollen Laufwerkskapazität aus.
Eine 2-TB-SSD mit 0,5 DWPD unterstützt laut Angabe durchschnittlich 1 TB Schreibvorgänge des Hosts pro Garantietag.

E

Ende-zu-Ende-Integrität
Ende-zu-Ende-Integrität prüft Inhalte nahe ihrem endgültigen Nutzer über den gesamten Datenpfad und erkennt Fehler, die über einen auf das Medium begrenzten Schutz hinausgehen.
Eine Dateisystemprüfsumme bietet Ende-zu-Ende-Integrität über mehr Komponenten als der interne ECC der Festplatte.
Erwartete Fehleranzahl
Eine erwartete Fehleranzahl ist die mittlere Anzahl von Fehlern, die unter einem gewählten Ratenmodell für ein Lesevolumen vorhergesagt wird; sie ist für sich keine Ausfallwahrscheinlichkeit.
Eine Verdopplung des modellierten Lesevolumens verdoppelt bei fester Fehlerrate die erwartete Fehleranzahl.

F

Fail-Partial-Modell
Das Fail-Partial-Modell lässt zu, dass ein Gerät größtenteils funktionsfähig bleibt, während einzelne Blöcke unlesbar sind oder unbemerkt falsche Daten zurückgeben.
Das Fail-Partial-Modell erklärt, warum eine Online-Festplatte dennoch Blöcke haben kann, die wiederhergestellt werden müssen.
Fail-Stop-Modell
Das Fail-Stop-Modell nimmt an, dass eine Festplatte entweder korrekt arbeitet oder vollständig und erkennbar ausfällt, sodass die Orte ihrer fehlenden Daten bekannt sind.
Das Fail-Stop-Modell ermöglicht einem Paritätsverbund, nach dem Verlust eines Mitglieds den zu rekonstruierenden Block zu identifizieren.
FCFS
FCFS bedient Festplattenanfragen in Ankunftsreihenfolge. Es hält diese Reihenfolge ein, kann aber große Kopfbewegungen zwischen entfernten aufeinanderfolgenden Anfragen verursachen.
FCFS kann den Kopf wiederholt über die Festplatte schicken, wenn aufeinanderfolgende Anfragen zwischen den Rändern wechseln.
Fehlerkorrigierender Code (ECC)
Ein fehlerkorrigierender Code (ECC) speichert redundante Informationen, die bestimmte Bitfehlermuster innerhalb seiner Korrekturfähigkeit erkennen und beheben können.
Ein Laufwerk meldet einen unlesbaren Sektor, wenn sein fehlerkorrigierender Code (ECC) die Bits nicht wiederherstellen kann.
Fehlgeleiteter Schreibvorgang
Ein fehlgeleiteter Schreibvorgang speichert Daten an einem anderen Ziel als der vorgesehenen Festplatte oder dem vorgesehenen Block und kann dabei einen Block veraltet lassen und einen anderen überschreiben.
Eine Adresskennung kann einen fehlgeleiteten Schreibvorgang aufdecken, selbst wenn die zurückgegebenen Daten zu ihrer Prüfsumme passen.
Firmware
Firmware ist Software, die innerhalb eines Gerätecontrollers läuft, sein internes Verhalten implementiert und die bereitgestellte Hardwareschnittstelle unterstützt.
Die Firmware einer SSD verwaltet die Platzierung im Flash-Speicher, während der Host weiterhin gewöhnliche Blockanfragen ausgibt.
Fixierte Speicherseite
Eine fixierte Speicherseite wird im Speicher und an ihrem Platz gehalten, solange eine Operation wie DMA noch auf den zugrunde liegenden physischen Speicher zugreifen kann.
Eine fixierte Speicherseite darf erst nach Abschluss der aktiven Geräteübertragung für einen anderen Puffer wiederverwendet werden.
Flash Translation Layer (FTL)
Der Flash Translation Layer (FTL) ist SSD-Firmware, die logische Adressen des Hosts Flash-Seiten zuordnet und Platzierung, Löschung und Verschleiß verwaltet.
Der Flash Translation Layer (FTL) leitet eine Überschreibung auf freien Speicherplatz um, ohne die LBA des Hosts zu ändern.
Flash-Seite
Eine Flash-Seite ist eine innerhalb eines Löschblocks gelesene oder programmierte Einheit, gewöhnlich mehrere KiB groß, deren Wiederverwendung vom Löschzustand des Blocks abhängt.
Eine Flash-Seite mit einer alten Version kann nicht einfach die neue Version an derselben Stelle aufnehmen.
Fletcher-Prüfsumme
Eine Fletcher-Prüfsumme führt eine Datensumme und eine laufende Summe dieser Summe. So berücksichtigt eine kostengünstige Integritätsprüfung die Position.
Die zweite Komponente der Fletcher-Prüfsumme kann sich ändern, wenn die ersten beiden Byte vertauscht werden.
Force Unit Access (FUA)
Force Unit Access (FUA) ist ein Attribut einer Schreibanfrage, das verlangt, dass die betroffenen Daten den dauerhaften Speicher erreichen, bevor der Abschluss gemeldet wird.
Ein Dateisystem kann Force Unit Access (FUA) nutzen, wenn die geschriebenen Daten bei Abschluss dauerhaft gespeichert sein müssen.
Full-Stripe-Write
Ein Full-Stripe-Write ersetzt jeden Datenblock eines Paritäts-Stripe, sodass neue Redundanz ohne Lesen des alten Stripe-Inhalts berechnet werden kann.
Ein Controller kann einen vollständigen Stapel zu einem Full-Stripe-Write zusammenfassen, um Lesezugriffe auf alte Parität zu vermeiden.

G

Garbage Collection (GC)
Die Garbage Collection (GC) gewinnt SSD-Speicherplatz zurück, indem sie gültige Seiten aus einem Löschblock verschiebt, ihre Zuordnungen aktualisiert und den Quellblock löscht.
Garbage Collection (GC) ist günstiger, wenn ein gewählter Block nur noch wenige gültige Seiten enthält, die erhalten werden müssen.
Gefährdungszeitraum beim Wiederaufbau
Der Gefährdungszeitraum beim Wiederaufbau umfasst die Zeit und Arbeitslast, während der ein Verbund verringerte Redundanz hat und fehlende Daten auf einem Ersatzlaufwerk wiederhergestellt werden.
Eine größere Festplatte kann den Gefährdungszeitraum beim Wiederaufbau verlängern, selbst wenn das Ersatzlaufwerk sofort verfügbar ist.
Geräteschnittstelle
Eine Geräteschnittstelle besteht aus den Registern und Befehlen, über die Systemsoftware Hardware steuert, ohne deren internen Aufbau zu kennen.
Ein Treiber kann dieselbe Geräteschnittstelle nutzen, selbst wenn ein neuerer Controller eine andere Firmware hat.
Gerätetreiber
Ein Gerätetreiber implementiert hardwarespezifische Befehle und Abschlussbehandlung hinter einer Schnittstelle, die das übrige Betriebssystem nutzen kann.
Ein neuer Gerätetreiber ermöglicht der bestehenden Blockschicht, Anfragen an einen anderen Controller einzureichen.

H

Hierarchische Datenspeicherung
Hierarchische Datenspeicherung platziert häufig genutzte Daten auf schnellerem Speicher und weniger aktive Daten auf günstigerer Kapazität, um Zugriffszeit und Kosten aufeinander abzustimmen.
Hierarchische Datenspeicherung kann einen aktiven Index auf SSDs halten, während große selten gelesene Dateien auf HDDs bleiben.
Hot-Spare-Laufwerk
Ein Hot-Spare-Laufwerk ist eine eingebaute, ungenutzte Festplatte, die nach dem Ausfall eines Verbundmitglieds zeitnah als Ziel für den Wiederaufbau verfügbar ist.
Ein Hot-Spare-Laufwerk verkürzt die Verzögerung beim Ersatz, während die eigentliche Kopierarbeit des Wiederaufbaus bestehen bleibt.
Hybrides Warten
Hybrides Warten fragt für kurze Zeit per Polling ab und blockiert dann für einen Interrupt, falls die Operation noch nicht abgeschlossen ist. So passt es sich unterschiedlichen Abschlusszeiten an.
Hybrides Warten behandelt eine schnelle Antwort sofort, ohne während einer langen Geräteverzögerung aktiv zu warten.

I

Interruptbehandlungsroutine
Eine Interruptbehandlungsroutine ist Kernelcode, der auf eine Hardwarebenachrichtigung reagiert, das Ereignis prüft und die erforderliche Abschlussarbeit ausführt.
Die Interruptbehandlungsroutine setzt den auf einen abgeschlossenen Lesezugriff wartenden Prozess für den CPU-Scheduler auf bereit.
Interruptbündelung
Interruptbündelung fasst mehrere Geräteereignisse zu weniger Interrupts zusammen. Das verringert den CPU-Aufwand für Benachrichtigungen und fügt etwas Abschlussverzögerung hinzu.
Durch Interruptbündelung kann ein Aufruf der Behandlungsroutine die Abschlüsse mehrerer Speicheranfragen verarbeiten.
IOMMU
Eine IOMMU übersetzt für Geräte sichtbare Speicheradressen und setzt Zugriffsbeschränkungen durch. Sie hilft, DMA-Geräte von nicht zugehörigem physischem Speicher zu isolieren.
Die IOMMU kann ein durchgereichtes Gerät auf den Speicher beschränken, der seiner virtuellen Maschine zugewiesen ist.
IOPS
IOPS misst abgeschlossene Ein-/Ausgabeoperationen pro Sekunde. Die Aussage hängt von Anfragegröße, Arbeitslast, Nebenläufigkeit und dem Verhältnis von Lese- zu Schreibzugriffen ab.
Ein Test zufälliger Lesezugriffe nacheinander gibt IOPS für eine ganz andere Arbeitslast an als ein Test mit tiefer Warteschlange.

K

Kapazitätseffizienz
Die Kapazitätseffizienz ist die nutzbare Datenkapazität geteilt durch die Rohkapazität der Mitglieder und zeigt, wie viel Speicherplatz ein Aufbau für Redundanz aufwendet.
Die RAID-5-Kapazitätseffizienz steigt mit der Mitgliederzahl, während die Wiederherstellung mehr verbliebene Daten lesen muss.
Kryptografische Hashfunktion
Eine kryptografische Hashfunktion bildet Daten auf einen Prüfwert fester Größe ab und soll sowohl gezielte Kollisionsangriffe erschweren als auch zufällige Änderungen erkennbar machen.
Eine kryptografische Hashfunktion erkennt Manipulation nur, wenn der erwartete Prüfwert selbst vertrauenswürdig ist.

L

Latenter Sektorfehler (LSE)
Ein latenter Sektorfehler (LSE) ist ein unlesbarer Sektor, der beim Zugriff entdeckt und nach dem Scheitern der internen Korrektur vom Laufwerk gemeldet wird.
Scrubbing kann einen latenten Sektorfehler (LSE) in Daten aufdecken, die seit Monaten nicht gelesen wurden.
Leistung im stationären Zustand
Die Leistung im stationären Zustand beschreibt das anhaltende SSD-Verhalten, nachdem laufende Schreibvorgänge und Garbage Collection die anfängliche Phase des leeren Laufwerks abgelöst haben.
Die Leistung eines gefüllten Laufwerks im stationären Zustand kann unter seiner Schreibgeschwindigkeit im Neuzustand liegen.
Leseprüfung nach dem Schreiben
Die Leseprüfung nach dem Schreiben vergleicht einen erneuten Lesezugriff mit dem vorgesehenen neuen Inhalt. Sie erzeugt zusätzliche Ein-/Ausgabe, um zu prüfen, ob die erwartete Aktualisierung gespeichert wurde.
Die Leseprüfung nach dem Schreiben muss das gespeicherte Ergebnis erreichen, statt nur den flüchtigen Cache erneut zu lesen.
Lesestörung (Read Disturb)
Eine Lesestörung ist eine durch wiederholtes Lesen verursachte Verschiebung gespeicherter Flash-Ladung, die Bitfehler in benachbarten Zellen erhöhen kann.
ECC und Auffrischungsmechanismen des Controllers helfen, Fehler durch Lesestörungen zu bewältigen.
Livelock
Livelock ist anhaltende Systemaktivität mit wenig nützlichem Fortschritt, etwa übermäßige Interruptbehandlung, die die Ausführung paketverarbeitender Prozesse verhindert.
Eine Paketflut kann Livelock verursachen, obwohl die CPU-Auslastung nahe hundert Prozent bleibt.
Logische Blockadresse (LBA)
Eine logische Blockadresse (LBA) ist eine Sektornummer im für den Host sichtbaren Feld eines Speichergeräts, unabhängig von der verborgenen physischen Platzierung auf dem Medium.
Das Dateisystem fordert eine logische Blockadresse (LBA) an, ohne eine Magnetscheibe oder Spur zu benennen.
LOOK
LOOK durchläuft Anfragen, kehrt aber bei der letzten ausstehenden Anfrage in seiner Richtung um und vermeidet so den ungenutzten Weg von dort bis zum Festplattenrand.
LOOK kehrt bei Spur 110 um, wenn keine höhere Anfrage mehr aussteht, selbst wenn die Festplatte bis 199 reicht.
Löschblock
Ein Löschblock ist die Gruppe von Flash-Seiten, die durch eine Löschoperation gemeinsam zurückgesetzt werden. Er ist gewöhnlich viel größer als die Programmiereinheit auf Seitenebene.
Die GC kopiert gültige Seiten aus einem Löschblock, bevor sie ihn für zukünftige Programmiervorgänge zurücksetzt.

M

MSI-X
MSI-X ist ein nachrichtenbasierter PCIe-Interruptmechanismus, der mehrere Vektoren bereitstellt und einem Gerät erlaubt, unterschiedliche Benachrichtigungen unabhängig voneinander zu leiten.
Ein NVMe-Controller kann MSI-X-Vektoren nutzen, um Warteschlangenabschlüsse an die CPU-Kerne zu senden, die sie behandeln.

N

NAND-Flash
NAND-Flash ist nichtflüchtiger Speicher, der Bits als Ladungszustände in Zellen darstellt und Zugriffe in Seiten innerhalb größerer Löschblöcke organisiert.
NAND-Flash behält seinen Inhalt ohne Strom, benötigt aber gelöschten Speicherplatz, bevor eine Seite programmiert werden kann.
Nicht korrigierbarer Lesefehler (URE)
Ein nicht korrigierbarer Lesefehler (URE) ist ein Lesefehler, den das Laufwerk nicht beheben kann. Eine veröffentlichte URE-Rate begrenzt Fehler im Verhältnis zu gelesenen Bits.
Ein URE auf einer verbliebenen Festplatte während eines RAID-5-Wiederaufbaus kann für seinen Stripe zu wenig Wiederherstellungsinformationen hinterlassen.
NVMe
NVMe ist eine für nichtflüchtigen Speicher entwickelte Speicherbefehlsschnittstelle, die viele Einreichungs- und Abschlusswarteschlangen im Speicher unterstützt.
NVMe-Warteschlangenpaare ermöglichen verschiedenen CPU-Kernen, Flash-Anfragen mit weniger Konkurrenz um gemeinsame Ressourcen einzureichen.

O

Over-Provisioning
Over-Provisioning reserviert Flash-Kapazität vor der Nutzung durch den Host und gibt einer SSD zusätzlichen freien Speicherplatz für Garbage Collection und andere interne Verwaltung.
Over-Provisioning lässt die GC die Rückgewinnung von Blöcken aufschieben, bei denen viele gültige Seiten kopiert werden müssten.

P

Polling
Polling prüft wiederholt den Gerätezustand auf Bereitschaft oder Abschluss. Die unmittelbare Beobachtung kostet CPU-Arbeit, solange das Gerät beschäftigt bleibt.
Eine kurze Polling-Schleife kann bei einer sehr schnellen Speicheroperation weniger kosten als das Blockieren und Aufwecken.
Portadressierte Ein-/Ausgabe
Die portadressierte Ein-/Ausgabe greift über einen getrennten Portadressraum mit speziellen Prozessorbefehlen wie x86 in und out auf Geräteregister zu.
Ein x86-Kernel kann einschränken, welche Prozesse die für portadressierte Ein-/Ausgabe verwendeten Befehle ausführen dürfen.
Positionierungszeit
Die Positionierungszeit ist die Zeit, die ein HDD-Arm benötigt, um die Köpfe zur von einer Anfrage benötigten Spur zu bewegen und dort zur Ruhe zu bringen, bevor die Rotationswartezeit beginnt.
Bei einem kleinen zufälligen Lesezugriff kann die Positionierungszeit die für die Nutzdatenübertragung benötigte Zeit stark übersteigen.
Programmier-/Löschzyklus
Ein Programmier-/Löschzyklus ist eine Nutzung von Flash-Zellen durch Programmieren und Löschen, die zum Verschleiß beiträgt und allmählich ihre Fähigkeit verringert, Ladung zuverlässig zu halten.
Der Verschleißausgleich verteilt Programmier-/Löschzyklen, damit eine kleine Gruppe heißer Blöcke nicht zuerst verschleißt.
Programmierte Ein-/Ausgabe (PIO)
Die programmierte Ein-/Ausgabe (PIO) überträgt Nutzdaten durch CPU-Befehle zwischen Speicher und einem Geräteregister, sodass die CPU an jeder Übertragung beteiligt ist.
Programmierte Ein-/Ausgabe (PIO) benötigt viele Registerzugriffe, wenn die Nutzdaten einen großen Datenblock enthalten.
Prüfsumme
Eine Prüfsumme ist ein kompakter, aus Daten berechneter Wert, der beim Lesen mit einem Erwartungswert verglichen wird, um Änderungen am geschützten Inhalt zu erkennen.
Der Leser berechnet eine Prüfsumme erneut, bevor er entscheidet, ob ein gespeicherter Block dem Erwartungswert entspricht.
Prüfsumme im übergeordneten Blockzeiger
Eine Prüfsumme im übergeordneten Blockzeiger speichert die erwartete Prüfsumme eines untergeordneten Blocks im referenzierenden übergeordneten Block und trennt so den Erwartungswert vom geprüften Block.
Eine Prüfsumme im übergeordneten Blockzeiger kann eine alte Version des untergeordneten Blocks zurückweisen, selbst wenn deren lokale Prüfsumme übereinstimmt.
Prüfsummenkollision
Eine Prüfsummenkollision tritt auf, wenn unterschiedliche Eingaben auf dieselbe Prüfsumme abgebildet werden, sodass mancher veränderte Inhalt einen Vergleich auf Übereinstimmung besteht.
Zwei sich aufhebende Bitänderungen erzeugen bei einer einfachen byteweisen XOR-Prüfung eine Prüfsummenkollision.

R

RAID
RAID kombiniert mehrere Festplatten zu einem logischen Speichergerät, dessen Aufbau nutzbaren Speicherplatz, parallele Leistung und Toleranz gegenüber Festplattenausfällen bestimmt.
Ein Dateisystem kann eine RAID-Blockschnittstelle lesen, ohne zu wissen, welches physische Mitglied die Daten enthält.
RAID-0
RAID-0 verteilt Daten ohne Redundanz per Striping über Mitglieder, nutzt deren gesamte Rohkapazität und verliert bei jedem Ausfall eines Mitglieds Daten des Verbunds.
RAID-0 eignet sich für temporäre Zwischenergebnisse, die nach dem Ausfall eines Speichermitglieds erneut erzeugt werden können.
RAID-4
RAID-4 verteilt Daten per Striping und hält XOR-Parität auf einer eigenen Festplatte, die für kleine Schreibvorgänge im gesamten Verbund zum gemeinsamen Engpass wird.
Zusätzliche Datenfestplatten bei RAID-4 beseitigen nicht die Lese- und Schreibarbeit des Paritätsmitglieds pro Aktualisierung.
RAID-5
RAID-5 verteilt einen Paritätsblock pro Stripe über die Mitglieder. Es behält die Toleranz gegenüber dem Ausfall eines Mitglieds und verteilt zugleich die Paritätsaktualisierungsarbeit.
Ein RAID-5-Verbund mit sechs Mitgliedern bietet Datenkapazität im Umfang von fünf Mitgliedern und toleriert einen Ausfall.
RAID-6
RAID-6 speichert zwei unabhängige Redundanzwerte pro Stripe und toleriert dadurch den Ausfall von zwei beliebigen Mitgliedern auf Kosten der Kapazität von zwei Mitgliedern.
Eine kleine RAID-6-Aktualisierung muss beide Redundanzwerte pflegen und erhöht dadurch gegenüber RAID-5 die physische Ein-/Ausgabearbeit.
RAID-10
RAID-10 verteilt Daten per Striping über gespiegelte Paare, nutzt die Hälfte der Rohkapazität und übersteht Ausfälle, solange jedes Paar eine funktionierende Kopie behält.
Ein RAID-10-Verbund mit sechs Festplatten kann drei Ausfälle überstehen, wenn jeder ein anderes gespiegeltes Paar betrifft.
Read-Modify-Write
Read-Modify-Write aktualisiert Parität, indem alte Daten und Redundanz gelesen, Ersatzwerte berechnet und anschließend neue Daten und Redundanz geschrieben werden.
Ein RAID-5-Read-Modify-Write-Vorgang nutzt für eine kleine logische Aktualisierung zwei Lesezugriffe gefolgt von zwei Schreibzugriffen.
Rekonstruktion im degradierten Betrieb
Die Rekonstruktion im degradierten Betrieb leitet angeforderte Daten aus verbliebener Redundanz ab, wenn das Mitglied fehlt, das sie normalerweise speichert.
Eine RAID-5-Rekonstruktion im degradierten Betrieb liest mehrere verbliebene Stripe-Blöcke statt eines Datenblocks.
Rotationslatenz
Die Rotationslatenz ist die Wartezeit, bis sich ein angeforderter HDD-Sektor nach der Positionierung unter den Kopf gedreht hat. Bei zufälligen Sektoren beträgt sie durchschnittlich eine halbe Umdrehung.
Bei 10.000 Umdrehungen pro Minute beträgt die durchschnittliche zufällige Rotationslatenz 3 ms, weil eine volle Umdrehung 6 ms dauert.

S

SCAN
SCAN bedient Anfragen auf einem Durchlauf zu einem Festplattenrand und kehrt dann die Richtung um. Wiederholte Durchläufe über die Spuren verteilen die Bedienung.
SCAN fährt bis zum Rand weiter, selbst wenn seine letzte ausstehende Anfrage in dieser Richtung davor liegt.
Scatter-Gather-Liste
Eine Scatter-Gather-Liste beschreibt getrennte Übertragungsbereiche durch Paare aus Adresse und Länge, sodass eine Anfrage nicht benachbarten Speicher umfassen kann.
Ein Treiber erstellt eine Scatter-Gather-Liste für einen Puffer, dem mehrere getrennte physische Seiten zugrunde liegen.
Schreibverstärkung (Write Amplification)
Die Schreibverstärkung ist das Verhältnis der intern in den Flash programmierten Byte zu den vom Host geschriebenen Byte und umfasst interne Verschiebungen.
Die Schreibverstärkung steigt, wenn anhaltende Aktualisierungen das Kopieren vieler gültiger Seiten während der GC erzwingen.
Scrubbing
Scrubbing liest und prüft gespeicherte Daten vorsorglich und deckt latente Fehler auf, solange verbliebene Redundanz möglicherweise noch eine Reparatur erlaubt.
Ein monatlicher Scrubbing-Durchlauf kann kalte Daten prüfen, lange bevor eine Anwendung sie erneut anfordert.
Selbstheilung
Selbstheilung repariert eine fehlerhafte gespeicherte Kopie mithilfe redundanter Inhalte, die zuvor die Prüfung gegen die erwarteten Daten bestanden haben.
Ein gespiegeltes Dateisystem führt Selbstheilung aus, nachdem es bei einem Prüfsummenfehler eine gültige alternative Kopie gefunden hat.
Sequenzieller Zugriff
Sequenzieller Zugriff liest oder schreibt benachbarte Blöcke der Reihe nach und ermöglicht einer Festplatte, Positionierungsaufwand auf eine lange Übertragung zu verteilen.
Sequenzieller Zugriff kann sich der dauerhaften HDD-Übertragungsrate annähern, wenn die Anfrage groß genug ist.
Speicherabgebildete Ein-/Ausgabe (MMIO)
Die speicherabgebildete Ein-/Ausgabe (MMIO) weist Geräteregistern Adressen im physischen Adressraum zu, sodass kontrollierte Lade- und Speicherzugriffe sie erreichen können.
Der NVMe-Treiber nutzt speicherabgebildete Ein-/Ausgabe (MMIO), um nach der Vorbereitung eines Befehls eine Warteschlangen-Doorbell zu beschreiben.
Spiegelung
Spiegelung hält Kopien derselben logischen Daten auf getrennten Mitgliedern vor, erlaubt Lesezugriffe auf jede der beiden Kopien und verlangt, dass beide jede Aktualisierung erhalten.
Spiegelung ermöglicht einer geprüften intakten Kopie, Daten bereitzustellen, wenn ihre Partnerkopie ausgefallen ist.
SPTF
SPTF wählt die Anfrage mit der kürzesten vorhergesagten Summe aus Positionierungszeit und Rotationslatenz. Dazu nutzt es Positionsinformationen, die normalerweise im Laufwerk verfügbar sind.
SPTF kann eine weiter entfernte Spur bevorzugen, wenn sich ihr Sektor früher unter den Kopf dreht.
Spur
Eine Spur ist eine kreisförmige Bahn magnetischer Daten auf einer HDD-Magnetscheibenoberfläche. Sie ist in Sektoren unterteilt, die bei der Drehung der Scheibe unter einem Kopf vorbeilaufen.
Der Wechsel zu einer anderen Spur erfordert eine Neupositionierung des Arms, bevor die gewünschten Sektoren gelesen werden können.
Spurversatz
Der Spurversatz verschiebt Sektorpositionen zwischen benachbarten Spuren, sodass ein sequenzieller Lesezugriff nach der für den Spurwechsel nötigen Zeit fortgesetzt werden kann.
Der Spurversatz verhindert, dass der nächste sequenzielle Sektor kurz vor dem Erreichen seiner Spur durch den Kopf vorbeiläuft.
SSTF
SSTF wählt die ausstehende Anfrage mit der kürzesten Positionierungsbewegung. Das verringert Wege in der Nähe, birgt aber das Risiko, entfernte Anfragen auf unbestimmte Zeit aufzuschieben.
SSTF wählt wiederholt neu eintreffende Anfragen in der Nähe, während eine ältere Anfrage auf einer entfernten Spur wartet.
Statusregister
Ein Statusregister meldet den aktuellen Zustand eines Geräts, etwa Bereitschaft, Aktivität, Abschluss oder einen Fehler, damit die Systemsoftware ihn prüfen kann.
Der Treiber prüft das Statusregister, bevor er einem beschäftigten Controller einen Befehl einreicht.
Striping
Striping verteilt aufeinanderfolgende logische Chunks auf Festplatten und ermöglicht parallele Arbeit. Ob Redundanz vorhanden ist, hängt vom RAID-Aufbau ab.
RAID-0 nutzt Striping, um den Gesamtdurchsatz zu erhöhen, ohne zusätzliche Wiederherstellungsinformationen vorzuhalten.

T

TBW
TBW ist eine Haltbarkeitsangabe für die gesamten vom Host unter den angegebenen Bedingungen geschriebenen Terabyte und unterscheidet sich von internen Flash-Programmiervorgängen.
Eine Angabe von 900 TBW zählt das Schreibvolumen des Hosts, auch wenn Garbage Collection zusätzliche Flash-Schreibvorgänge erzeugt.
TRIM
TRIM teilt einer SSD mit, dass logische Bereiche keine benötigten Daten mehr enthalten, sodass der Controller deren alte physische Inhalte als ungültig behandeln kann.
TRIM nach dem Löschen einer Datei kann verhindern, dass der Controller veraltete Seiten während der Rückgewinnung kopiert.

Ü

Übertragungszeit
Die Übertragungszeit ist die Zeit, in der die Nutzdaten übertragen werden, sobald sie zugänglich sind. Sie wird als Anzahl der Byte geteilt durch die geltende Übertragungsrate berechnet.
Eine große sequenzielle Anfrage verbringt einen viel größeren Teil ihrer Bedienzeit mit der Übertragung als ein sehr kleiner Lesezugriff.

U

Unbemerkte Datenkorruption
Unbemerkte Datenkorruption tritt auf, wenn ein Speicherlesezugriff falschen Inhalt zurückgibt, ohne einen Fehler zu melden. Ihre Erkennung benötigt eine unabhängige Prüfung.
Ein einfacher Spiegel kann unbemerkte Datenkorruption zurückgeben, wenn er eine fehlerhafte Kopie liest, ohne ihren Inhalt zu prüfen.

V

Verlorener Schreibvorgang
Ein verlorener Schreibvorgang ist eine als abgeschlossen gemeldete Aktualisierung, die den Speicher nicht erreicht und alten Inhalt hinterlässt, der eine gültige lokale Prüfsumme behalten kann.
Eine aktuelle Prüfsumme in einem übergeordneten Datensatz kann den veralteten untergeordneten Inhalt zurückweisen, den ein verlorener Schreibvorgang hinterlassen hat.
Verschleißausgleich (Wear Leveling)
Der Verschleißausgleich verteilt Flash-Löschzyklen auf Blöcke und verschiebt dabei manchmal unveränderte Daten, damit wenig genutzte Blöcke in den aktiven Schreibpool aufgenommen werden können.
Der Verschleißausgleich kann kalte Daten verschieben, selbst wenn der Host keine Änderung dieser Daten angefordert hat.

W

Warteschlangentiefe
Die Warteschlangentiefe ist die Anzahl ausstehender Ein-/Ausgabeanfragen. Sie kann SSD-Parallelität nutzbar machen, bei ausgeschöpfter Bedienkapazität aber auch Wartezeit hinzufügen.
Eine höhere Warteschlangentiefe lässt mehrere Flash-Kanäle unabhängige Lesezugriffe gleichzeitig verarbeiten.
Wiederaufbau (Rebuild)
Ein Wiederaufbau stellt den Inhalt eines fehlenden Verbundmitglieds auf einem Ersatzlaufwerk wieder her, indem er einen Spiegel kopiert oder Daten aus verbliebenen Informationen rekonstruiert.
Datenverkehr im Vordergrund kann einen Wiederaufbau verlängern, weil Anwendungsanfragen mit der Wiederherstellungs-Ein-/Ausgabe konkurrieren.
Write Hole
Das Write Hole ist eine durch eine unterbrochene Aktualisierung über mehrere Festplatten verursachte Paritätsinkonsistenz, bei der Daten und Redundanz aus unterschiedlichen Versionen verbleiben.
Ein geeignetes geschütztes Aktualisierungsprotokoll hilft zu verhindern, dass das Write Hole die spätere Wiederherstellung gefährdet.
Write-Back-Cache
Ein Write-Back-Cache bestätigt Schreibvorgänge bei der Aufnahme in den Cache und ermöglicht so ihren Abschluss, bevor die Byte das dauerhafte Speichermedium erreichen.
Ein flüchtiger Write-Back-Cache kann eine bestätigte Aktualisierung verlieren, wenn vor dem Leeren des Caches die Stromversorgung ausfällt.

X

XOR-Parität
XOR-Parität ist das bitweise Exklusiv-ODER der Datenblöcke eines Stripe und ermöglicht die Rekonstruktion eines Blocks, wenn der Ort des fehlenden Blocks bekannt ist.
XOR-Parität und die verbliebenen Datenblöcke stellen den Wert wieder her, der auf einem erkennbar ausgefallenen Mitglied gespeichert war.

Z

Zeichenorientiertes Gerät
Ein zeichenorientiertes Gerät stellt eine stromorientierte Geräteschnittstelle bereit, etwa für ein Terminal oder eine serielle Schnittstelle, statt eines adressierten Speicherblockfelds.
Ein Terminal als zeichenorientiertes Gerät tauscht Byte aus, ohne eine festplattenähnliche Sektoradressierung anzubieten.
Zerrissener Schreibvorgang (Torn Write)
Ein zerrissener Schreibvorgang ist eine unterbrochene Aktualisierung, die einige unabhängig atomare Einheiten mit neuem Inhalt und andere mit ihrem vorherigen Inhalt hinterlässt.
Eine 8-KiB-Aktualisierung über zwei atomare 4-KiB-Einheiten kann nach einem Stromausfall zu einem zerrissenen Schreibvorgang werden.
Zonenaufzeichnung
Die Zonenaufzeichnung platziert mehr Sektoren auf längeren äußeren HDD-Spuren und erhöht so gegenüber kürzeren inneren Spuren die pro Umdrehung übertragenen Byte.
Die Zonenaufzeichnung erklärt, warum ein langer sequenzieller Lesezugriff langsamer werden kann, wenn er sich inneren Spuren nähert.
Zuordnungstabelle
Eine Zuordnungstabelle hält fest, an welcher physischen Flash-Stelle jede zugeordnete logische Einheit aktuell gespeichert ist. So können Aktualisierungen Daten transparent verschieben.
Die Zuordnungstabelle zeigt auf die neue Seite, nachdem eine Aktualisierung an anderer Stelle die alte Seite ungültig gemacht hat.
Zyklische Redundanzprüfung (CRC)
Eine zyklische Redundanzprüfung (CRC) speichert einen Rest aus einer Polynomdivision mit XOR und erkennt bestimmte Fehlerbündelmuster zuverlässig.
Eine Drei-Bit-zyklische Redundanzprüfung (CRC) nutzt einen Generator vom Grad drei und einen drei Bit langen Rest.
Zylinder
Ein Zylinder ist die Gesamtheit der HDD-Spuren an derselben radialen Position auf den Magnetscheibenoberflächen, die bei einer gemeinsamen Position des Kopfarms erreicht werden.
Der Wechsel der Oberfläche innerhalb eines Zylinders erfordert keine Bewegung des Arms zu einer anderen radialen Position.

Über diese Einheit

Von StudeliFehler melden

Erstelle deine eigenen Lernmaterialien

Mach aus deinen Notizen, Folien und Dokumenten Lernleitfäden, Übungsfragen, Karteikarten und 6 weitere Tools.

Jetzt starten