Zum Inhalt springen

Linux/RAID/Erstellung: Unterschied zwischen den Versionen

Aus Foxwiki
Robertquies (Diskussion | Beiträge)
K Textersetzung - „line>“ durch „line copy>“
 
(102 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Das Hauptwerkzeug für alle Arbeiten an Software-RAIDs unter Linux ist [[Linux:Befehl:mdadm|mdadm]].
'''Linux/RAID/Erstellung''' - Einrichtung eines Software-RAID


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


*mdadm bildet die Schnittstelle zu den RAID-Funktionen des Kernels.  
== RAID hinzufügen ==
; 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


*Hiermit werden auch RAID-Verbunde erstellt.
md1 : active raid1 sda2[2] sdb2[1]
523712 blocks super 1.2 [2/2] [UU]


==RAID anlegen==
md0 : active raid1 sda1[2] sdb1[1]
*Z.B über zwei Partitionen.
33521664 blocks super 1.2 [2/2] [UU]
# 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=
unused devices: <none>
</syntaxhighlight>


*Um den RAID-Verbund als Datenträger zu nutzen, muss noch ein Dateisystem erstellt werden, z.B. ext4.
; 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


==RAID 1==
Dazu muss zuerst das RAID-Array hinzugefügt werden
<syntaxhighlight lang="bash" highlight="1" line copy>
mdadm --create --verbose /dev/md3 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
</syntaxhighlight>


  # mkfs.ext4 /dev/Name_des_RAIDs
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


==RAID 0, 5, 6 oder 10==
md2 : active raid1 sda3[2] sdb3[1]
*Bei komplexeren Verbunden wie RAID 0, 5, 6 oder 10 sollte das Dateisystem auf das RAID angepasst werden, um optimale Leistung zu ermöglichen.  
234405504 blocks super 1.2 [2/2] [UU]
*Dafür muss zunächst die sog. [https://raid.wiki.kernel.org/index.php/RAID_setup#Chunk_sizes '''Chunk Size'''], also die Datenmenge, die in einem einzelnen Schreibvorgang geschrieben wird, bekannt sein.
bitmap: 0/2 pages [0KB], 65536KB chunk


==[[Hardware:Storage:RAID#Alignment|Alignment (Ausrichtung)]]==
md1 : active raid1 sda2[2] sdb2[1]
*Datenträger, RAID-Verbunde und Dateisysteme fassen Daten jeweils für sich in Blöcke zusammen, bevor sie gespeichert werden.
523712 blocks super 1.2 [2/2] [UU]
*Diese Blöcke haben im Allgemeinen alle unterschiedliche Größen.
*Um eine optimale Performance zu erzielen, sollten die Größen aufeinander abgestimmt sein.


===Ermittlung der Chunk Size===
md0 : active raid1 sda1[2] sdb1[1]
33521664 blocks super 1.2 [2/2] [UU]


  # mdadm -D /dev/md0 | grep "Chunk Size"
  unused devices: <none>
</syntaxhighlight>


*Bei einem RAID 5 mit Standardeinstellungen liefert dies z.B.:
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>


    Chunk Size : 512K
; Partitionsgröße
Alle verwendeten Partitionen eines RAIDs haben die gleiche Größe.


*Es werden also 512 [https://de.wikipedia.org/wiki/Byte#Vergleichstabelle KiB] Chunks verwendet.
== 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>


===Änderung der Chunk Size===
== Dateisystem ==
*Chunk Size auf 64 KiB ändern.
Um den RAID-Verbund als Datenträger zu nutzen, muss noch ein Dateisystem erstellt werden, beispielsweise ext4
*Macht nur Sinn, wenn auf dem RAID hauptsächlich sehr kleine Dateien geschrieben bzw. gelesen werden sollen.


# mdadm --grow -c 64 /dev/md0
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo mkfs.ext4 /dev/Name_des_RAIDs
</syntaxhighlight>


===Berechnung des Alignments===
== Anwendung ==
*Hieraus können, zusammen mit der Anzahl der Partitionen und des RAID-Levels, die Dateisystem-Parameter berechnet werden.
=== RAID 1 ===
; RAID 1 über zwei Partitionen
Partitionen sde1 und sdf1
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo mdadm --create /dev/md0 \
--auto md \
--level=1 \
--raid-devices=2
/dev/sde1 /dev/sdf1
</syntaxhighlight>


*Am einfachsten geht das mittels eines [https://busybox.net/~aldot/mkfs_stride.html Raid-Stride-Calculators].
=== RAID 5  ===
; RAID 5 über vier Partitionen
Partitionen sde1, sdf1, sdg1 und sdh1
<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
</syntaxhighlight>


*Alternativ können die Parameter auch von Hand ermittelt werden.
=== RAID 6 ===
**'''block-size''' - Die Größe der Dateisystemblöcke in Bytes. Heutzutage werden fast ausschließlich '''4096 Byte''' (4 KiB) Blöcke verwendet.
<syntaxhighlight lang="bash" highlight="1" line copy>
**'''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'''.
sudo mdadm --create --verbose /dev/md3 --level=6 --raid-devices=4 /dev/sda /dev/sdb missing  missing
**'''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 hier '''128 * 3 = 384'''.
</syntaxhighlight>


*Details zur Anzahl der effektiv nutzbaren Partitionen findet man im Artikel [[Hardware:Storage:RAID#RAID-Level|Hardware:Storage:RAID]].
=== 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>


*Sind die Parameter ermittelt, wird das Dateisystem erstellt:
<noinclude>


# mkfs.ext4 -b 4096 -E stride=128,stripe-width=384 /dev/md0
== Anhang ==
=== Siehe auch ===
{{Special:PrefixIndex/Linux/RAID}}


=RAID mounten=
=== 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]


*Das RAID muss noch in die Verzeichnisstruktur eingebunden werden.
[[Kategorie:Linux/RAID]]


*Dies geschieht einfach mittels mount, z.B. am Mountpunkt /media/daten.
</noinclude>
 
==Manuell und transient (nicht dauerhaft)==
 
# mount /dev/md0 /media/daten
 
==Automatisch und persistent (dauerhaft)==
 
*Damit das System beim Start das Dateisystem selber einhängt, muss eine entsprechende Zeile in die Datei '''/etc/fstab''' eingetragen werden.
*Man kann zum beim Eintrag den Namen des RAIDs oder seine UUID ('''U'''niversally '''U'''nique '''Id'''entifier) verwenden.
*Bei Verwendung des Namens kann es u.U. zu Problemen führen.
*Besser man verwendet die UUID, diese ist absolut eindeutig.
 
UUID=''ausgelesene UUID''    /media/daten      ext4      defaults 0 2
 
===UUID auslesen===
Name des RAID-Array hier '''md0'''.
 
# blkid –c /dev/md0
 
/dev/md0: UUID="e5e4d736-b1a8-4400-bda6-1a4c44bbe783" TYPE="ext4"
 
=mdadm.conf=
 
*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.
 
*Über die Konfigurationsdatei können sehr viele Details der RAIDs angepasst werden.
 
*Generell gilt bei neu aufgesetzten RAIDs allerdings: Je weniger, desto besser.
 
*Nähere Informationen liefert die Manpage von [https://linux.die.net/man/5/mdadm.conf mdadm.conf].
 
==Erstellen der mdadm.conf==
 
*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"
 
==Über Ausfälle am RAID per E-Mail benachrichtigt werden==
*In der mdadm.conf muss dafür in der Zeile...
'''MAILADDR root'''
*...root durch die gewünschte E-Mail-Adresse ersetzt werden.
'''MAILADDR xzy@abc.org'''
*Dafür muss der E-Mail-Versand durch das System eingerichtet sein, z.B. via Postfix als Satellitensystem.
 
=RAID-Optimierung=
 
==Datenträger-Cache==
 
*Bei einem Software-RAID ist es empfehlenswert den Schreib-Cache von Datenträger zu deaktivieren, um bei einem Stromausfall keinen Datenverlust zu erleiden.
*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).
 
===Status Datenträger-Cache überprüfen===
 
*Überprüfen, ob der Write-Cache einer Datenträger aktiviert oder deaktiviert ist. Hier bei der Datenträger sda.
 
# hdparm -i /dev/sda
 
Model=INTEL SSDMCEAC060B3, FwRev=LLLi, SerialNo=CVLI303201QK060K
Config={ Fixed }
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=enabled'''
Drive confirms to: unknown:  ATA/ATAP-2,3,4,5,6,7
* signifies the current active mode
 
*'''WriteCache=enabled''': Datenträger-Cache ist hier also zur Zeit aktiviert.
 
===Datenträger-Cache deaktivieren===
 
*Mit einem Editor die Konfigurationsdatei von hdparm unter /etc/hdparm.conf öffnen, z.B. mit vim.
*Dort in der Zeile '''#write_cache = off''' Auskommentierung aufheben und Änderung speichern.
 
# -W Disable/enable the IDE drive's write-caching feature
write_cache = off
 
*Nach einem Systemneustart sieht das Ergebnis wie folgt aus:
 
# hdparm -i /dev/sda
 
Model=INTEL SSDMCEAC060B3, FwRev=LLLi, SerialNo=CVLI303201QK060K
Config={ Fixed }
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
 
*Der Datenträger-Cache ist nun deaktiviert.
 
=Anwendung=
==RAID 1 über zwei Partitionen anlegen==
 
*z.B mit den Partitionen sde1 und sdf1:
# mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/sde1 /dev/sdf1
 
==RAID 5 über vier Partitionen anlegen==
 
*z.B. mit den Partitionen sde1, sdf1, sdg1 und sdh1:
# mdadm --create /dev/md0 --auto md --level=5 --raid-devices=4 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1
 
=weitere Artikel zum Thema=
 
[[Linux:Software-RAID:Wartung|Linux:Software-RAID:Wartung]]
 
[[Linux:Software-RAID:Fehlerbehebung|Linux:Software-RAID:Fehlerbehebung]]
 
[[Linux:Software-RAID:Komplexe Aufgaben|Linux:Software-RAID:Komplexe Aufgaben]]
 
[[Linux:Software-RAID|Linux:Software-RAID]]
 
[[Linux:Software-RAID:Vorbereitung|Linux:Software-RAID:Vorbereitung]]
 
=Quellen=
[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]
 
[[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