Linux/Software-RAID: Unterschied zwischen den Versionen

Aus Foxwiki
Robertquies (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
K Textersetzung - „bzw.  “ durch „bzw. “
 
(96 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Software-RAID=
Ein Software-'''R'''edundant '''A'''rray of '''I'''ndependent '''D'''isks dient dazu, mehrere physikalische Festplatten zu einem oder mehreren logischen Laufwerken zu vereinen.
==Wartung==


*Einige der folgenden Punkte kann man man auch mit der GUI der Laufwerksverwaltung palimpsest aus dem Paket gnome-disk-utility machen.  
=RAID allgemein=
*Schnellerer Datenzugriff und/oder erhöhte Verfügbarkeit des Systems im Falle eines Festplattendefektes.
*Es werden nur Partitionen gleicher Größe verwendet, da sonst Speicherkapazitäten ungenutzt bleiben.
*Hardware-RAID und Software-RAID machen beide das Gleiche.
*Von Software-RAID spricht man, wenn das Zusammenwirken der Festplatten komplett softwareseitig organisiert wird.


*Man geht dort in der linken Spalte auf die gewünschte RAID-Anordnung und kann dann in der rechten Spalte im Punkt "Komponenten bearbeiten" die gewünschten Aktionen veranlassen.
=Vergleich - Software-RAID/Hardware-RAID=


===RAID überwachen===


*Eine Kurzzusammenfassung für alle RAIDs erhält man mittels
==Pro Software-RAID==


# cat /proc/mdstat
*Software-RAIDs gibt es als Open-Source-Software.
*Bei Defekt des Betriebssystems, kann das RAID oft noch mit einer neuen Installation des gleichen Betriebssystems wieder eingelesen werden.
*Bei Software-RAIDs auf BIOS-Ebene (Host-RAID-Systemen) ist das nicht immer so.


*Eine Beispielausgabe eines Systems mit mehreren RAID-Verbünden ohne Ausfälle:
==Contra Software-RAID==
*Benutzt den Prozessor und verbraucht Ressourcen.
*Bei einem RAID, das auf dem Betriebssystem (OS) eingerichtet wurde, profitiert das OS selber nicht vom RAID.


Personalities : [raid6] [raid5] [raid4] [raid1] [linear] [multipath] [raid0] [raid10]
==Pro Hardware-RAID==
md1 : active raid1 sde5[0] sdf5[1]
*Entlastung der Host-CPU.Alle Berechnungen werden vom RAID-Controller gemacht.
      195114936 blocks super 1.2 [2/2] [UU]
*Steht schon beim Booten zur Verfügung.
**Das OS profitiert vom RAID.
*Unterstützt eine Vielzahl von Betriebssystemen.


md0 : active raid1 sdf1[1] sde1[0]
==Contra Hardware-RAID==
      242676 blocks super 1.2 [2/2] [UU]
*Bei RAID-Controller-Defekt - kann kein baugleiches Modell aufgetrieben werden, wird das RAID zum Datengrab.
 
*Zusätzliche Kosten für einen RAID-Controller (kein Fake-RAID).
md2 : active raid6 sdg1[4] sdh1[5] sdi1[6] sdj1[7] sda1[0] sdd1[3] sdb1[1] sdc1[2]
      2930304000 blocks super 1.2 level 6, 512k chunk, algorithm 2 [8/8] [UUUUUUUU]
 
*Das Beispiel zeigt zwei RAID 1 (md0 und md1) mit je zwei Partitionen und ein RAID 6 (md2) mit 8 Partitionen.  
 
*In der jeweils zweiten Zeile wird am Ende in eckigen Klammern der Zustand der einzelnen Partitionen angezeigt, wobei ein U bedeutet, dass das jeweilige Gerät in Ordnung (up) ist.
   
   
*Ausführliche Informationen zu einem RAID-Device liefert:
  '''Fake-RAIDs''' können nur eine begrenzte Anzahl von RAID-Leveln, häufig nur RAID-Level 0 und 1.  
 
  Um die Controller/Karten so billig wie möglich zu halten, überlassen die Hersteller die RAID-Logik der CPU.
  # mdadm --detail /dev/md0
  => Benutzt also den Prozessor und verbraucht Ressourcen.
 
===Hotspare hinzufügen===
 
*Ein RAID kann Ersatzplatten vorhalten und diese beim Ausfall einer anderen Festplatte automatisch als Ersatz nutzen.
 
*Solche Platten werden als Hotspares, oft auch einfach nur Spare, bezeichnet.
 
*Um eine Platte als Spare zu nutzen, muss diese zunächst entsprechend partitioniert werden.
 
*Danach kann diese zum Verbund hinzugefügt werden, hier am Beispiel des eingänglichen beschriebenen RAID 5 und einer neuen Partition /dev/sdi1:
 
# mdadm /dev/md0 --add /dev/sdi1
 
*Falls nun eine Partition ausfallen sollte, startet automatisch ein Rebuild, die Spare-Partition wird dabei aktiviert und als Ersatz für die ausgefallene Partition genutzt.
 
===Festplattenausfall===
 
====Details ermitteln====
 
*Dieses Beispiel zeigt eine ausgefallene Platte in einem RAID 6.
 
Personalities : [raid6] [raid5] [raid4] [raid1] [linear] [multipath] [raid0] [raid10]
md2 : active raid6 sdj1[7] sdi1[6] sdh1[5] sdg1[4] sdd1[3] sda1[0] sdb1[1] sdc1[2]
      3418688000 blocks super 1.2 level 6, 512k chunk, algorithm 2 [9/8] [UUUUUUUU_]
 
unused devices: <none>
 
*In diesem Fall wurde das fehlerhafte Gerät bereits automatisch entfernt.
 
*Genauere Details, u.a. den Namen des defekten Geräts kann mit mdadm ermittelt werden:
 
# mdadm --detail /dev/md2
 
====Festplatte wechseln====
 
Achtung!
Bei einem RAID 0 äußert sich der Ausfall einer Platte im Totalausfall des gesamten RAID- Verbunds.
Das RAID 0 kann daher nicht mit den folgenden Anweisungen repariert werden, sondern muss neu aufgesetzt werden und die hoffentlich vorhandene Datensicherung eingespielt werden.
 
*Ist das defekte Gerät (hier im Beispiel /dev/sdk1) ermittelt, kann die entsprechende Festplatte ausgetauscht werden:
 
*Falls der Kernel das Gerät noch nicht aus dem Verbund entfernt hat (d.h. es wird beim Befehl mdadm --detail noch aufgeführt), muss es zunächst aus dem Verbund entfernt werden:
 
# mdadm /dev/md2 --remove /dev/sdk1
 
*Nun kann die entsprechende Platte gewechselt werden.
 
*Ist eine entsprechende Austauschplatte eingebaut, muss diese zunächst partitioniert werden.
 
*Die neue Partition muss mindestens die gleiche Anzahl an Sektoren aufweisen, wie die bereits genutzten Partitionen.
 
*Von einer bestehenden Platte erhält man die Sektorenzahl der Partitionen (hier am Beispiel von /dev/sda) mittels:
 
# parted /dev/sda u s print 
 
 
*Ist die neue Platte entsprechend partitioniert, wird die neue Partition zum RAID-Verbund hinzugefügt (hier am Beispielaustausch von /dev/sdk1 in /dev/md2):
 
# mdadm /dev/md2 --add /dev/sdk1
 
 
 
*Im Hintergrund beginnt nun ein Rebuild, aus den noch vorhandenen Partitionen wird also der Inhalt für die neue Partition berechnet und geschrieben.
 
*Je nach RAID-Level und Größe dauert ein Rebuild mehrere Stunden bis Tage.
 
*Das System darf währenddessen neu gestartet oder heruntergefahren werden.
 
*Ein Systemabsturz kann jedoch zu Datenverlust führen. Manchmal lässt sich der Vorgang beschleunigen.
 
 
  Hinweis:
Wurden Partitionen einer Platte von verschiedenen RAIDs genutzt, dann kann es vorkommen, dass eine verwendete Festplatte teilweise defekt ist und sich z.B. die Partition von md0 im Status [U_] befindet, während alle anderen im Status [UU] sind.
 
*In diesem Fall müssen diese mit dem Befehl:
 
 
# mdadm /dev/mdX --fail /dev/sdXY
 
 
alle einzeln in den Modus [U_] versetzt werden.
 
===Controller-Fehler===
 
In Einzelfällen kann es vorkommen, dass aufgrund eines defekten Netzteils (oder Controller) ein RAID nicht mehr funktionsfähig ist.
 
In so einem Fall liegt oft kein Schaden an den Festplatten vor und das Problem kann mit der folgenden Vorgehensweise behoben werden:
 
====RAID stoppen:====
 
# mdadm --stop /dev/md0
 
*Das RAID muss manuell wieder zusammengefügt werden, dabei ist es wichtig, die letzte funktionierende Konfiguration zu verwenden.
 
*Bei dem o.g. Beispiel, ein RAID 5 mit 4 Partitionen, bei dem zwei Festplatte wegen Controller-Defekt ausgestiegen sind, müssen die ersten zwei Partitionen verwendet werden, da sie bis zum Ausfall noch zusammen aktiv waren.
 
*Nun reaktiviert man das Arrays mit:
 
# mdadm --assemble /dev/md0 /dev/sde1 /dev/sdf1 --force
 
*Die weiteren Partitionen können nun mit:
 
# mdadm --re-add /dev/md0 /dev/sdg1 /dev/sdh1
 
*wieder in den Verbund aufgenommen werden.
 
===RAID erweitern===
 
*Falls zum Beispiel der Speicherplatz eines RAIDs nicht mehr ausreicht, kann man es durch weitere Festplatten bzw. Partitionen erweitern.
 
*Dies gilt allerdings nur für ein RAID 1, 5 oder 6. Das RAID darf während des Vorgangs eingebunden sein.
 
*Die neue Partition muss zunächst wie oben beschrieben als Hotspare hinzugefügt werden.
 
*Danach kann das RAID um das neue Laufwerk erweitert werden:
**Das RAID neu aufbauen, um somit den neuen Speicherplatz nutzen zu können:
 
# mdadm --grow --raid-devices=5 /dev/md0 --backup-file=/tmp/md0.bak
 
*Die Option raid-devices gibt dabei die Anzahl der Geräte an, aus denen das RAID nach der Erweiterung bestehen soll.
 
*In der mittels backup-file angegebenen Datei werden kritische Bereiche gesichert (typischerweise einige wenige MiB).
 
*Falls das System während der Erweiterung abstürzt, kann die Erweiterung später mittels...
 
# mdadm /dev/md0 --continue --backup-file=/tmp/md0.bak
 
*...fortgesetzt werden.
 
Die Sicherungsdatei darf nicht auf dem zu erweiternden RAID liegen!
 
*Die Verwendung von backup-file ist zwar nicht zwingend notwendig, wird aber dringend empfohlen.
 
*Das Dateisystem muss noch erweitert werden, damit der neu entstandene Speicherplatz genutzt werden kann.
 
*Das Dateisystem sollte dabei, wenn möglich, nicht eingehangen sein.
 
*Bei ext-Dateisystemen muss außerdem vorher eine Überprüfung durchgeführt werden.
 
*Am Beispiel von ext4:
 
    # umount /dev/md0          # Das Dateisystem aushängen
    # fsck.ext4 -f /dev/md0    # Die Prüfung erzwingen, selbst wenn vor Kurzem geprüft wurde
    # resize2fs /dev/md0        # Das Dateisystem auf Maximalgröße erweitern
    # mount /dev/md0            # Das Dateisystem wieder einhängen
 
*Die mdadm.conf sollte noch auf den aktuellen Stand gebracht werden (evtl. alte Einträge löschen).
 
*Der Status lässt sich wieder jederzeit einsehen.
 
==Problembehebung==
 
===Bootprobleme===
 
GRUB 2: unknown Filesystem
 
*Falls das System nicht bootet, nachdem man es auf ein RAID 1 kopiert, die /etc/fstab angepasst, die grub.cfg und die mdadm.conf korrekt erscheinen sowie das initramfs aktualisiert wurde, kann es helfen, GRUB 2 erneut zu installieren.
*Dabei muss auf die Art der Partitionstabelle geachtet werden.
*Die obige Anleitung nutzt GPT-Partitionstabellen.
 
===RAID startet nicht===
 
mdadm: Cannot open /dev/sdXY: Device or resource busy
 
*Falls beim Erstellen eines RAIDs diese Meldung erscheint und mit den Partitionen bereits einmal ein RAID erstellt wurde, muss zunächst der alte Verbund aufgelöst werden.
 
===Fehler beim Update des Kernels nach Festplattentausch===
 
Grub-Konfigurationsdatei wird generiert …
grub-probe: Warnung: Physischer Datenträger »(null)« konnte nicht gefunden werden.
Einige Module könnten im Core-Abbild fehlen..
/usr/sbin/grub-probe: Warnung: Physischer Datenträger »(null)« konnte nicht gefunden werden. Einige Module könnten im Core-Abbild fehlen..
 
*Treten nach dem Tausch einer Festplatte diese Fehler auf muss die Device Map von Grub neu geschrieben werden.
*Dies geschieht mit:
 
# grub-mkdevicemap
 
*Geht alles glatt, darf keine Ausgabe erscheinen. Anschließend noch einmal Grub aktualisieren:
 
# update-grub
 
*Nun sollte der Fehler behoben sein und die Grubkonfiguration sich ohne Fehler aktualisieren.
 
==Komplexe Aufgaben==
 
*Dieser Abschnitt fasst komplexere Szenarien und Methoden zusammen, die im normalen Betrieb nicht auftreten, aber für Nutzer mit speziellen Anforderungen nützlich sein können.
 
===Resync und Rebuild beschleunigen===
 
*Wie eingangs erläutert ermöglicht ein RAID unterbrechungsfreien Zugriff auf die gespeicherten Daten auch während eines Ausfalls.
 
*Daten können also auch während eines '''Resyncs''' oder '''Rebuilds''' gelesen und geschrieben werden, wenn auch mit verringerter Geschwindigkeit.
 
*Lese- und Schreibzugriffe wirken sich umgekehrt wiederum auf die Geschwindigkeit von Resnyc- und Rebuild-Vorgängen aus.
 
*Die Balance zwischen Lese-/Schreib-Performance und Resync-/Rebuild-Geschwindigkeit kann über zwei (virtuelle) Dateien im proc-System gesteuert werden:
 
{|class="wikitable"
|+
| Pfad|| Standardwert (in KiB/s)|| Bedeutung
|-
| /proc/sys/dev/raid/speed_limit_min|| 1000|| Das System wird ggf. Lese- und Schreibzugriffen verlangsamen, falls die Resync-/Rebuild-Geschwindigkeit unter diesen Wert zu fallen droht.
|-
| /proc/sys/dev/raid/speed_limit_max|| 200000|| Das System wird Rebuild und Resync höchstens mit dieser Geschwindigkeit durchführen und eventuellen Überschuss für Lese-/Schreib-Zugriffe frei halten.
|}
*Da der Standard-Maximalwert von knapp 200 MiB/s die Leistung normaler Festplatten (mit Ausnahme von SSDs) übersteigt, wird das System effektiv immer versuchen, '''Resync''' und '''Rebuild''' so schnell wie möglich zu beenden, falls keine Lese- oder Schreibzugriffe stattfinden.
 
*Falls sich Zugriffe nicht vermeiden lassen (zum Beispiel, wenn das root-Dateisystem auf dem RAID liegt) und '''Rebuild/Resync''' trotzdem Vorrang haben sollen, kann die Mindestgeschwindigkeit temporär auf einen praktisch nicht erreichbaren Wert angehoben werden:
 
# su -c "echo 200000 > /proc/sys/dev/raid/speed_limit_min"
 
*Gerade im Fall des root-Dateisystems kann die damit einhergehende verringerte Lese- und Schreibgeschwindigkeit jedoch zu einem instabilem, effektiv nicht mehr nutzbaren System führen.
 
*Änderung an den Standardwerten sind daher mit Vorsicht zu genießen.
 
*Bei einem Neustart werden automatisch die Standardwerte wiederhergestellt.
 
*Um den Wert per Hand zurückzusetzen:
 
# su -c "echo 1000 > /proc/sys/dev/raid/speed_limit_min"
 
*In Einzelfällen kann das Aushängen des Dateisystems (falls möglich) den Vorgang beschleunigen.
 
*Im Regelfall wird dies jedoch keinen Vorteil bringen.
 
*In jedem Fall widerspricht dies natürlich dem Grundgedanken eines RAIDs, die Daten in jedem Fall verfügbar zu halten:
 
# umount /dev/md0
 
*Generell sollte man von diesen Möglichkeiten keine Wunder erwarten.
 
*'''Resync''' und '''Rebuild''' erfordern im Allgemeinen das komplette Lesen und Neubeschreiben aller beteiligten Laufwerke und können damit maximal so schnell durchgeführt werden, wie es das langsamste, am RAID beteiligte, Laufwerk erlaubt.
 
*Zeiten im Bereich von mehreren Tagen sind bei entsprechender Größe völlig normal.
 
*Wenn man möchte, kann man während der Vorgänge mit watch den Fortschritt kontrollieren:
 
# watch cat /proc/mdstat
 
*Die Anzeige kann mit Strg + C beendet werden.
 
===Wechsel des Betriebssystems===
 
*Für den Fall, dass man das Betriebssystem neu aufsetzen muss oder ein zweites Betriebssystem auf dem Rechner installieren will, kann man das Software-RAID weiter verwenden – sofern das Betriebssystem nicht direkt auf dem Software-RAID angelegt ist.
 
*Dazu muss auf dem neuen System das Paket...
 
mdadm
 
Paketliste zum Kopieren:
 
# apt install mdadm
 
Oder mit apturl installieren, Link:
 
apt://mdadm
 
*...installiert werden.
 
*Spätestens bei einem Neustart sollten bestehenden Arrays automatisch erkannt und gestartet werden.
 
*Falls dies nicht funktioniert, weil z.B. Arrays mit alten Superblock-Versionen vorhanden sind, kann man dies auch per Hand aktivieren:
 
Achtung!
Auf keinen Fall darf man hier die Optionen "--create" verwenden, da sonst die Lesbarkeit auf den beteiligten Partitionen zerstört wird.
 
*Das RAID nutzbar machen:
**RAID aus den gefundenen Superblöcken neu assemblieren:
 
# mdadm --assemble --scan
 
**Hat man mehrere Software-RAIDs und möchte ein bestimmtes RAID zusammenführen, kann man dies durch die Angabe der UUID des entsprechenden RAIDs tun:
 
# mdadm --assemble --scan --uuid=6c926c35:380d7ab2:3603cf0e:ecfa67b9
 
**Durch die Angabe der einzelnen Partitionen:
 
# mdadm --assemble /dev/md0 /dev/sde1 /dev/sdf1 /dev/sdg1
 
**Soll von dem neuen RAID-Verbund gebootet werden (Root-Dateisystem), dann muss noch der Bootloader installiert und das initramfs aktualisiert werden.
 
===Live System===
 
*Um auf einen RAID-Verbund mittels einer Live-CD bzw. eines Live-USB zuzugreifen, muss das Programmpaket mdadm mit...
 
# apt install  --no-install-recommends mdadm
 
*...installiert werden.
 
*Die Option --no-install-recommends verhindert dabei die Installation des Mail-Server Postfix.
 
*Anschließend werden mit:
 
# mdadm --assemble --scan
 
*alle gefundenen RAID-Verbunde aktiviert.
 
*Mit dem Befehl:
 
# cat /proc/mdstat
 
*kann man dann wieder die gefundenen RAID-Verbunde anzeigen.
 
*Nun wird das RAID noch mit:
 
# mkdir /media/raid
# mount /dev/md0 /media/raid
 
*in den Verzeichnisbaum integriert.
 
*Jetzt kann man die Daten im Verzeichnis /media/raid lesen (bei Bedarf auch verändern), sowie auf eine externe Festplatte oder in ein Netzwerkverzeichnis kopieren.
 
*Wenn man auf defekte/fehlende Festplatten zugreifen muss, dann schlägt ein --assemble --scan fehl und die Partitionen müssen einzeln assemblieren werden.
 
*Dazu wird z.B. sda1 als Quelle angegeben (bei RAID 0 nicht möglich):
 
  # mdadm --assemble --run /dev/md0 /dev/sda1
 
*Dabei bewirkt das --run, dass der Verbund aktiviert wird.
 
*Nach dem Einhängen in den Verzeichnisbaum sollte man auf die Daten zugreifen können.
 
*Weitere Möglichkeiten, z.B. bei der Reparatur des RAID, bieten die Root-Directory-, die Chroot- oder die Setup-Methode.
 
===Kombinierte RAIDs===
 
*Wem die oben genannten Möglichkeiten nicht ausreichen, kann auch nach eigenen Anforderungen verschiedenen RAID-Arten kombinieren.
 
====RAID51====
*So ist es zum Beispiel möglich, zwei RAID 5 zu spiegeln, also als RAID 1 zu betreiben:======
**Aus sde1, sdf1 und sdg1 wird ein RAID 5 erstellt
**Aus sdh1, sdj1 und sdk1 wird ebenfalls ein RAID 5 erstellt
**Aus den beiden RAID 5 wird dann ein RAID 1 erstellt:
 
# mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sde1 /dev/sdf1 /def/sdg1
# mdadm --create --verbose /dev/md1 --level=5 --raid-devices=3 /dev/sdh1 /dev/sdj1 /dev/sdk1
# mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/md0 /dev/md1 
 
*Ein solcher Verbund würde als RAID 51 bezeichnet werden, also ein RAID 1 über mehrere RAID 5.
 
*Im Allgemeinen sind solche exotischen Kombinationen zwar selten sinnvoll (je komplexer, desto fehleranfälliger sind Wartung und Reparatur), aber prinzipiell sind beliebige Kombinationen möglich.
 
====RAID10====
 
*Eine sinnvolle Kombination, ein RAID 0 über mehrere RAID 1, also ein RAID 10, wird direkt von mdadm als RAID-Level unterstützt und muss nicht wie hier beschrieben per Hand angelegt werden.
 
*Alternativ verwendet man auch gerne mehrere RAIDs in Zusammenarbeit mit LVM, da dieses einen sehr flexiblen Umgang mit RAID-Verbünden ermöglicht.
 
*Zudem sind dadurch auch sehr große Dateisysteme mit etlichen Terabytes und sogar Petabytes realisierbar.
 
===RAID auflösen===
 
*Um den Verbund eines RAID aufzulösen, d.h. die Ressourcen wieder freizugeben, geht man wie folgt vor:
 
*Stoppen des RAID-Verbundes:
 
# umount /dev/md0
# mdadm --stop /dev/md0
 
*In der /etc/fstab die aufgelösten RAIDs entfernen.
 
*Mit einem Editor in der mdadm.conf die Array-Angaben löschen.
 
*Den Superblock der entfernten Partitionen löschen, hier am Beispiel von sde1 und sdf1:
 
# mdadm --zero-superblock /dev/sde1 /dev/sdf1
 
*Die Partitions-ID wieder auf normale Linux-ID ändern (bei MBR) beziehungsweise das RAID-Flag der Partition ausschalten (bei GPT).
 
*Auf die vorhandenen Daten kann anschließend nicht mehr zugegriffen werden.
 
*Die Partitionen auf den Festplatten sind aber immernoch vorhanden, solange diese nicht überschrieben werden.
 
===Bootloader===
 
*Betreibt man einen RAID-Verbund als Systemlaufwerk, ist es praktisch, wenn das System auch noch nach Ausfall einer Festplatte hochfahren kann.
 
*Das wird z.B. bei ferngewarteten Rechnern benötigt, auf die man keinen direkten Zugriff hat.
 
*Da sich der Bootloader GRUB 2 in der Standardkonfiguration nur auf einem der Laufwerke installiert, muss man etwas nachhelfen.
 
*Dazu installiert man den Bootloader auf allen dem RAID-Verbund angehörenden Laufwerken.
 
*'''MPT''': Installation des Bootloaders in alle MBR aller beteiligten Festplatten (grub-install /dev/sdX), wobei die neu eingerichteten Festplatten anzugegeben sind. Am schnellsten geht es mit dem Befehl:
 
# dpkg-reconfigure grub-pc
 
*und der anschließenden Auswahl der gewünschten Festplatten.
 
*'''GPT''': Der Bootloader muss in die entsprechenden Boot-Partitionen installiert werden. Bei z.B. einer Installation mit GPT & BIOS bricht die Installation von GRUB 2 sonst ab und weist mit einer Fehlermeldung auf die fehlende Partition hin.
 
grub-installer: /usr/sbin/grub-setup: warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!
 
*Damit die Boot-Partitionen durch die initrd auch einwandfrei gemountet werden, sollte nach Änderung die mdadm.conf und initrd aktualisiert werden.
 
===USB und RAID===
 
*'''RAID 0 (stripping)''' ist denkbar ungeeignet für ein USB-RAID, da bei diesem das Entfernen einer Platte direkt zum Defekt des RAID-Verbunds führt.
 
*Mit '''RAID 5 und 6''' kann es kritisch werden, es sollte aber funktionieren, auch wenn davon stark abzuraten ist.
 
*'''RAID 1 (mirror)''' mit mehreren Partitionen auf verschiedenen USB-Festplatten ist prinzipiell kein Problem, auch wenn davon im Allgemeinen abzuraten ist (siehe RAID und Backup).
 
*Wer trotzdem sicher ist, dass in Spezialfällen ein RAID mit USB-Geräten sinnvoll ist, sollte noch folgendes beachten:
 
*Bei USB-Festplatten muss man unterbinden, dass ein Benutzer versucht, diese einzuhängen bzw. dass das System dies am Anfang nicht selbst probiert. Da alle am RAID beteiligten Partitionen die gleiche UUID haben sollten, kann man die /etc/fstab auf diese abstellen und um die Parameter nouser und noauto erweitern.
 
===Raid 1 zu Raid 0 konvertieren===
 
*Ausgangssituation:
 
/dev/md0 ist ein Raid 1 aus /dev/sda1 und /dev/sdb1
 
*Ziel:
 
/dev/md0 ist ein Raid 0 aus beiden Partitionen


# mdadm --grow /dev/md0 -l 0
=Superblock=


mdadm: level of /dev/md0 changed to raid0
*Linux-Software-RAID speichert alle notwendigen Informationen zu einem RAID-Array in einem Superblock.


/dev/sda1 wurde aus dem Raid 1 entfernt
*Je nach Metadaten-Version liegt dieser an unterschiedlichen Stellen.


# mdadm --zero-superblock /dev/sda1
*Mehr Info: [https://RAID.wiki.kernel.org/index.php/RAID_superblock_formats https://RAID.wiki.kernel.org/index.php/RAID_superblock_formats]
# mdadm --grow /dev/md0 --level=4 --raid-devices=2 --add /dev/sda1 --backup-file=/root/raid.bak


mdadm: level of /dev/md0 changed to raid4
==Superblock Metadaten-Version 0.90==
mdadm: added /dev/sda1
mdadm: Need to backup 128K of critical section..
mdadm: /dev/md0: could not set level to raid0


/dev/md0 ist jetzt ein Raid 4 das gesynced wird.  
*Der version-0.90 Superblock ist 4.096 Byte groß und liegt in einem 64 KiB aligned block am Ende eines Devices.  


*Raid 4 ist hier ein notwendiger Zwischenschritt. Synchronisation abwarten...
*Der Superblock beginnt ja nach Devicegröße frühestens 128 KiB vor dem Ende des Devices, bzw.&nbsp;spätestens 64 KiB vor dem Ende des Devices.  


*Dann Raid 4 zu Raid 0 konvertieren
*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.


# mdadm --grow /dev/md0 --level=0 --raid-devices=2 --backup-file=/root/raid.bak
*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 [https://RAID.wiki.kernel.org/index.php/The_Badblocks_controversy Bad-Block-Managements].


*Wieder das Reshaping abwarten...
==Superblock Metadaten-Version 1.*==


watch mdadm -D /dev/md0
*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.


*Fertig ist das Raid 0.
= HowTo =
# [[Linux:Software-RAID:Vorbereitung]]
# [[Linux:Software-RAID:Anlegen]]
# [[Linux:Software-RAID:Wartung]]
# [[Linux:Software-RAID:Fehlerbehebung]]
# [[Linux:Software-RAID:Aufgaben]]


=Quellen=
=Quellen=
Zeile 483: Zeile 74:
#[https://de.wikipedia.org/wiki/RAID#Software-RAID https://de.wikipedia.org/wiki/RAID#Software-RAID]
#[https://de.wikipedia.org/wiki/RAID#Software-RAID https://de.wikipedia.org/wiki/RAID#Software-RAID]
#[http://tldp.org/HOWTO/Software-RAID-HOWTO.html The Software-RAID HOWTO]
#[http://tldp.org/HOWTO/Software-RAID-HOWTO.html The Software-RAID HOWTO]
#[https://raid.wiki.kernel.org/index.php/Linux_Raid Linux Raid Wiki]
#[https://RAID.wiki.kernel.org/index.php/Linux_RAID Linux RAID Wiki]
#[https://raid.wiki.kernel.org/index.php/RAID_setup RAID Setup]
#[https://RAID.wiki.kernel.org/index.php/RAID_setup RAID Setup]
#[https://www.heise.de/ct/ausgabe/2013-6-Tipps-und-Tricks-rund-um-Linux-Software-RAID-2327050.html Festplattenpuzzles - Tipps und Tricks rund um Linux-Software-RAID]
#[https://www.heise.de/ct/ausgabe/2013-6-Tipps-und-Tricks-rund-um-Linux-Software-RAID-2327050.html Festplattenpuzzles - Tipps und Tricks rund um Linux-Software-RAID]
#[https://www.tecchannel.de/a/workshop-software-raid-unter-linux-einrichten,2032820 Workshop - Software-RAID unter Linux einrichten]
#[https://www.tecchannel.de/a/workshop-software-RAID-unter-linux-einrichten,2032820 Workshop - Software-RAID unter Linux einrichten]
#[http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch26_:_Linux_Software_RAID#.XvMxWKZCTXA Quick HOWTO : Ch26 : Linux Software RAID]
#[http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch26_:_Linux_Software_RAID#.XvMxWKZCTXA Quick HOWTO : Ch26 : Linux Software RAID]
#[http://vger.kernel.org/vger-lists.html#linux-raid linux-raid Mailing List]
#[http://vger.kernel.org/vger-lists.html#linux-RAID linux-RAID Mailing List]
#[https://www.thomas-krenn.com/de/wiki/Ubuntu-Server-Installation_mit_Software-RAID Ubuntu-Server-Installation mit Software-RAID]
#[https://www.thomas-krenn.com/de/wiki/Ubuntu-Server-Installation_mit_Software-RAID Ubuntu-Server-Installation mit Software-RAID]
#[https://RAID.wiki.kernel.org/index.php/RAID_superblock_formats https://RAID.wiki.kernel.org/index.php/RAID_superblock_formats]


[[Category:Linux:Storage]]
[[Kategorie:Linux/Software-RAID]]

Aktuelle Version vom 28. Mai 2023, 22:16 Uhr

Ein Software-Redundant Array of Independent Disks dient dazu, mehrere physikalische Festplatten zu einem oder mehreren logischen Laufwerken zu vereinen.

RAID allgemein

  • Schnellerer Datenzugriff und/oder erhöhte Verfügbarkeit des Systems im Falle eines Festplattendefektes.
  • Es werden nur Partitionen gleicher Größe verwendet, da sonst Speicherkapazitäten ungenutzt bleiben.
  • Hardware-RAID und Software-RAID machen beide das Gleiche.
  • Von Software-RAID spricht man, wenn das Zusammenwirken der Festplatten komplett softwareseitig organisiert wird.

Vergleich - Software-RAID/Hardware-RAID

Pro Software-RAID

  • Software-RAIDs gibt es als Open-Source-Software.
  • Bei Defekt des Betriebssystems, kann das RAID oft noch mit einer neuen Installation des gleichen Betriebssystems wieder eingelesen werden.
  • Bei Software-RAIDs auf BIOS-Ebene (Host-RAID-Systemen) ist das nicht immer so.

Contra Software-RAID

  • Benutzt den Prozessor und verbraucht Ressourcen.
  • Bei einem RAID, das auf dem Betriebssystem (OS) eingerichtet wurde, profitiert das OS selber nicht vom RAID.

Pro Hardware-RAID

  • Entlastung der Host-CPU.Alle Berechnungen werden vom RAID-Controller gemacht.
  • Steht schon beim Booten zur Verfügung.
    • Das OS profitiert vom RAID.
  • Unterstützt eine Vielzahl von Betriebssystemen.

Contra Hardware-RAID

  • Bei RAID-Controller-Defekt - kann kein baugleiches Modell aufgetrieben werden, wird das RAID zum Datengrab.
  • Zusätzliche Kosten für einen RAID-Controller (kein Fake-RAID).
Fake-RAIDs können nur eine begrenzte Anzahl von RAID-Leveln, häufig nur RAID-Level 0 und 1. 
Um die Controller/Karten so billig wie möglich zu halten, überlassen die Hersteller die RAID-Logik der CPU.
=> Benutzt also den Prozessor und verbraucht Ressourcen.

Superblock

  • Linux-Software-RAID speichert alle notwendigen Informationen zu einem RAID-Array in einem Superblock.
  • Je nach Metadaten-Version liegt dieser an unterschiedlichen Stellen.

Superblock Metadaten-Version 0.90

  • 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.

HowTo

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

Quellen

  1. https://wiki.ubuntuusers.de/Software-RAID/
  2. https://www.thomas-krenn.com/de/wiki/Linux_Software_RAID
  3. https://de.wikipedia.org/wiki/RAID#Software-RAID
  4. The Software-RAID HOWTO
  5. Linux RAID Wiki
  6. RAID Setup
  7. Festplattenpuzzles - Tipps und Tricks rund um Linux-Software-RAID
  8. Workshop - Software-RAID unter Linux einrichten
  9. Quick HOWTO : Ch26 : Linux Software RAID
  10. linux-RAID Mailing List
  11. Ubuntu-Server-Installation mit Software-RAID
  12. https://RAID.wiki.kernel.org/index.php/RAID_superblock_formats