Zum Inhalt springen

Linux/RAID/Erstellung: Unterschied zwischen den Versionen

Aus Foxwiki
Robertquies (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
K Textersetzung - „line>“ durch „line copy>“
 
(349 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
==Anlegen eines RAID==
'''Linux/RAID/Erstellung''' - Einrichtung eines Software-RAID


===Festplatten-Cache deaktivieren===
== Beschreibung ==
[[mdadm|mdadm]] - Schnittstelle zu den RAID-Funktionen des Kernels


*Bei einem Hardware-RAID und auch bei einem Software-RAID ist es empfehlenswert den Schreibcache von Festplatten zu deaktivieren, um bei einem Stromausfall keinen Datenverlust zu erleiden.
== RAID hinzufügen ==
*Ausnahme sind dabei SSDs mit integrierten Kondensatoren, die den Cache-Inhalt bei einem Stromausfall noch auf den Flash-Speicher schreiben (z.B. Intel DC S3510 Series SSDs).
; Analyse
Hier sind die Laufwerke <tt>/dev/sda</tt> bereits <tt>/dev/sdb</tt> in RAID1-Arrays konfiguriert, welche das Betriebssystem enthalten
<syntaxhighlight lang="bash" highlight="1" line copy>
cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[2] sdb3[1]
234405504 blocks super 1.2 [2/2] [UU]
bitmap: 0/2 pages [0KB], 65536KB chunk


====Status Festplatten-Cache überprüfen - hdparm====
md1 : active raid1 sda2[2] sdb2[1]
523712 blocks super 1.2 [2/2] [UU]


*hdparm
md0 : active raid1 sda1[2] sdb1[1]
**ist ein Computerprogramm zum Lesen und Setzen von Parametern für ATA-Laufwerke unter Linux und Windows.
33521664 blocks super 1.2 [2/2] [UU]
**steht unter der BSD-Lizenz und ist somit freie Software.
**ist bei fast allen Distributionen standardmäßig installiert.


*Überprüfen, ob der Write-Cache einer Festplatte aktiviert oder deaktiviert ist. Hier bei der Festplatte sda.
unused devices: <none>
</syntaxhighlight>


# hdparm -i /dev/sda
; Weitere Laufwerke
Es sind jedoch zwei weitere Laufwerke vorhanden (<tt>/dev/sdc</tt> und <tt>/dev/sdd</tt>), die wir als Daten-Laufwerk in einem RAID1-Array nutzen möchten


Model=INTEL SSDMCEAC060B3, FwRev=LLLi, SerialNo=CVLI303201QK060K
Dazu muss zuerst das RAID-Array hinzugefügt werden
Config={ Fixed }
<syntaxhighlight lang="bash" highlight="1" line copy>
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
mdadm --create --verbose /dev/md3 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSec=16
</syntaxhighlight>
CurrCHS=16383/16/63, CurSecs=16514064, LBA=yes, LBAsects=117231408
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes:  pio0 pio3 pio4
DMA modes:  mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
AdvancedPM=yes: unknown setting '''WriteCache=enabled'''
Drive confirms to: unknown:  ATA/ATAP-2,3,4,5,6,7


  * signifies the current active mode
Anschließend sollte die RAID-Konfiguration wie folgt aussehen
<syntaxhighlight lang="bash" highlight="1" line copy>
cat /proc/mdstat
  Personalities : [raid1]
md3 : active raid1 sdc1[0] sdd1[1]
2095040 blocks super 1.2 [2/2] [UU]
[====>................] resync = 32.7% (418656/2095040) finish=4.2min speed=131219K/sec


*'''WriteCache=enabled''': Festplatten-Cache ist hier also zur Zeit aktiviert.
md2 : active raid1 sda3[2] sdb3[1]
234405504 blocks super 1.2 [2/2] [UU]
bitmap: 0/2 pages [0KB], 65536KB chunk


*Mit einem Editor die Konfigurationsdatei von hdparm unter /etc/hdparm.conf öffnen, z.B. mit vim.
md1 : active raid1 sda2[2] sdb2[1]
*Dort die Zeile '''#write_cache = off''' auskommentieren und Änderung speichern.
523712 blocks super 1.2 [2/2] [UU]


  # -W Disable/enable the IDE drive's write-caching feature
  md0 : active raid1 sda1[2] sdb1[1]
  write_cache = off
  33521664 blocks super 1.2 [2/2] [UU]


*Nach einem Systemneustart sieht das Ergebnis wie folgt aus:
unused devices: <none>
</syntaxhighlight>


# hdparm -i /dev/sda
Nun kann die neue Partition nach Belieben formatiert (hier EXT4) und eingehängt werden
<syntaxhighlight lang="bash" highlight="1" line copy>
mkfs.ext4 /dev/md3
mount /dev/md3 /mnt
</syntaxhighlight>


Model=INTEL SSDMCEAC060B3, FwRev=LLLi, SerialNo=CVLI303201QK060K
; Partitionsgröße
Config={ Fixed }
Alle verwendeten Partitionen eines RAIDs haben die gleiche Größe.
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSec=16
CurrCHS=16383/16/63, CurSecs=16514064, LBA=yes, LBAsects=117231408
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes:  pio0 pio3 pio4
DMA modes:  mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
AdvancedPM=yes: unknown setting '''WriteCache=disabled'''
Drive confirms to: unknown:  ATA/ATAP-2,3,4,5,6,7


* signifies the current active mode
== RAID anlegen ==
; Beispiel
Zwei Partitionen
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo mdadm --create /dev/Name_des_RAIDs \
--auto md \
--level=RAID-Level \
--raid-devices=Anzahl_der_Partitionen \
/dev/Name_der_Partition /dev/Name_der_Partition
</syntaxhighlight>


*Der Festplatten-Cache ist nun deaktiviert.
== Dateisystem ==
Um den RAID-Verbund als Datenträger zu nutzen, muss noch ein Dateisystem erstellt werden, beispielsweise ext4


===Partitionierung===
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo mkfs.ext4 /dev/Name_des_RAIDs
</syntaxhighlight>


Achtung!
== Anwendung ==
Veränderungen an den Festplatten löschen die vorherigen Inhalte der beteiligten Festplatten.
=== RAID 1 ===
Es ist daher dringend angeraten, vorher eine Datensicherung durchzuführen.
; RAID 1 über zwei Partitionen
Zunächst müssen die Bezeichnungen der zu verwenden Festplatten bekannt sein.
Partitionen sde1 und sdf1
Auf jeder Festplatte wird eine Partition erstellt, die (fast) den gesamten Platz der Platte einnimmt. Im Beispiel wird das Laufwerk /dev/sda vorbereitet.
<syntaxhighlight lang="bash" highlight="1" line copy>
Die Schritte müssen für jedes Laufwerk, das am RAID teilnehmen soll, mit der entsprechenden Bezeichnung vom eigenen System wiederholt werden:
sudo mdadm --create /dev/md0 \
--auto md \
--level=1 \
--raid-devices=2
/dev/sde1 /dev/sdf1
</syntaxhighlight>


*Eine neue, leere Partitionstabelle auf dem Laufwerk erstellen.
=== RAID 5  ===
{|class="wikitable"
; RAID 5 über vier Partitionen
|+
Partitionen sde1, sdf1, sdg1 und sdh1
|Für neuere PCs mit UEFI Bios: || Für ältere PCs mit altem Bios:
<syntaxhighlight lang="bash" highlight="1" line copy>
|-
sudo mdadm --create /dev/md0 --auto md --level=5 --raid-devices=4 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1
|# parted /dev/sda mklabel gpt || # parted /dev/sda mklabel msdos
</syntaxhighlight>
|}


*Eine einzelne Partition erstellen:
=== RAID 6 ===
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo mdadm --create --verbose /dev/md3 --level=6 --raid-devices=4 /dev/sda /dev/sdb missing  missing
</syntaxhighlight>


# parted -a optimal -- /dev/sda mkpart primary 2048s -8192s 
=== Komplexe RAIDs ===
Bei komplexeren Verbunden wie RAID 0, 5, 6 oder 10 sollte auf das optimale [[RAID#Alignment (Ausrichtung)|Alignment]] geachtet werden, um optimale Leistung zu ermöglichen
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo mkfs.ext4 -b 4096 -E stride=128,stripe-width=384 /dev/Name_des_RAIDs
</syntaxhighlight>


*Möchte man die gesamte Platte nutzen, gibt man statt "2048s -8192s" einfach "0% 100%" an.
<noinclude>


*Die neue Partition als RAID-Partition markieren:
== Anhang ==
=== Siehe auch ===
{{Special:PrefixIndex/Linux/RAID}}


# parted /dev/sda set 1 raid on
=== Links ===
==== Weblinks ====
# [https://wiki.ubuntuusers.de/Software-RAID/ https://wiki.ubuntuusers.de/Software-RAID/]
# [https://www.thomas-krenn.com/de/wiki/Linux_Software_RAID https://www.thomas-krenn.com/de/wiki/Linux_Software_RAID]
# [https://wiki.hetzner.de/index.php/Seriennummern_von_Festplatten_und_Hinweise_zu_defekten_Festplatten#Ermitteln_der_Seriennummer_einer_Festplatte https://wiki.hetzner.de/index.php/Seriennummern_von_Festplatten_und_Hinweise_zu_defekten_Festplatten#Ermitteln_der_Seriennummer_einer_Festplatte]


Hinweis:
[[Kategorie:Linux/RAID]]
Es werden bewusst 8192 Sektoren am Ende der Festplatte ungenutzt gelassen, um für Ausfälle gewappnet zu sein.
Falls nach Jahren keine baugleiche Festplatte mehr beschafft werden kann, ermöglicht es der frei gelassene Platz auch Laufwerke als Ersatz zu nehmen, die einige Sektoren weniger haben.
Am Anfang des Laufwerks werden 2048 Sektoren ungenutzt gelassen, um ein optimales Alignment zu ermöglichen.


*Über den Parameter -a optimal kümmert sich parted um weitere Anpassungen, falls nötig.
</noinclude>
 
*Es ist auch möglich, die Laufwerke unpartitioniert zusammenzufassen.
 
*Dies birgt jedoch einige Nachteile.
**Zunächst verkompliziert es das Alignment und kann damit zu Geschwindigkeitseinbußen führen.
**Außerdem kann im Falle eines Defekts nur ein Laufwerk mit genau gleicher oder höherer Sektorzahl als Ersatz benutzt werden.
 
===Software-RAID anlegen===
 
*Das Hauptwerkzeug für alle Arbeiten an Software-RAIDs unter Linux ist mdadm.
 
*Es bildet die Schnittstelle zu den RAID-Funktionen des Kernels.
 
*Mehr Informationen finden sich im Abschnitt [[Linux:Software-RAID#MDADM|MDADM]]. Hiermit werden auch RAID-Verbunde erstellt:
 
====RAID 1 über zwei Partitionen, sde1 und sdf1:====
 
# mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/sde1 /dev/sdf1
 
====Software-RAID 5 über vier Partitionen:====
 
# mdadm --create /dev/md0 --auto md --level=5 --raid-devices=4 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1
 
Für weitere Infos siehe [[Linux:Befehl:mdadm|Linux:Befehl:mdadm]].
 
===Dateisystem===
 
*Um den RAID-Verbund als normales Speicherlaufwerk zu nutzen, muss noch ein Dateisystem darauf erstellt und dieses ins System eingebunden werden, z.B. ext4.
*Im Falle eines RAID 1 ist dies recht einfach:
 
# mkfs.ext4 /dev/md0
 
*Bei komplexeren Verbunden wie RAID 0, 5, 6 oder 10 sollte das Dateisystem auf das RAID angepasst werden, um optimale Leistung zu ermöglichen.
 
*Dafür muss zunächst die sog. "Chunk Size", also die Datenmenge, die in einem einzelnen Schreibvorgang geschrieben wird, bekannt sein.
 
*Diese lässt sich wie folgt ermitteln:
 
# mdadm -D /dev/md0 | grep "Chunk Size"
 
*Bei einem RAID 5 mit Standardeinstellungen liefert dies Beispielsweise:
 
    Chunk Size : 512K
 
*Es werden also 512 KiB Chunks verwendet.
 
*Hieraus können, zusammen mit der Anzahl der Partitionen und des RAID-Levels, die Dateisystem-Parameter berechnet werden.
 
*Am einfachsten geht das mittels eines [https://busybox.net/~aldot/mkfs_stride.html Raid-Stride-Calculators].
 
*Alternativ können die Parameter auch von Hand ermittelt werden:
**'''block-size''' - Die Größe der Dateisystemblöcke in Bytes. Heutzutage werden fast ausschließlich 4096 Byte (4 KiB) Blöcke verwendet.
**'''stride-size''' - Die Chunk Size umgerechnet in Dateisystemblöcke. Bei 512 KiB Chunk Size mit 4 KiB Blöcken ergibt sich (512 KiB/ 4 KiB) = 128.
**'''stripe-width''' - Die Größe eines Datenstreifens, also die Menge an Blöcken, die geschrieben wird, wenn ein voller Chunk auf jedes Laufwerk geschrieben wird. Diese berechnet sich aus (stride-size * Anzahl der effektiv nutzbaren Partitionen).
Bei einem RAID 5 über 4 Partitionen ergibt sich beispielsweise (128 * 3) = 384.
 
*Details zur Anzahl der effektiv nutzbaren Partitionen finden sich im Abschnitt [[Linux:Software-RAID#RAID-Level|RAID-Level]].
 
*Sind die Parameter ermittelt, wird das Dateisystem erstellt:
 
# mkfs.ext4 -b 4096 -E stride=128,stripe-width=384 /dev/md0
 
===RAID mounten===
 
*Das RAID muss noch in die Verzeichnisstruktur eingebunden werden.
 
*Dies geschieht einfach mittels mount, z.B. am Mountpunkt /media/daten.
 
# mount /dev/md0 /media/daten
 
*Damit das System beim Start das Dateisystem selber einhängt, muss eine entsprechende Zeile in die Datei /etc/fstab eingetragen werden:
 
/dev/md0    /media/daten      ext4      defaults 0 2
 
===mdadm.conf aktualisieren===
 
*Alle Informationen zum RAID werden auf jeder verwendeten Partition in den sog. [[Linux:Software-RAID#RAID Superblock|Superblock]] geschrieben (auch Metadaten genannt).
 
*Der Kernel sucht beim Starten automatisch nach diesen Superblöcken und startet alle voll funktionsfähigen RAIDs, ohne dass eine Konfigurationsdatei nötig ist.
 
*Trotzdem kann es sinnvoll sein, eine Konfigurationsdatei zu erstellen, z.B. wenn man über Ausfälle am RAID per E-Mail benachrichtigt werden möchte.
 
*Die Konfigurationsdatei kann bequem mit einem Skript von mdadm erstellt werden und enthält dann direkt alle Definitionen aller momentan aktiven RAIDs:
 
# su -c "/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf"
 
Achtung!
Je nach Konfiguration kommt es zu Fehlern in der mdadm.conf.
Daher ist es sinnvoll diese zu überprüfen. Typische Fehler sind, wenn das RAID-System nicht wie im Beispiel als md0 sondern als md127 nach einem Neustart angezeigt wird.
Das System kommt mit der Option "-name" in der mdadm.conf nicht klar.
Diese Option auskommentieren und System neu starten.
Um bei Ausfällen per E-Mail benachrichtigt zu werden, muss in der neuen Datei
/etc/mdadm/mdadm.conf die Zeile
 
  '''MAILADDR root'''
 
'''root''' durch die gewünschte E-Mail-Adresse ersetzt werden.
Dafür muss der E-Mail-Versand durch das System eingerichtet sein, z.B. via Postfix als Satellitensystem.
 
*Über die Konfigurationsdatei können sehr viele Details der RAIDs angepasst werden.
 
*Nähere Informationen liefert die Manpage von [https://linux.die.net/man/5/mdadm.conf mdadm.conf].
 
*Generell gilt bei neu aufgesetzten RAIDs allerdings: Je weniger, desto besser.
 
*Standardmäßig werden alle wichtigen Informationen (Metadaten) direkt auf den beteiligten Partitionen gespeichert, auch wenn nachträglich Änderungen vorgenommen werden.
 
*Andererseits haben die Parameter aus der mdadm.conf Vorrang.
 
*So ist es z.B. möglich, alle am RAID beteiligten Partitionen in der Datei anzugeben.
 
*Ändert sich jedoch die Reihenfolge der Festplatten (z.B. bei Austausch des Controllers, Umstecken der Kabel, Anschließen eines USB-Sticks etc.) ließe sich das RAID nicht mehr starten.
 
*Auch dann nicht, wenn in den Superblöcken der RAID-Laufwerke die richtigen Metadaten (unabhängig von den Buchstabenbezeichnungen) gespeichert sind.
 
*Dieses Problem lässt sich nur dann beheben, wenn die falschen Angaben in der mdadm.conf korrigiert oder explizit übergangen werden.
 
*Damit die Konfiguration beim Booten verfügbar ist, muss schließlich noch die Initrd aktualisiert werden:
 
# update-initramfs -u -k all
 
[[Category:Linux:Storage]]

Aktuelle Version vom 11. Mai 2025, 13:43 Uhr

Linux/RAID/Erstellung - Einrichtung eines Software-RAID

Beschreibung

mdadm - Schnittstelle zu den RAID-Funktionen des Kernels

RAID hinzufügen

Analyse

Hier sind die Laufwerke /dev/sda bereits /dev/sdb in RAID1-Arrays konfiguriert, welche das Betriebssystem enthalten

cat /proc/mdstat
 Personalities : [raid1]
 md2 : active raid1 sda3[2] sdb3[1]
 234405504 blocks super 1.2 [2/2] [UU]
 bitmap: 0/2 pages [0KB], 65536KB chunk

 md1 : active raid1 sda2[2] sdb2[1]
 523712 blocks super 1.2 [2/2] [UU]

 md0 : active raid1 sda1[2] sdb1[1]
 33521664 blocks super 1.2 [2/2] [UU]

 unused devices: <none>
Weitere Laufwerke

Es sind jedoch zwei weitere Laufwerke vorhanden (/dev/sdc und /dev/sdd), die wir als Daten-Laufwerk in einem RAID1-Array nutzen möchten

Dazu muss zuerst das RAID-Array hinzugefügt werden

mdadm --create --verbose /dev/md3 --level=1 --raid-devices=2 /dev/sdc /dev/sdd

Anschließend sollte die RAID-Konfiguration wie folgt aussehen

cat /proc/mdstat
 Personalities : [raid1]
 md3 : active raid1 sdc1[0] sdd1[1]
 2095040 blocks super 1.2 [2/2] [UU]
 [====>................] resync = 32.7% (418656/2095040) finish=4.2min speed=131219K/sec

 md2 : active raid1 sda3[2] sdb3[1]
 234405504 blocks super 1.2 [2/2] [UU]
 bitmap: 0/2 pages [0KB], 65536KB chunk

 md1 : active raid1 sda2[2] sdb2[1]
 523712 blocks super 1.2 [2/2] [UU]

 md0 : active raid1 sda1[2] sdb1[1]
 33521664 blocks super 1.2 [2/2] [UU]

 unused devices: <none>

Nun kann die neue Partition nach Belieben formatiert (hier EXT4) und eingehängt werden

mkfs.ext4 /dev/md3
mount /dev/md3 /mnt
Partitionsgröße

Alle verwendeten Partitionen eines RAIDs haben die gleiche Größe.

RAID anlegen

Beispiel

Zwei Partitionen

sudo mdadm --create /dev/Name_des_RAIDs \
--auto md \
--level=RAID-Level \
--raid-devices=Anzahl_der_Partitionen \
/dev/Name_der_Partition /dev/Name_der_Partition

Dateisystem

Um den RAID-Verbund als Datenträger zu nutzen, muss noch ein Dateisystem erstellt werden, beispielsweise ext4

sudo mkfs.ext4 /dev/Name_des_RAIDs

Anwendung

RAID 1

RAID 1 über zwei Partitionen

Partitionen sde1 und sdf1

sudo mdadm --create /dev/md0 \
--auto md \
--level=1 \
--raid-devices=2 
/dev/sde1 /dev/sdf1

RAID 5

RAID 5 über vier Partitionen

Partitionen sde1, sdf1, sdg1 und sdh1

sudo mdadm --create /dev/md0 --auto md --level=5 --raid-devices=4 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1

RAID 6

sudo mdadm --create --verbose /dev/md3 --level=6 --raid-devices=4 /dev/sda /dev/sdb missing  missing

Komplexe RAIDs

Bei komplexeren Verbunden wie RAID 0, 5, 6 oder 10 sollte auf das optimale Alignment geachtet werden, um optimale Leistung zu ermöglichen

sudo mkfs.ext4 -b 4096 -E stride=128,stripe-width=384 /dev/Name_des_RAIDs


Anhang

Siehe auch

Links

Weblinks

  1. https://wiki.ubuntuusers.de/Software-RAID/
  2. https://www.thomas-krenn.com/de/wiki/Linux_Software_RAID
  3. https://wiki.hetzner.de/index.php/Seriennummern_von_Festplatten_und_Hinweise_zu_defekten_Festplatten#Ermitteln_der_Seriennummer_einer_Festplatte