[[Vorlage(Getestet oneiric, natty, lucid, hardy)]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:ROOT:Rootrechte erlangen] [:Pakete_installieren: Installation von Programmen] [:Datenträger#Wie-heissen-die-Datentraeger:Wie heißen die Datenträger] [:Systeminformationen_ermitteln#Festplatten:] [:Partitionierung:] [:Dateisystem:] [:mount:] [:fstab:] }}} [[Inhaltsverzeichnis(2)]] Ein [wikipedia:RAID:] ('''R'''edundant '''A'''rray of '''I'''ndependent '''D'''isks) dient dazu, ein logisches Laufwerk redundant auf mehrere physikalische Festplatten zu verteilen und dadurch einen schnelleren Datenzugriff und/oder eine erhöhte Sicherheit vor Datenverlust durch den Ausfall einer oder mehrerer Festplatten zu erreichen. Native Hardware-RAID-Controller, die unter Linux unterstützt werden (z.B. 3Ware), sind aber für den Heimgebrauch teuer. Diesen braucht man aber nicht zwingend, wenn man unter Linux ein Software-RAID verwendet. Die Festplatten dafür können auch an sog. FakeRAID-Controllern verwendet werden, die oftmals unter Windows als RAID-Controller eingesetzt werden, bzw. an Onboard-RAID-Controllern. = Grundsätzliche Informationen = * Für ein RAID werden mehrere Partitionen[4] benötigt. Dabei ist es dringend angeraten, diese auf verschiedenen Festplatten anzulegen. Zudem sollten die Partitionen alle die gleiche Größe haben. * Es ist es möglich auf einer Festplatte mehrere Partitionen zu verwenden, davon wird aber abgeraten, da beim Ausfall der Festplatte das RAID nicht mehr lesbar ist. * Ab Ubuntu 10.04 (Lucid Lynx) unterstützt die [:Alternate_Installation:Alternate-CD] bereits bei der Installation das Erstellen eines RAID (0, 1, 5, 6 & 10). Dies findet man unter dem Punkt: "Partitionieren". * Um das komplette System zu einem RAID-Verbund zusammenzufassen, muss es mit der Alternate-CD aufgesetzt werden. * Soll von einem neuen Raid-Verbund gebootet werden (Root-Dateisystem), muss der Bootloader installiert und die '''mdadm.conf''' mit ins '''initramfs''' übernommen werden. * [:GRUB_2/Installation:GRUB 2] erlaubt das direkte Booten auch von anderen RAID-Konstellationen, als hier vorgestellt. === IDE/SATA === Bei [wikipedia:ATA/ATAPI:IDE-ATA]-Festplatten[4] gilt: die verwendeten Festplatten sollten nicht an einem IDE-Kanal hängen, da im Fehlerfall einer Festplatte 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. Generell sollte man bei RAIDs moderne [wikipedia:SATA:SATA-Festplatten][4] verwenden, da der Datendurchsatz bei diesen zum Teil erheblich höher ist als bei älteren IDE-Platten. Zudem sind SATA-Platten "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. {{{#!vorlage Warnung Nicht jeder SATA-Controller ist in der Lage, mit "Hotplug" auch richtig umzugehen. Man sollte auch darauf achten, dass man die richtige Festplatte[4] angibt, um Datenverlust zu vermeiden. }}} === Partitionstabellen === Um Festplatten[4] oder einen RAID-Verbund mit einer Größe über 2 TiB anzusprechen, reicht die [wikipedia:Partitionstabelle:Master-Partitionstabelle (MPT)] des [wikipedia:Master_Boot_Record:Legacy-MBR] nicht aus, die Partitionen müssen mit der neueren [wikipedia:GUID_Partition_Table:GUID Partition-Table (GPT)] verwaltet werden. Im Artikel wird daher auf den entsprechenden [:Partitionierung/Grundlagen#Partitionstypen:Partitionstabellen-Typ] mittels MPT bzw. GPT hingewiesen. == RAID-Typen == ||<-4 rowclass="titel"> Auswahl von RAID-Typen im Überblick || ||Typ ||<: cellstyle="width: 10%"> mind. Partitionen || Vorteil || Bemerkung || ||<)> 0 ||<:> 2 || Geschwindigkeit (Lesen & Schreiben), Plattenplatz || Keine Partition darf ausfallen - Reisverschlussverfahren || ||<)> 1 ||<:> 2 || Ausfallsicherheit, Geschwindigkeit (Lesen) || Alle bis auf eine Partition dürfen ausfallen - Spiegelung || ||<)> 5 ||<:> 3 || Plattenplatz, Ausfallsicherheit, Geschwindigkeit (Lesen) || Eine Partition darf ausfallen - Striping & Parität|| ||<)> 6 ||<:> 4 || 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 || || <-4 RAID unterstützt auch unbenutzte Reservelaufwerke, sog. [wikipedia:RAID#Hot-Spare-Laufwerk:Hot-Spares]. Dabei werden vorab Partitionen bekannt gegeben, die beim Ausfall eines Laufwerks innerhalb des RAID-Verbundes durch das Reservelaufwerk redundant ersetzt werden.|| = Installation = Folgendes Paket muss installiert[3] werden, um ein Software-RAID erstellen zu können: {{{#!vorlage Paketinstallation mdadm }}} = Syntax = Durch die Angabe eines Schlüsselwortes wird ein bestimmter Modus eingeleitet, der für die ordnungsgemäße Verarbeitung der weiteren Optionen entscheidend ist. Eine komplette Beschreibung zu Modus und Optionen befindet sich in der [:man:Manpage] zu '''mdadm'''. {{{#!vorlage befehl mdadm OPTIONEN }}} || <-4 tablestyle="width: 100%;" rowclass="titel">Syntax-Übersicht einiger ausgewählter Modi || || Nr. || Syntax || Schlüsselwort || Kurzbeschreibung || || 1 || mdadm --assemble MD-DEVICE OPTION DEVICE || <|3>`--assemble` || Assembliert das Array mit den angegebenen Festplatten/Partitionen || || 1.1 || mdadm --assemble --scan MD-DEVICE OPTION || Assembliert das angegebene Array neu. || || 1.2 || mdadm --assemble --scan OPTION || Assembliert die in der [#mdadm-conf mdadm.conf] mit `DEVICE` hinterlegten Partitionen || || 2. || mdadm --create MD-DEVICE OPTION DEVICE || `--create` || Anlegen/Definieren eines neues Arrays || || 3. || mdadm --grow OPTION MD-DEVICE || `--grow` || Vergrößern/Verkleinern eines bestehenden Arrays || || 4. || mdadm --monitor DEVICE OPTIONS... DEVICES... || `--monitor` || Monitoring von einem oder allen ''md-devices'', inkl. Reaktion auf Status-Veränderungen || || 5. || mdadm --manage DEVICE OPTIONS... DEVICES... || `--manage` || Management von ''md-devices'' und/oder Partitionen || || 6. || mdadm OPTION DEVICE || || Sonstige Aktionen || || || <-3 cellstyle="border-left: none;"> Legende: `MD-DEVICE`[4] beschreibt die RAID-Arrays und `DEVICE` die am Array teilnehmenden Festplatten/Partitionen[5] (siehe auch: [#mdadm-conf mdadm.conf]) || == Optionen == Neben dem einzelnen Modus gibt es eine ganze Reihe von Optionen, die unterschiedliche Funktionen bei den einzelnen Modi haben. Eine komplette Beschreibung zu Modus und Optionen befindet sich in der [:man:Manpage] zu '''mdadm'''. || <-4 tablestyle="width: 100%;" rowclass="titel">Auswahl einiger Optionen mit dem zugeordneten [#Syntax Modus], wie er in den Beispielen angewendet wird. || || Option || Beschreibung || gültig bei Modi || || `--add` || Hinzufügen weiterer Festplatten/Partitionen || 1, 6 || || `--auto=...` || Instruktion an '''mdadm''' zum Allokieren des Arrays - ohne Angabe, auch in der ''mdadm.conf'', wird '''yes''' unterstellt. || 2, 3 || || `--backup-file=...` || Erzeugt eine Backup-Datei - darf nicht im Array liegen || 1, 3 || || `--detail` || Details zu den Arrays ausgeben || 6 || || `--fail` || Status eines Array verändern || 5 || || `--force` || Erzwinge die Ausführung, auch wenn es unsinnig erscheint || 1, 2, 6 || || `--help` || Ausgabe eines generellen Hilfetextes, bzw. hinter einer Option spezielle Optionshilfe || 1, 2, 3, 4, 5, 6 || || `--level=...` || Bezeichnet den RAID-Typ || 1, 2, 3 || || `--query` || Üperprüfen ob das angegebene Device ein `md`-Device ist bzw. zu einem Array gehört(e) || 6 || || `--raid-device=...` || Anzahl der aktiven am Array teilnehmenden Festplatten/Partitionen || 1, 2 || || `--remove` || Festplatten/Partitionen die aus dem Array entnommen werden sollen || 5 || || `--stop` || Stoppen eines Arrays || 4, 5, 6 || || `--spare-device=...` || Anzahl der inaktiven (Ersatz-) Festplatten/Partitionen eines Arrays || 2, 3 || || `--test` || Testen der angegebenen Optionen || 5, 6 || || `--uuid=...` || Die [:UUID:] des Arrays || 1 || || `--verbose` || Mehr Ausgabe-Informationen erzeugen - kann 2x gesetzt werden || 4, 5, 6 || || `--zero-superblock` || Löschen des RAID-Superblocks || 6 || || <-4 rowclass="kopf"> || || <-4> Bei einem Standard-Ubuntu hat die Option `--auto-detect` keine Auswirkungen. Soll diese Option genutzt werden, muss sie manuell in den Kernel kompilliert werden. || || <-4 rowclass="trennzeile"> || == mdadm.conf == Die Neuanlage, das Assemblieren, das Monitoring ... und die Verwaltung der Arrays wird u.a. durch die '''mdadm.conf''' gesteuert. mdadm sucht danach in der Reihenfolge: `--config=`-Option. '''/etc/mdadm.conf''', '''/etc/mdadm/mdadm.conf''' bzw. ''keine'' Konfigurationsdatei vorhanden. Man kann sich eine Muster-Konfigurationsdatei aus der '''/usr/share/mdadm/mkconf''' erstellen, oder legt sie sich selbst, entsprechend den eigenen Vorgaben, neu an. Eine ausführliche Beschreibung bietet die [:man:Manpage] zu der '''mdadm.conf'''. Der Aufbau gliedert sich in Schlüsselworte und eine Reihe von Parametern, die durch "white spaces" voneinander getrennt werden. || <-2 tablestyle="width: 100%;" rowclass="titel">Auswahl einiger Definitionen der mdadm.conf || || Schlüsselwort || Beschreibung || || `DEVICE` || Beschreibt die am RAID teilnehmenden Festplatten/Partitionen, dabei können Wildcards gemäß dem "Globing" genutzt werden. Die Angabe von ''partitions'' bewirk, dass alle z.Zt. angeschlossenen Festplatten/Partitionen lt. '''/proc/partitions''' zum Aufbau der Arrays herangezogen werden. || || `MAILADDR` || Eine E-mail-Adresse, an die Veränderungen am RAID gemeldet werden - z.B. bei `--monitor` || || `MAILFROM` || Eine E-mail-Absenderabgabe || || `PROGRAM` || Ein Programm, das z.B. nach einem `--monitor` ausgefürt werden soll. Es werden 2 bis 3 Parameter übergeben: der Event, das md-Device und evtl. das dazugehörige, weitere Device. || || `ARRAY` || Alle am RAID teilnehmenden Array-Einträge - diese Einträge kommen mehrfach, je Array, vor || '''Muster einer mdadm.conf:''' {{{ DEVICE /dev/sd[bcdjkl]1 DEVICE /dev/hda1 /dev/hdb1 # /dev/md0 is known by it's UID. ARRAY /dev/md0 UUID=3aaa0122:29827cfa:5331ad66:ca767371 # /dev/md1 contains all devices with a minor number of # 1 in the superblock. ARRAY /dev/md1 superminor=1 # /dev/md2 is made from precisey these two devices ARRAY /dev/md2 devices=/dev/hda1,/dev/hda2 # /dev/md4 and /dev/md5 are a spare-group and spares # can be moved between them ARRAY /dev/md4 uuid=b23f3c6d:aec43a9f:fd65db85:369432df spare-group=group1 ARRAY /dev/md5 uuid=19464854:03f71b1b:e0df2edd:246cc977 spare-group=group1 # /dev/md/home is created if need to be a partitionable md array # any spare device number is allocated. ARRAY /dev/md/home UUID=9187a482:5dde19d9:eea3cc4a:d646ab8b auto=part MAILADDR root@mydomain.tld PROGRAM /usr/sbin/handle-mdadm-events }}} = Anlegen eines RAID = {{{#!vorlage Hinweis In allen Beispielen werden die Bezeichnungen[5] '''sde''' bis '''sdh''' für die RAID-Verbünde und '''sdi''' für die Ersatzplatte genutzt. Für das RAID selbst werden die Bezeichnungen '''md0''' bzw. '''md1''' genutzt. In den Beispielen wird immer nur mit Partitionen gearbeitet. }}} == Vorbereitung == {{{#!vorlage Warnung Alle Veränderungen an den Festplatten löschen die vorherigen Inhalte. Es ist daher dringend angeraten eine Datensicherung durchzuführen. }}} * Informationen über die angeschlossenen Festplatten und Partitionen[5] bereit legen. * Partitionierung[6] der Festplatten mit jeweils 1 Partition: 1. Bei MBR-Partitionstabellen (MPT) z.B. mit [:fdisk:] und der Kennung "''fd''". 1. Bei GUID-Partitionstabellen (GPT) z.B. mit [:gdisk:] und der Kennung "''fd00''". 1. Die Partitionen sollten immer die gleiche Größe (Anzahl der Sektoren) haben. 1. Am Ende der Festplatte muss ein freier Bereich erhalten bleiben, mind. 128 KiB, damit das RAID seinen eigenen Superblock ablegen kann. * Alle Partitionen im Verbund müssen das gleiche Dateisystem[7] besitzen. == Konfiguration == === Anlegen einer eigenen mdadm.conf === 1. Rootrechte[2] erlangen 1. Nur die 1. Partition der Datenträger '''sde''' bis '''sdh''' berücksichtigen und von ''sdi'' alle Partitionen 1. Mail-Empfänger 1. Mail-Absender 1. Eigenes Script in '''/usr/bin/''' hinterlegt 1. Rootrechte verwerfen {{{#!vorlage befehl sudo -i echo 'DEVICE /dev/sd[efgh]1 /dev/sg[i][0-9]' >/etc/mdadm/mdadm.conf echo 'MAILADDR user@example.com' >>/etc/mdadm/mdadm.conf echo 'MAILFROM raid@example.com' >>/etc/mdadm/mdadm.conf echo 'PROGRAM /usr/bin/usr/bin/raid-problem.sh' >>/etc/mdadm/mdadm.conf exit }}} Um die E-Mail-Benachrichtigung bzw. die Ausführung des Programms zu testen, führt man ein : {{{#!vorlage Befehl sudo mdadm --monitor --test /dev/md0}}} aus. Wichtig dabei ist, dass in der Datei '''/etc/default/mdadm''' die Optionen "`AUTOCHECK`" und "`START_DAEMON`" auf "`true`" eingestellt sind. === Virtuelles Laufwerk === Nun wird das "virtuelle" Laufwerk mit den dazugehörigen Partitionen und dem eigentlichen Dateisystem[7] erzeugt. Mit einem {{{#!vorlage befehl mdadm --query /dev/sde1 }}} kann man überprüfen, ob die Partition ein `md`-Device ist bzw. ob es zu einem Array gehört(e). ==== Superblock löschen === Wurden die Festplatten bereits einmal für ein RAID genutzt, dann gibt mdadm bei einem `--create` zur Warunung das alte RAID level und das zugehörige Datum aus. Sollen die Partitionen dennoch für das neue Array genutzt werden, dann muss der RAID-Superblock vorher gelöscht werden: {{{#!vorlage Befehl sudo mdadm --zero-superblock /dev/sde1 sudo mdadm --zero-superblock /dev/sdg1 }}} ==== RAID erzeugen ==== z.B.: Software-RAID 0: {{{#!vorlage Befehl sudo mdadm --create --verbose /dev/md0 --auto=yes --level=0 --raid-devices=2 /dev/sde1 /dev/sdf1 }}} z.B.: Software-RAID 1: {{{#!vorlage Befehl sudo mdadm --create --verbose /dev/md0 --auto=yes --level=1 --raid-devices=2 /dev/sde1 /dev/sdf1 }}} z.B.: Software-RAID 5 mit drei Festplatten: {{{#!vorlage Befehl sudo mdadm --create --verbose /dev/md0 --auto=yes --level=5 --raid-devices=3 /dev/sde1 /dev/sdf1 /dev/sdg1 }}} z.B.: Software-RAID 6 mit vier Festplatten: {{{#!vorlage Befehl sudo mdadm --create --verbose /dev/md0 --auto=yes --level=6 --raid-devices=4 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 }}} ==== RAID formatieren ==== Nun formatiert man '''md0''' mit dem gewünschten Dateisystem[7], z.B. [:ext:ext4]: {{{#!vorlage Befehl sudo mkfs.ext4 /dev/md0 }}} ==== RAID mounten ==== Das RAID muss in den Dateibaum eingebunden[8] werden. Der korrelierende Eintrag dazu in der '''/etc/fstab'''[9] folgt der selben Syntax wie der einer normalen Partition und könnte beispielsweise so aussehen: {{{UUID=c4677279:2d8a904a:01f9e43d:ac30fbff /media/daten ext4 defaults 0 0}}} Hinweis alle an einem RAID teilnehmenden Festplatten/Partitionen haben die gleiche [:UUID:], desshalb kann man diese anstatt eines '''/dev/md0''' nutzen. ==== mdadm.conf aktualisieren ==== Nun werden die Definitionen der angelegten Arrays an die [#mdadm-conf mdadm.conf] angehangen: {{{#!vorlage Befehl sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf }}} Musterausgabe eines Scan mit einem Array: {{{ARRAY /dev/md0 level=raid4 num-devices=3 UUID=c4677279:2d8a904a:01f9e43d:ac30fbff}}} [[Vorlage(Ausbaufähig, "Hier müssen die Fachleute ran: ¿¿ Muss das Array assembliert werden ??")]] ******************************************************************************************************* ==== RAID Assemblieren ==== Die Arrays der [#mdadm-conf mdadm.conf] können nun assembliert und damit aktiviert werden: {{{#!vorlage Befehl sudo mdadm --assemble --scan }}} ******************************************************************************************************* ==== RAID synchronisieren ==== Im Hintergrund werden jetzt die im RAID vorhandenen Festplatten/Partitionen synchronisiert. Dies kann eine erhöhte Systemauslastung ("load average") verursachen und je nach Größe der Partitionen eine Weile dauern. ==== RAID überwachen ==== Den Vortschritt der Synchronistation bzw. eine Kurzübersicht des Vorgangs kann man sich jederzeit mit {{{#!vorlage befehl cat /proc/mdstat }}} ansehen oder eine ausführliche Informationen zu einem RAID-Device mit {{{#!vorlage Befehl sudo mdadm --detail /dev/md0 }}} anfordern. Soll von dem neuen Raid-Verbund gebootet werden (Root-Dateisystem), dann muss noch der [#Bootloader Bootloader installiert] und die [#mdadm-conf mdadm.conf] in das [#initramfs initramfs übernommen] werden. = Defektes RAID = Ein funktionierendes, intaktes Array liefert bei den [#RAID-ueberwachen beiden Abfragen] als Status ein [UU] zurück, daher werden 2 Fehlermöglichkeiten unterschieden. == Controller-Fehler == In Einzelfällen kann es vorkommen, dass aufgrund eines defekten Controllers oder Netzteils ein RAID nicht mehr funktionsfähig ist. In so einem Fall liegt kein Schaden an den Festplatten vor. Hier hilft die folgende Vorgehensweise: 1. RAID stoppen:{{{#!vorlage Befehl sudo mdadm --stop /dev/md0 }}} 1. Das RAID muss manuell wieder zusammengefügt werden, dabei ist es wichtig, die letzte funktionierende Konfiguration zu verwenden. Bei einem RAID 5 mit 3 Platten, bei dem zwei Festplatten wegen Controller-Defekt ausgestiegen sind, müssen diese zwei Platten ([#RAID-erzeugen siehe o.g. Beispiel]) verwendet werden, da sie bis zum Ausfall des Controllers noch zusammen aktiv waren. Nun reaktviert man das Arrays: {{{#!vorlage Befehl sudo mdadm --assemble /dev/md0 /dev/sde1 /dev/sdf1 --force }}} und es sollte wieder funktionieren. 1. Die dritte Platte kann nun mit{{{#!vorlage befehl sudo mdadm --add /dev/md0 /dev/sdg1 }}} wieder in den Verbund aufgenommen werden. == Festplatten-Ausfall == Wenn eine der Festplatten/Partitionen im Verbund ausfällt, wird dies vom mdadm-Dämon entsprechend geloggt und, sofern eingestellt, mittels E-mail/Programm darüber informiert. {{{#!vorlage Hinweis 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 folgenen Anweisungen repariert werden, sondern muss neu aufgesetzt werden. }}} Am Status [U_] bzw. [_U] erkennt man, dass eine Festplatte/Partition nicht synchron ist. Man kann sich eine [#RAID-ueberwachen Übersicht] anzeigen lassen, um den Status abzulesen: '''Muster eines defekten RAID-Arrays:''' [[BR]] {{{Personalities : [raid1] md1 : active raid1 sde2[0] sdf2[1](F) 524276 blocks super 1.2 [2/1] [U_] md0 : active raid1 sde1[0] sdf1[1](F) 33553336 blocks super 1.2 [2/1] [U_] unused devices: }}} Die Wiederherstellen des Software-RAID lässt sich im laufenden System durchführen. Um die Festplatte zu ersetzen, muss diese zunächst aus dem RAID-Verbund entfernt werden. Zu beachten ist dabei, dass bei mehreren Partitionen auf einer Festplatte dies für jede Partition einzeln getan wird: {{{#!vorlage Befehl sudo mdadm /dev/md0 --remove /dev/sde1 sudo mdadm /dev/md1 --remove /dev/sde2 sudo mdadm /dev/md2 --remove /dev/sde3 }}} Es kann vorkommen, dass eine verwendete Festplatte teilweise defekt ist und sich z.B. die Partition zu '''md0''' im Status [U_] befindet, alle anderen aber im Status [UU] sind. In diesem Fall schlägt der Befehl fehl, da die anderen '''md'''s in Ordnung sind, und man muss diese vorher mit {{{#!vorlage befehl mdadm --manage /dev/md1 --fail /dev/sde2 }}} ebenfalls in den Modus [U_] vesetzen. Ebenso ist darauf zu achten, dass eine evtl. angelegte [:Swap:]-Partition vorher mit {{{#!vorlage befehl sudo swapoff -a}}} abgeschaltet, und sofern im RAID-Verbund integriert, ebenfalls daraus entfernt wird. === Neue Festplatte === Die neue Festplatte muss zunächst genauso wie die anderen im RAID [#Vorbereitung manuell] partitioniert und formatiert werden. Dazu nochmals der Hinweis, dass die Partitionen die gleiche Größe besitzen sollten. ==== Partitionstabelle erstellen ==== Sofern die Partitionstabelle der ausgefallenen Festplatte noch lesbar ist, kann man diese auf die neue Festplatte sehr einfach kopieren. Bei beiden Partitionstypen, MPT und GPT, lohnt es sich aber immer einen Backup der Partitionstabelle zur Verfügung zu haben. Falls Probleme bei den folgenden Befehlen auftreten, kann man dann dieses Backup auf die neue Festplatte mit [:fdisk#Partitionstabelle-zurueckladen: sfdisk] für MPT bzw. mit [:gdisk#Partitionstabelle-zurueckladen:sgdisk] für GPT einspielen. Ein Skript zum sichern aller Partitionstabellen (MPT+GPT) der angeschlossenden Festplatten (Kennung: hd,md und sd) befindet sich unter [:Skripte/Partitionstabellen_sichern:]. * MPT: Die Partitionstabelle des MBR der Platte '''sde''' auf die neue Festplatte '''sdi''' kopieren:{{{#!vorlage Befehl sudo sfdisk -d /dev/sde | sfdisk /dev/sdi}}} * GPT: Die GUID-Partitionstabelle der Platte '''sde''' auf die neue Festplatte '''sdi''' kopieren:{{{#!vorlage Befehl sgdisk -R /dev/sdi /dev/sde}}} Danach gibt man bei GPT der Festplatte noch eine neue zufällige [wikipedia:Globally_Unique_Identifier:GUID]{{{#!vorlage Befehl sgdisk -G /dev/sdi}}} ==== Partitionstabelle bekanntgeben==== Wurde die Reparatur im laufenden System durchgeführt, dann muss man die Partitionstabelle noch dem Kernel bekannt geben, dies erfolgt mit: {{{#!vorlage befehl sudo sfdisk -R /dev/sgi}}} oder mittels {{{#!vorlage befehl sudo partprobe -s /dev/sdi}}} Nun kann die neue Festplatte wieder in die Arrays eingebunden werden {{{#!vorlage Befehl sudo mdadm /dev/md0 --add /dev/sdi1 }}}und wird nun synchronisiert. Dieser Vorgang kann je nach Größe einige Zeit dauern. Der Status der Synchronisation kann jederzeit wieder [#RAID-ueberwachen eingesehen] werden. '''Musterausabe:''' {{{Personalities : [raid1] md0 : active raid1 sdi1[1] sde1[0] 1028096 blocks [2/2] [UU] [==========>..........] resync = 50.0% (514048/1028096) finish=97.3min speed=65787K/sec unused devices: }}} Soll von dem neuen Raid-Verbund gebootet werden (Root-Dateisystem), dann muss noch der [#Bootloader Bootloader installiert] und die [#mdadm-conf mdadm.conf] in das [#initramfs initramfs übernommen] 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, 4, 5 oder 6. Die Partition, die hinzugefügt werden soll, muss genauso [#Vorbereitung formatiert] sein, wie die Partitionen, die bereits im RAID vorhanden sind. {{{#!vorlage Warnung Das Vergrößern ("reshaping") eines RAID-Systems kann, je nach Größe, einige Stunden oder sogar Tage dauern. Die Aktion wird im Hintergrund ausgeführt. Es sollte also sichergestellt sein, dass das "reshaping" beendet ist, bevor man den Computer ausschaltet oder neu startet. Es können sonst alle Daten des RAID verlorengehen. }}} {{{#!vorlage Hinweis Um die Auswirkungen auf das System zu minimieren, kann die Geschwindigkeit beim Vergrößern des RAID auf das Minimum (rund 100 MB/s) gedrosselt werden. Es ist also sinnvoll, den Wert in '''/proc/sys/dev/raid/speed_limit_min''' temporär zu erhöhen, falls die Geschwindigkeit zu gering und das System nicht ausgelastet ist. Selbst wenn diese Geschwindigkeit nicht erreicht wird, ist es kein Schaden, sie auf diesen Wert zu setzen. Das RAID darf während des Vorgangs [#RAID-mounten eingebunden] sein. Dies verlangsamt den Vorgang allerdings wesentlich. Im ungemounteten Zustand kann das "reshaping" über 50% schneller sein als im gemounteten Zustand. }}} Um das RAID neu aufzubauen und somit den neuen Speicherplatz nutzen zu können, muss man wie folgt vorgehen: 1. Sicherungsdatei anlegen: {{{#!vorlage Befehl sudo cp /proc/sys/dev/raid/speed_limit_min /proc/sys/dev/raid/speed_limit_min.old}}} 1. Minimieren der Geschwindigkeit:{{{#!vorlage Befehl sudo -i echo 100000 >/proc/sys/dev/raid/speed_limit_min exit }}} 1. Neue Festplatte/Partition dem vorhandenen Array hinzufügen:{{{#!vorlage Befehl sudo mdadm --add /dev/md0 /dev/sdi1 }}}Die Partition wird zunächst nur als [#RAID-Typen Spare-Laufwerk] zum RAID hinzugefügt. Dem Befehl können auch mehrere neue Partitionen mitgegeben werden, um gleich mehrere Geräte hinzuzufügen. 1. Das RAID neu aufbauen um somit den neuen Speicherplatz nutzen zu können:{{{#!vorlage Befehl sudo mdadm --grow --raid-devices=4 /dev/md0 }}} Die Option "`raid-devices`" gibt die Anzahl der Geräte an, aus denen das RAID nach der Erweiterung bestehen soll. Falls man den Platz hat, um ein Backup zu erstellen, kann man mit dem Zusatz "`--backup-file=`" einen Backup in eine externe Datei erstellen. 1. Das Dateisystem muss noch [:Dateisystemgröße_ändern:erweitert] werden, damit der neu entstandene Speicherplatz genutzt werden kann. z.B.{{{#!vorlage Befehl sudo resize2fs /dev/md0 # für ext-Dateisysteme}}} 1. Der überprüfung des Dateisystems ([:Dateisystemcheck:fsck]) sollte man stattgeben, auch wenn es ein wenig Zeit in Anspruch nimmt. 1. Die [#mdadm-conf mdadm.conf] sollte noch auf den [#mdadm-conf-aktualisieren aktuellen Stand] gebracht werden (evtl. alte Einträge löschen). 1. Der Status lässt sich wieder jederzeit [#RAID-ueberwachen einsehen]. 1. Das Limit sollte nach erfolgreichem "reshaping" wieder zurückgesetzt werden:{{{#!vorlage befehl sudo cp /proc/sys/dev/raid/speed_limit_min.old /proc/sys/dev/raid/speed_limit_min}}} Soll von dem neuen Raid-Verbund gebootet werden (Root-Dateisystem), dann muss noch der [#Bootloader Bootloader] installiert und die [#mdadm-conf mdadm.conf] in das [#initramfs initramfs übernommen] 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). Danach muss man auf dem neuen System das Paket {{{#!vorlage Paketinstallation mdadm }}}installieren[2]. {{{#!vorlage Warnung Auf keinen Fall darf man hierbei die Optionen "`--create`" verwenden, sonst wird die Lesbarkeit auf den beteiligten Partitionen zerstört. }}} Das RAID muss danach nur noch nutzbar gemacht werden: 1. RAID aus der [#mdadm-conf mdadm.conf] neu assemblieren{{{#!vorlage Befehl sudo mdadm --assemble --scan}}} 1. 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:{{{#!vorlage Befehl sudo mdadm --assemble --scan --uuid=6c926c35:380d7ab2:3603cf0e:ecfa67b9}}} oder durch die Angabe der einzelnen Partitionen{{{#!vorlage Befehl sudo 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 Bootloader installiert] und die [#mdadm-conf mdadm.conf] in das [#initramfs initramfs übernommen] werden. = USB und RAID = Wichtig ist vor allem, dass RAID-0 (stripping) denkbar ungeeignet für ein USB-RAID ist, 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 stark davon abzuraten ist. Bei einem RAID 1 (Spiegel) mit mehreren Partitionen auf verschiedenen USB Festplatten sollte es keine Probleme geben. RAID 1 funktioniert, weil immer auf alle Platten geschrieben wird und das System zwischenzeitlich entfernte Platten wieder synchronisieren kann. Bei USB-Festplatten muss man nur 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, sollte man die '''/etc/fstab'''[9] auf diese abstellen und um die Parameter "`nouser`" und "`noauto`" erweitern. = Komplexe Szenarien = Wem die oben genannten Möglichkeiten nicht ausreichen, der kann auch auf komplexere Konfigurationen zurückgreifen. So ist es möglich, zwei RAID 5 zu spiegeln, also als RAID 1 zu betreiben, zum Beispiel: 1. Aus '''sde1, sdf1''' & '''sdg1''' wird ein RAID 5 erstellt 1. Aus '''sdh1''' & '''sdi1''' wird ebenfalls ein RAID 5 erstellt 1. Aus den beiden RAID 5 wird dann ein RAID 1 erstellt. {{{#!vorlage befehl sudo mdadm --create --verbose /dev/md0 --auto=yes --level=5 --raid-devices=3 /dev/sde1 /dev/sdf1 /def/sdg1 sudo mdadm --create --verbose /dev/md1 --auto=yes --level=5 --raid-devices=2 /dev/sdh1 /dev/sdi1 sudo mdadm --create --verbose /dev/md2 --auto=yes --level=1 --raid-devices=2 /dev/md0 /dev/md1 }}} Dies erhöht die Datensicherheit, da ein komplettes RAID 5 ausfallen kann, und die Daten trotzdem noch verfügbar sind. Alternativ verwendet man auch gerne mehrere RAIDs in Zusammenarbeit mit [:LVM:], da dieses einen sehr flexiblen Umgang mit den RAIDs ermöglicht. Zudem sind dadurch auch sehr große Dateisysteme mit etlichen Terabytes und sogar Petabytes realisierbar. = RAID auflösen = Um den den Striping-Verbund eines RAID aufzulösen, d.h. die Resourcen wieder freizugeben, geht man wie folgt vor: 1. Stoppen des RAID-Verbundes: {{{#!vorlage befehl sudo umount /dev/md0 mdadm --stop /dev/md0}}} 1. Mit einem Editor in der [#mdadm-conf mdadm.conf] alle Array-Angaben löschen. 1. Evtl. noch den [#Superblock-loeschen RAID-Superblock] der entfernten Partitionen löschen. 1. Die Partitions-ID wieder auf normale Linux-ID ändern, z.B. bei MPT auf ''83'' oder bei GPT auf ''8300''. 1. In der '''/etc/fstab'''[9] die aufgelösten RAIDs entnehmen. 1. Evtl. noch verbliebene Arrays an die [#mdadm-conf mdadm.conf] neu [#mdadm-conf-aktualisieren anfügen] Die Daten sind damit nicht mehr zugreifbar. Die Partitionen auf den Festplatten sind damit aber immernoch vorhanden, solange diese nicht überschrieben werden. Handelte es sich um startfähige RAID-Verbünde (Root-Dateisystem), dann sollte noch das [#initramfs initramfs aktualisiert] werden. Sofern noch bootfähige Arrays verblieben sind muss auch die [#mdadm-conf mdadm.conf] wieder in das initramfs übernommen 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/Installation: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 hier die neu eingerichteten Festplatten angegeben wird. * GPT: Der Bootloader muss in die entsprechende [:GRUB_2/Grundlagen#GPT-Partitionstabelle:Boot-Partition] installiert werden. Weitere Möglichkeiten, z.B. bei der Reparatur des RAID, bieten die [:GRUB_2/Reparatur#Root-Directory-Methode:Root-Directory-], die [:GRUB_2/Reparatur#chroot-Methode:Chroot-] oder die [:GRUB_2/Terminal-Befehle#grub-setup:Setup-]Methode. == initramfs == Damit die Boot-Partitionen durch die `initrd` auch einwandfrei gemountet werden, sollte nach Änderung der Datei [#mdadm-conf mdadm.conf] noch die initrd neu angelegt werden, z.B. durch Ausführen von {{{#!vorlage Befehl dpkg-reconfigure mdadm}}} Die aktualisierte [#mdadm-conf mdadm.conf] muss zusätzliche bei jeder Veränderung neu in das '''initramfs''' mit aufgenommen werden: {{{#!vorlage Befehl sudo update-initramfs -u -k all}}} = Fehler = === Bootprobleme === GRUB 2: unknown Filesystem: [[BR]] Falls das System nicht bootet, nachdem man es auf ein RAID 1 kopiert hat, obwohl die '''/etc/fstab'''[9] angepasst, die [:GRUB_2/Konfiguration#Standardeintraege-in-die-grub-cfg:grub.cfg] und die [#mdadm-conf mdadm.conf] korrekt erscheinen, sowie das [#initramfs initramfs] aktualisiert wurde, kann es helfen, GRUB 2 wie unter [:GRUB_2/Reparatur#Root-Directory-Methode:] beschrieben erneut zu installieren. Amerkung: Auf die Art der Partitionstabelle MPT & GPT achten! === RAID startet nicht === Device or resource busy[[BR]] Falls beim Erstellen eines RAIDs die Meldung {{{ mdadm: Cannot open /dev/sdXY: Device or resource busy}}} erscheint und mit den Partitionen bereits einmal ein RAID erstellt wurde, muss dieses mit dem Befehl {{{#!vorlage Befehl sudo mdadm --manage --stop /dev/mdX}}}gestoppt werden. Sollte wider Erwarten ein RAID beim Booten nicht erkannt werden, so kann man mit der Datei [#mdadm-conf mdadm.conf] der automatischen Erkennung auf die Sprünge helfen. 1. Zuerst aktiviert und startet man alle RAIDs manuell, damit sie vom Kernel erkannt werden. 1. Dann erstellt man eine neue [#Anlegen-einer-eigenen-mdadm-conf Konfigurations-Datei]. Hier muss man unterscheiden, ob man Partitionen oder ganze Platten für das RAID verwendet hat. 1. Nun aktualisiert man die [#mdadm-conf mdadm.conf] um die neuen Arrays, z.B.: * Partitionen:{{{#!vorlage Befehl sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf}}} * ganze Platten:{{{#!vorlage Befehl sudo mdadm --examine --scan --config=/etc/mdadm/mdadm.conf >> /etc/mdadm/mdadm.conf}}} = Links = * [http://linux.die.net/man/8/mdadm Manpage]{en} zu '''mdadm''' * [http://linux.die.net/man/5/mdadm.conf Manpage]{en} zu '''mdadm.conf''' * [https://raid.wiki.kernel.org Linux Raid] {en} - Dokumentation im Wiki von Kernel.org * [http://man-wiki.net/index.php/8:mdadm mdadm Dokumentation] {en} * [http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch26_:_Linux_Software_RAID Quick HOWTO - Linux Software RAID] {en} - ein weiteres RAID-Howto # tag: Hardware, Server, RAID