RAID: Unterschied zwischen den Versionen

Aus Foxwiki
Robertquies (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
K Textersetzung - „z.B.“ durch „z. B. “
 
(34 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=RAID=
'''R'''edundant '''A'''rray of '''I'''ndependent '''D'''isks
*Ein RAID ('''R'''edundant '''A'''rray of '''I'''ndependent '''D'''isks) dient dazu, mehrere physikalische Datenträger zu einem oder mehreren logischen Laufwerken zu vereinen und dadurch einen schnelleren Datenzugriff und/oder eine erhöhte Verfügbarkeit des Systems im Falle eines Datenträgerdefektes zu erreichen.
 
=Funktion=
*Ein RAID dient dazu, mehrere physikalische Datenträger zu einem oder mehreren logischen Laufwerken zu vereinen und dadurch einen schnelleren Datenzugriff und/oder eine erhöhte Verfügbarkeit des Systems im Falle eines Datenträgerdefektes zu erreichen.
*Von Software-RAID spricht man, wenn das Zusammenwirken der Datenträger komplett softwareseitig organisiert wird.
*Von Software-RAID spricht man, wenn das Zusammenwirken der Datenträger komplett softwareseitig organisiert wird.


*Im Allgemeinen macht es nur Sinn, Partitionen gleicher Größe zu verwenden, die auf unterschiedlichen Datenträger angelegt sind.
*Im Allgemeinen macht es nur Sinn, Partitionen gleicher Größe zu verwenden, die auf unterschiedlichen Datenträger angelegt sind.


==RAID und Backup==
=RAID und Backup=


*Ein RAID ersetzt keine Datensicherung!
*Ein RAID ersetzt keine Datensicherung!
Zeile 11: Zeile 13:
*Ein RAID schützt ausschließlich vor Datenverlust durch Plattendefekte.
*Ein RAID schützt ausschließlich vor Datenverlust durch Plattendefekte.


*Auch wenn es verlockend scheint, z.B. ein RAID 1 mit externer USB-Datenträger aufzusetzen, um eine automatische Sicherung zu erhalten, ist dies kein Backup.
*Auch wenn es verlockend scheint, z. B.  ein RAID 1 auf einem USB-Datenträger aufzusetzen, um eine automatische Sicherung zu erhalten, ist dies kein Backup.


*Das Entfernen der externen Datenträger führt immer dazu, dass sich das RAID im Fehlerzustand (degraded) befindet.  
*Das Entfernen der externen Datenträger führt immer dazu, dass sich das RAID im Fehlerzustand (degraded) befindet.  


*Bei Wiederanschluss muss die interne Datenträger jedesmal komplett neu mit der externen Platte synchronisiert werden.
*Bei Wiederanschluss muss der interne Datenträger jedesmal komplett neu mit der externen Platte synchronisiert werden.


*Ein Datenverlust, der durch Fehler des Betriebssystems, des Dateisystems, durch die verwendeten Programmen oder den Benutzer entsteht, wird sofort automatisch auf alle Laufwerke synchronisiert, so dass das vermeintliche Backup automatisch mit fehlerhaften Daten überschrieben wird.
*Ein Datenverlust, der durch Fehler des Betriebssystems, des Dateisystems, durch die verwendeten Programme oder den Benutzer entsteht, wird sofort automatisch auf alle Laufwerke synchronisiert, so dass das vermeintliche Backup automatisch mit fehlerhaften Daten überschrieben wird.


==IDE/SATA==
=IDE/SATA=


*Generell sollte man bei RAIDs moderne SATA-Datenträger verwenden, da der Datendurchsatz bei diesen zum Teil erheblich höher ist als bei älteren IDE-Platten.  
*Generell sollte man bei RAIDs moderne SATA-Datenträger verwenden, da der Datendurchsatz bei diesen zum Teil erheblich höher ist als bei älteren IDE-Platten.  
Zeile 30: Zeile 32:
  Achtung!
  Achtung!
  Nicht jeder SATA-Controller ist in der Lage, mit "Hotplug" auch richtig umzugehen.  
  Nicht jeder SATA-Controller ist in der Lage, mit "Hotplug" auch richtig umzugehen.  
  Man sollte auch darauf achten, dass man die richtige Datenträger angibt, um Datenverlust zu vermeiden.
  Man sollte auch darauf achten, dass man den richtigen Datenträger angibt, um Datenverlust zu vermeiden.


*Bei älteren IDE-ATA-Datenträger gilt: die verwendeten Datenträger sollten nicht am selben IDE-Kanal hängen, da im Fehlerfall einer Datenträger unter Umständen der komplette IDE-Kanal gestört wird und dadurch u.U. das RAID nicht mehr nutzbar ist.  
*Bei älteren IDE-ATA-Datenträgern gilt: die verwendeten Datenträger sollten nicht am selben IDE-Kanal hängen, da im Fehlerfall eines Datenträgers unter Umständen der komplette IDE-Kanal gestört wird und dadurch u.U. das RAID nicht mehr nutzbar ist.  


*Bei einem RAID 0 erhöht sich die Gesamtleistung, da paralleles Lesen/Schreiben auf verschiedenen IDE-Kanälen schneller geht als auf nur einem.
*Bei einem RAID 0 erhöht sich die Gesamtleistung, da paralleles Lesen/Schreiben auf verschiedenen IDE-Kanälen schneller geht als auf nur einem.


==SSD RAIDs==
=SSD RAIDs=


*Linux Software RAID verwendet bis Kernel 3.11 nur einen Thread für RAID5/RAID6 Berechnungen.
*Linux Software-RAID verwendet bis Kernel 3.11 nur einen Thread für RAID5/RAID6 Berechnungen.
**Das kann die Performance von SSD RAIDs limitieren.  
**Das kann die Performance von SSD RAIDs limitieren.  


Zeile 45: Zeile 47:
*Die RAID5 multithreading Unterstützung wurde im Linux Kernel mit 3.12 aufgenommen.
*Die RAID5 multithreading Unterstützung wurde im Linux Kernel mit 3.12 aufgenommen.


==Begriffe und Details==
=RAID-Level=
 
===RAID-Level===


*Eine Übersicht über die gebräuchlichen und unterstützten RAID-Level.  
*Eine Übersicht über die gebräuchlichen und unterstützten RAID-Level.  
Zeile 71: Zeile 71:
**Dabei werden vorab Partitionen bekannt gegeben, die beim Ausfall eines Laufwerks innerhalb des RAID-Verbundes durch das Reservelaufwerk automatisch ersetzt werden.
**Dabei werden vorab Partitionen bekannt gegeben, die beim Ausfall eines Laufwerks innerhalb des RAID-Verbundes durch das Reservelaufwerk automatisch ersetzt werden.


===RAID-Zustände===
=RAID-Zustände=


*Ein RAID kann sich in unterschiedlichen Zuständen befinden, die seinen Status zusammenfassen:
*Ein RAID kann sich in unterschiedlichen Zuständen befinden, die seinen Status zusammenfassen:
Zeile 83: Zeile 83:
| '''Degraded'''|| Es liegt ein Ausfall vor. Je nach RAID-Level kann dieser durch Austausch einer Datenträger mit einem anschließenden Rebuild behoben werden um das RAID wieder in den Clean-Zustand zu versetzen.
| '''Degraded'''|| Es liegt ein Ausfall vor. Je nach RAID-Level kann dieser durch Austausch einer Datenträger mit einem anschließenden Rebuild behoben werden um das RAID wieder in den Clean-Zustand zu versetzen.
|-
|-
| '''Resync'''|| Bei einem Resync werden je nach RAID-Level Sicherungsinformation, z.B. Paritäten, geprüft und ggf. neu erstellt. Ein neu angelegtes RAID befindet sich in der Regel in diesem Zustand. Auch während eines Resync sind die Daten auf dem RAID bereits vor einem Ausfall gesichert. Die volle Lese- und Schreibgeschwindigkeit kann jedoch erst nach Abschluss des Resync erreicht werden.
| '''Resync'''|| Bei einem Resync werden je nach RAID-Level Sicherungsinformation, z. B.  Paritäten, geprüft und ggf. neu erstellt. Ein neu angelegtes RAID befindet sich in der Regel in diesem Zustand. Auch während eines Resync sind die Daten auf dem RAID bereits vor einem Ausfall gesichert. Die volle Lese- und Schreibgeschwindigkeit kann jedoch erst nach Abschluss des Resync erreicht werden.
|-
|-
| '''Rebuild'''|| Bei einem Rebuild "erholt" sich das RAID von einem Ausfall. Die verlorenen Daten werden aus den Sicherungsinformationen wiederhergestellt und damit das Austauschlaufwerk gefüllt. Ein weiterer Ausfall eines Laufwerks während eines Rebuilds wird in der Regel zu Datenverlust führen.
| '''Rebuild'''|| Bei einem Rebuild "erholt" sich das RAID von einem Ausfall. Die verlorenen Daten werden aus den Sicherungsinformationen wiederhergestellt und damit das Austauschlaufwerk gefüllt. Ein weiterer Ausfall eines Laufwerks während eines Rebuilds wird in der Regel zu Datenverlust führen.
Zeile 90: Zeile 90:
*'''Resync''' und '''Rebuild''' können je nach Größe und Art des RAIDs mehrere Stunden bis Tage in Anspruch nehmen.
*'''Resync''' und '''Rebuild''' können je nach Größe und Art des RAIDs mehrere Stunden bis Tage in Anspruch nehmen.


===RAID Superblock===
= Links =
 
== Intern ==
*Linux Software RAID speichert alle notwendigen Informationen zu einem RAID Array in einem Superblock.
# [[Linux/Software-RAID]]
 
# [[Linux/Software-RAID:Vorbereitung]]
*Je nach Metadaten-Version liegt dieser an unterschiedlichen Stellen.
# [[Linux/Software-RAID:Anlegen]]
 
# [[Linux/Software-RAID:Wartung]]
'''Superblock Metadaten-Version 0.90'''
# [[Linux/Software-RAID:Fehlerbehebung]]
 
# [[Linux/Software-RAID:Aufgaben]]
*Der version-0.90 Superblock ist 4.096 Byte groß und liegt in einem 64 KiB aligned block am Ende eines Devices.
 
*Der Superblock beginnt ja nach Devicegröße frühestens 128 KiB vor dem Ende des Devices, bzw. spätestens 64 KiB vor dem Ende des Devices.
 
*Um die Adresse des Superblocks zu berechnen wird die Device-Größe auf ein vielfaches von 64 KiB abgerundet und dann 64 KiB vom Ergebnis abgezogen.
 
 
*Einschränkungen der Metadaten-Version 0.90:
**maximal 28 Devices in einem Array
**jedes Device kann maximal 2 TiB groß sein
**keine Unterstützung des Bad-Block-Managements
 
'''Superblock Metadaten-Version 1.*'''
 
*Die Position des Superblock hängt von der Version der Metadaten ab:
**Version 1.0: Der Superblock liegt am Ende des Devices.
**Version 1.1: Der Superblock liegt am Anfang des Devices.
**Version 1.2: Der Superblock liegt 4 KiB nach dem Beginn des Devices.
 
 
*weiterführende Informationen zum Superblock findet man unter:
**[https://raid.wiki.kernel.org/index.php/RAID_superblock_formats https://raid.wiki.kernel.org/index.php/RAID_superblock_formats]
 
===Alignment===
 
*Datenträger, RAID-Verbunde und Dateisysteme fassen Daten jeweils für sich in Blöcke zusammen, bevor sie gespeichert werden.


*Diese Blöcke haben im Allgemeinen alle unterschiedliche Größen.
== Weblinks ==
*Ein Beispiel für das Lesen einer sehr kleinen Datei:
# https://de.wikipedia.org/wiki/RAID
**Das Dateisystem möchte einen einzelnen 4 KiB großen Block lesen
# https://www.storage-insider.de/was-ist-raid-alles-ueber-level-1-bis-5-und-mehr-a-517806/
***Das RAID muss dafür den oder die 512 KiB großen RAID-Blöcke (bei RAIDS oft Chunks genannt) laden, in denen der Dateisystem-Block abgelegt ist.
# https://www.globalsystem.ch/ratgeber/raid-systeme-erklaert/
***Die Datenträger müssen dafür wiederum alle 512 Byte großen Blöcke (hier meist Sektoren genannt) laden, die am entsprechenden RAID-Block beteiligt sind.
# https://www.tecchannel.de/a/raid-im-ueberblick-grundlagen-raid-0-bis-7,401665
***Im Idealfall muss also das RAID nur einen 512 KiB Block laden und die Datenträger dafür 1024 Blöcke (512 KiB = 512 B * 1024).
***Dafür müssen diese geschachtelten Blöcke jedoch aufeinander ausgerichtet sein.
***Im schlechtesten Fall könnte ein Dateisystem-Block kurz vor dem Ende eines RAID-Blocks liegen, so dass für einen Dateisystem-Block zwei RAID-Blöcke geladen werden müssen.
***Analog könnte ein RAID-Block auch 1025 anstatt 1024 Datenträger-Blöcke belegen, falls er mitten in einem Datenträger-Block anfängt.
***Das Lesen eines Dateisystem-Blocks würde damit im schlechtesten Fall das Laden von 2050 Datenträger-Blöcken erfordern.
***Dies führt zu dramatischen Performance-Einbußen schon beim Lesen.  
***Da beim Schreiben oft auch zuerst die vorherigen Daten gelesen werden müssen, sind die Einbußen beim Schreiben noch stärker.
***Daher sollte bei der Verwendung von Blockgeräten immer auf das Alignment, also die Ausrichtung der verschiedenen Block-Arten aufeinander, geachtet werden:
****Der erste Dateisystem-Block eines RAID-Blocks sollte genau am Anfang des RAID-Blocks beginnen.
****Ein RAID-Block sollte genau am Anfang eines Datenträger-Blocks beginnen.
****Die Größe der RAID-Blöcke sollte ein ganzzahliges Vielfaches der Dateisystem-Blöcke sein.
****Die Größe der RAID-Blöcke sollte ein ganzzahliges Vielfaches der Datenträger-Blöcke sein.
****Partitionen sollten auf Sektorgrenzen der Datenträger ausgerichtet sein, wie im Abschnitt [[Linux:Software-RAID#Partitionierung|Partitionierung]] beschrieben.
****Dem Dateisystem sollten Informationen zum unterliegenden RAID bereitgestellt werden, um seine Blöcke passend auszurichten.
****Falls noch weitere Schichten zwischen Dateisystem und Datenträger verwendet werden, z.B. bei Verschlüsselung, muss auch bei diesen auf das Alignment geachtet werden.


[[Category:Linux:Storage]]
[[Kategorie:RAID]]
[[Category:Hardware]]

Aktuelle Version vom 19. Mai 2023, 15:24 Uhr

Redundant Array of Independent Disks

Funktion

  • Ein RAID dient dazu, mehrere physikalische Datenträger zu einem oder mehreren logischen Laufwerken zu vereinen und dadurch einen schnelleren Datenzugriff und/oder eine erhöhte Verfügbarkeit des Systems im Falle eines Datenträgerdefektes zu erreichen.
  • Von Software-RAID spricht man, wenn das Zusammenwirken der Datenträger komplett softwareseitig organisiert wird.
  • Im Allgemeinen macht es nur Sinn, Partitionen gleicher Größe zu verwenden, die auf unterschiedlichen Datenträger angelegt sind.

RAID und Backup

  • Ein RAID ersetzt keine Datensicherung!
  • Ein RAID schützt ausschließlich vor Datenverlust durch Plattendefekte.
  • Auch wenn es verlockend scheint, z. B.  ein RAID 1 auf einem USB-Datenträger aufzusetzen, um eine automatische Sicherung zu erhalten, ist dies kein Backup.
  • Das Entfernen der externen Datenträger führt immer dazu, dass sich das RAID im Fehlerzustand (degraded) befindet.
  • Bei Wiederanschluss muss der interne Datenträger jedesmal komplett neu mit der externen Platte synchronisiert werden.
  • Ein Datenverlust, der durch Fehler des Betriebssystems, des Dateisystems, durch die verwendeten Programme oder den Benutzer entsteht, wird sofort automatisch auf alle Laufwerke synchronisiert, so dass das vermeintliche Backup automatisch mit fehlerhaften Daten überschrieben wird.

IDE/SATA

  • Generell sollte man bei RAIDs moderne SATA-Datenträger verwenden, da der Datendurchsatz bei diesen zum Teil erheblich höher ist als bei älteren IDE-Platten.
  • Zudem sind SATA-Platten prinzipiell "hotplugable".
    • Das heißt, sie sind im laufenden Betrieb eines RAIDs an- und abschaltbar und damit auch austauschbar.
  • Allerdings sollte man genau wissen, was man tut, bevor man sich an solcherlei Aktionen heranwagt.
Achtung!
Nicht jeder SATA-Controller ist in der Lage, mit "Hotplug" auch richtig umzugehen. 
Man sollte auch darauf achten, dass man den richtigen Datenträger angibt, um Datenverlust zu vermeiden.
  • Bei älteren IDE-ATA-Datenträgern gilt: die verwendeten Datenträger sollten nicht am selben IDE-Kanal hängen, da im Fehlerfall eines Datenträgers unter Umständen der komplette IDE-Kanal gestört wird und dadurch u.U. das RAID nicht mehr nutzbar ist.
  • Bei einem RAID 0 erhöht sich die Gesamtleistung, da paralleles Lesen/Schreiben auf verschiedenen IDE-Kanälen schneller geht als auf nur einem.

SSD RAIDs

  • Linux Software-RAID verwendet bis Kernel 3.11 nur einen Thread für RAID5/RAID6 Berechnungen.
    • Das kann die Performance von SSD RAIDs limitieren.
  • Im Januar 2013 gab es erste Patches von Fusion-io, diese waren zu diesem Zeitpunkt aber noch nicht reviewed.
  • Die RAID5 multithreading Unterstützung wurde im Linux Kernel mit 3.12 aufgenommen.

RAID-Level

  • Eine Übersicht über die gebräuchlichen und unterstützten RAID-Level.
  • Bei der Angabe des Speicherplatzes im RAID bezeichnet k die Kapazität je Partition und n die Anzahl der verwendeten Partitionen.
Auswahl von RAID-Typen im Überblick
Typ mind. Partitionen Speicherplatz Vorteil Bemerkung
0 2 k*n Geschwindigkeit (Lesen & Schreiben), Plattenplatz Keine Partition darf ausfallen - Reißverschlussverfahren
1 2 k Ausfallsicherheit, Geschwindigkeit (Lesen) Alle bis auf eine Partition dürfen ausfallen - Spiegelung
5 3 k*(n-1) Plattenplatz, Ausfallsicherheit, Geschwindigkeit (Lesen) Eine Partition darf ausfallen - Striping & Parität
6 4 k*(n-2) Plattenplatz, bessere Ausfallsicherheit als RAID 5, Geschwindigkeit (Lesen) Zwei Partitionen dürfen ausfallen - Striping & doppelte Parität
10 4 Sicherheit und gesteigerte Schreib-/Lesegeschwindigkeit. Kombination aus RAID 0 über mehrere RAID 1
  • RAID unterstützt auch unbenutzte Reservelaufwerke, sog. Hotspares.
    • Dabei werden vorab Partitionen bekannt gegeben, die beim Ausfall eines Laufwerks innerhalb des RAID-Verbundes durch das Reservelaufwerk automatisch ersetzt werden.

RAID-Zustände

  • Ein RAID kann sich in unterschiedlichen Zuständen befinden, die seinen Status zusammenfassen:
RAID-Zustände im Überblick
Zustand Beschreibung
Clean Bezeichnet den Normalzustand. Es liegt kein Fehler vor und alle Prüf- und Initialisierungsaufgaben sind abgeschlossen.
Degraded Es liegt ein Ausfall vor. Je nach RAID-Level kann dieser durch Austausch einer Datenträger mit einem anschließenden Rebuild behoben werden um das RAID wieder in den Clean-Zustand zu versetzen.
Resync Bei einem Resync werden je nach RAID-Level Sicherungsinformation, z. B.  Paritäten, geprüft und ggf. neu erstellt. Ein neu angelegtes RAID befindet sich in der Regel in diesem Zustand. Auch während eines Resync sind die Daten auf dem RAID bereits vor einem Ausfall gesichert. Die volle Lese- und Schreibgeschwindigkeit kann jedoch erst nach Abschluss des Resync erreicht werden.
Rebuild Bei einem Rebuild "erholt" sich das RAID von einem Ausfall. Die verlorenen Daten werden aus den Sicherungsinformationen wiederhergestellt und damit das Austauschlaufwerk gefüllt. Ein weiterer Ausfall eines Laufwerks während eines Rebuilds wird in der Regel zu Datenverlust führen.
  • Resync und Rebuild können je nach Größe und Art des RAIDs mehrere Stunden bis Tage in Anspruch nehmen.

Links

Intern

  1. Linux/Software-RAID
  2. Linux/Software-RAID:Vorbereitung
  3. Linux/Software-RAID:Anlegen
  4. Linux/Software-RAID:Wartung
  5. Linux/Software-RAID:Fehlerbehebung
  6. Linux/Software-RAID:Aufgaben

Weblinks

  1. https://de.wikipedia.org/wiki/RAID
  2. https://www.storage-insider.de/was-ist-raid-alles-ueber-level-1-bis-5-und-mehr-a-517806/
  3. https://www.globalsystem.ch/ratgeber/raid-systeme-erklaert/
  4. https://www.tecchannel.de/a/raid-im-ueberblick-grundlagen-raid-0-bis-7,401665