Linux/Software-RAID/Anlegen: Unterschied zwischen den Versionen

Aus Foxwiki
Robertquies (Diskussion | Beiträge)
K Textersetzung - „  “ durch „ “
 
(231 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Partitionierung=
Das Hauptwerkzeug für alle Arbeiten an Software-RAIDs unter Linux ist mdadm.


*Zunächst müssen die Bezeichnungen der zu verwendenden Datenträger bekannt sein.
=mdadm=
*Auf jeder Datenträger wird eine Partition erstellt, die (fast) den gesamten Platz der Platte einnimmt. 
*Die Schritte müssen für jedes Laufwerk, das am RAID teilnehmen soll, mit der entsprechenden Bezeichnung vom eigenen System wiederholt werden:


==Neue, leere Partitionstabelle auf dem Laufwerk erstellen==
*[[mdadm|mdadm]] bildet die Schnittstelle zu den RAID-Funktionen des Kernels.


<!--fdisk statt parted-->
*Hiermit werden auch RAID-Verbunde erstellt.
===Neuere PCs mit UEFI Bios===
# parted /dev/sda mklabel gpt


===Ältere PCs mit altem Bios===
==RAID anlegen==
  # parted /dev/sda mklabel msdos
*Z.B über zwei Partitionen.
  # mdadm --create /dev/Name_des_RAIDs --auto md --level=RAID-Level --raid-devices=Anzahl_der_Partitionen /dev/Name_der_Partition /dev/Name_der_Partition


==Einzelne Partition erstellen==
=Dateisystem=


# parted -a optimal -- /dev/sda mkpart primary 2048s -8192s 
*Um den RAID-Verbund als Datenträger zu nutzen, muss noch ein Dateisystem erstellt werden, z.&nbsp;B.&nbsp;ext4.


*Möchte man die gesamte Platte nutzen, gibt man statt "2048s -8192s" einfach "0% 100%" an.
==Anlegen==
*Über den Parameter -a optimal kümmert sich parted um weitere Anpassungen, falls nötig.
*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.


  Hinweis:
  # mkfs.ext4 /dev/Name_des_RAIDs
Es werden bewusst 8192 Sektoren am Ende der Datenträger ungenutzt gelassen, um für Ausfälle gewappnet zu sein.
Falls nach Jahren keine baugleiche Datenträger 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.


==Neue Partition als RAID-Partition markieren==
==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.


  # parted /dev/sda set 1 raid on
  # mkfs.ext4 -b 4096 -E stride=128,stripe-width=384 /dev/Name_des_RAIDs


=Software-RAID anlegen=
=RAID mounten=


*Das Hauptwerkzeug für alle Arbeiten an Software-RAIDs unter Linux ist [[Linux:Befehl:mdadm|mdadm]].
*Das RAID muss noch in die Verzeichnisstruktur eingebunden werden.  
 
*mdadm bildet die Schnittstelle zu den RAID-Funktionen des Kernels.
 
*Hiermit werden auch RAID-Verbunde erstellt:
 
==RAID 1 über zwei Partitionen==
 
*z.B mit den 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==
*Dies geschieht einfach mittels mount, z.&nbsp;B.&nbsp;am Mountpunkt /media/daten.


*z.B. mit den Partitionen sde1, sdf1, sdg1 und sdh1:
==Manuell und transient (nicht dauerhaft)==
# mdadm --create /dev/md0 --auto md --level=5 --raid-devices=4 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1


=Dateisystem=
# mount /dev/Name_des_RAIDs /media/daten


*Um den RAID-Verbund als normales Speicherlaufwerk zu nutzen, muss noch ein Dateisystem darauf erstellt und dieses ins System eingebunden werden, z.B. ext4.  
==Automatisch und persistent (dauerhaft)==
*Öffnen der fstab mit dem Editor vi.


==Simples RAID: RAID 1==
# vi /etc/fstab


# mkfs.ext4 /dev/md0
*Eintrag für das RAID vornehmen.
*Besser man verwendet die UUID, diese ist absolut eindeutig.


==Komplexere RAIDs: RAID 0, 5, 6 oder 10==
UUID=''ausgelesene UUID''     /media/daten      ext4      defaults 0 2
*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.


==[[Hardware:Storage:RAID#Alignment|Alignment (Ausrichtung)]]==
===UUID auslesen===
*Datenträger, RAID-Verbunde und Dateisysteme fassen Daten jeweils für sich in Blöcke zusammen, bevor sie gespeichert werden.
*Diese Blöcke haben im Allgemeinen alle unterschiedliche Größen.
*Um eine optimale RAID-Leistung zu erzielen, sollten diese aufeinander abgestimmt sein.


===Ermittlung der Chunk Size===
====blkid====


  # mdadm -D /dev/md0 | grep "Chunk Size"
  # blkid –c /dev/Name_des_RAIDs


*Bei einem RAID 5 mit Standardeinstellungen liefert dies z.B.:
/dev/Name_des_RAIDs: UUID="'''ausgelesene UUID'''" TYPE="Art_des_Dateisystems"


    Chunk Size : 512K
Mehr Info: [[blkid|blkid]]


*Es werden also 512 KiB Chunks verwendet.  
=Über Ausfälle per E-Mail benachrichtigt werden=
*Dafür muss für mdadm eine Konfigurationsdatei erstellt werden.
*Mehr Info: [[mdadm#mdadm.conf|mdadm.conf]]
==mdadm.conf erstellen==


===Berechnung des Alignments===
# su -c "/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf"
*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].  
==mdadm.conf editieren==
*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.&nbsp;B.&nbsp;via Postfix als Satellitensystem.


*Alternativ können die Parameter auch von Hand ermittelt werden:
=RAID-Optimierung=
**'''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 Artikel [[Hardware:Storage:RAID|Hardware:Storage:RAID]].
==Datenträger-Cache==


*Sind die Parameter ermittelt, wird das Dateisystem erstellt:
*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.&nbsp;B.&nbsp;Intel DC S3510 Series SSDs).


# mkfs.ext4 -b 4096 -E stride=128,stripe-width=384 /dev/md0
===Status Datenträger-Cache überprüfen===


=RAID mounten=
*Überprüfen, ob der Write-Cache einer Datenträger aktiviert oder deaktiviert ist. Hier bei der Datenträger sda.


*Das RAID muss noch in die Verzeichnisstruktur eingebunden werden.
# hdparm -i /dev/sda


*Dies geschieht einfach mittels mount, z.B. am Mountpunkt /media/daten.
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


# mount /dev/md0 /media/daten
*'''WriteCache=enabled''': Datenträger-Cache ist hier also zur Zeit aktiviert.


*Damit das System beim Start das Dateisystem selber einhängt, muss eine entsprechende Zeile in die Datei /etc/fstab eingetragen werden:
===Datenträger-Cache deaktivieren===


/dev/md0    /media/daten      ext4      defaults 0 2
*Mit einem Editor die Konfigurationsdatei von hdparm unter /etc/hdparm.conf öffnen, z.&nbsp;B.&nbsp;mit vim.
*Dort in der Zeile '''#write_cache = off''' Auskommentierung aufheben und Änderung speichern.


=mdadm.conf aktualisieren=
# -W Disable/enable the IDE drive's write-caching feature
write_cache = off


*Alle Informationen zum RAID werden auf jeder verwendeten Partition in den sog. [[Linux:Software-RAID#RAID Superblock|Superblock]] geschrieben (auch Metadaten genannt).
*Nach einem Systemneustart sieht das Ergebnis wie folgt aus:


*Der Kernel sucht beim Starten automatisch nach diesen Superblöcken und startet alle voll funktionsfähigen RAIDs, ohne dass eine Konfigurationsdatei nötig ist.
# hdparm -i /dev/sda


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


*Die Konfigurationsdatei kann bequem mit einem Skript von mdadm erstellt werden und enthält dann direkt alle Definitionen aller momentan aktiven RAIDs:
*Der Datenträger-Cache ist nun deaktiviert.


# su -c "/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf"
=Anwendung=
==RAID 1 über zwei Partitionen anlegen==


Achtung!
*z.B mit den Partitionen sde1 und sdf1:
  Je nach Konfiguration kommt es zu Fehlern in der mdadm.conf.
  # mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/sde1 /dev/sdf1
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'''
==RAID 5 über vier Partitionen anlegen==


  '''root''' durch die gewünschte E-Mail-Adresse ersetzt werden.
*z.&nbsp;B.&nbsp;mit den Partitionen sde1, sdf1, sdg1 und sdh1:
Dafür muss der E-Mail-Versand durch das System eingerichtet sein, z.B. via Postfix als Satellitensystem.
  # mdadm --create /dev/md0 --auto md --level=5 --raid-devices=4 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1


*Über die Konfigurationsdatei können sehr viele Details der RAIDs angepasst werden.
==Dateisystem anlegen==


*Nähere Informationen liefert die Manpage von [https://linux.die.net/man/5/mdadm.conf mdadm.conf].
# mkfs.ext4 /dev/md0


*Generell gilt bei neu aufgesetzten RAIDs allerdings: Je weniger, desto besser.
=weitere Artikel zum Thema=


*Standardmäßig werden alle wichtigen Informationen (Metadaten) direkt auf den beteiligten Partitionen gespeichert, auch wenn nachträglich Änderungen vorgenommen werden.
[[Linux:Software-RAID:Wartung|Linux:Software-RAID:Wartung]]


*Andererseits haben die Parameter aus der mdadm.conf Vorrang.
[[Linux:Software-RAID:Fehlerbehebung|Linux:Software-RAID:Fehlerbehebung]]


*So ist es z.B. möglich, alle am RAID beteiligten Partitionen in der Datei anzugeben.
[[RAID:Komplexe Aufgaben|RAID:Komplexe Aufgaben]]


*Ändert sich jedoch die Reihenfolge der Datenträger (z.B. bei Austausch des Controllers, Umstecken der Kabel, Anschließen eines USB-Sticks etc.) ließe sich das RAID nicht mehr starten.
[[Linux:Software-RAID|Linux:Software-RAID]]


*Auch dann nicht, wenn in den Superblöcken der RAID-Laufwerke die richtigen Metadaten (unabhängig von den Buchstabenbezeichnungen) gespeichert sind.
[[Linux:Software-RAID:Vorbereitung|Linux:Software-RAID:Vorbereitung]]


*Dieses Problem lässt sich nur dann beheben, wenn die falschen Angaben in der mdadm.conf korrigiert oder explizit übergangen werden.
=Quellen=
[https://wiki.ubuntuusers.de/Software-RAID/ https://wiki.ubuntuusers.de/Software-RAID/]


*Damit die Konfiguration beim Booten verfügbar ist, muss schließlich noch die Initrd aktualisiert werden:
[https://www.thomas-krenn.com/de/wiki/Linux_Software_RAID https://www.thomas-krenn.com/de/wiki/Linux_Software_RAID]


# update-initramfs -u -k all
[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]]
[[Kategorie:Linux/Software-RAID]]

Aktuelle Version vom 28. Mai 2023, 08:02 Uhr

Das Hauptwerkzeug für alle Arbeiten an Software-RAIDs unter Linux ist mdadm.

mdadm

  • mdadm bildet die Schnittstelle zu den RAID-Funktionen des Kernels.
  • Hiermit werden auch RAID-Verbunde erstellt.

RAID anlegen

  • Z.B über zwei Partitionen.
# 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, z. B. ext4.

Anlegen

# mkfs.ext4 /dev/Name_des_RAIDs

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.
# mkfs.ext4 -b 4096 -E stride=128,stripe-width=384 /dev/Name_des_RAIDs

RAID mounten

  • Das RAID muss noch in die Verzeichnisstruktur eingebunden werden.
  • Dies geschieht einfach mittels mount, z. B. am Mountpunkt /media/daten.

Manuell und transient (nicht dauerhaft)

# mount /dev/Name_des_RAIDs /media/daten

Automatisch und persistent (dauerhaft)

  • Öffnen der fstab mit dem Editor vi.
# vi /etc/fstab
  • Eintrag für das RAID vornehmen.
  • Besser man verwendet die UUID, diese ist absolut eindeutig.
UUID=ausgelesene UUID     /media/daten      ext4      defaults 0 2

UUID auslesen

blkid

# blkid –c /dev/Name_des_RAIDs
/dev/Name_des_RAIDs: UUID="ausgelesene UUID" TYPE="Art_des_Dateisystems"

Mehr Info: blkid

Über Ausfälle per E-Mail benachrichtigt werden

  • Dafür muss für mdadm eine Konfigurationsdatei erstellt werden.
  • Mehr Info: mdadm.conf

mdadm.conf erstellen

# su -c "/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf"

mdadm.conf editieren

  • 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

Dateisystem anlegen

# mkfs.ext4 /dev/md0

weitere Artikel zum Thema

Linux:Software-RAID:Wartung

Linux:Software-RAID:Fehlerbehebung

RAID:Komplexe Aufgaben

Linux:Software-RAID

Linux:Software-RAID:Vorbereitung

Quellen

https://wiki.ubuntuusers.de/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