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

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


==Prüfung der Datenträger auf (baldigen) Defekt==
=mdadm=  
*Über [[Hardware:Storage:smart|smart]] z.B. mit [[Linux:Befehl:smartctl|smartctl]] prüfen.
**Short-, Long- und Offline-Test


==Beschriftung==
*[[mdadm|mdadm]] bildet die Schnittstelle zu den RAID-Funktionen des Kernels.  
*Datentrager beim Einbau eindeutig beschriften.
*Am besten nimmt man dazu die Seriennummer.
 
===Seriennummer herausfinden===
*Ein Terminal öffnen.
 
====hdparm====
 
# hdparm -i /dev/sda | grep SerialNo
 
*Mehr Info: [[Linux:Befehl:hdparm|Linux:Befehl:hdparm]]
 
==Datenträger löschen==
*Wenn die vorherige Nutzung der Datenträger unklar ist, Datenträger löschen.
 
===dd===
*Kapazität des Datenträgers sda: 1,8 TiB
 
*Vollständig - Ist sicher, aber zeitaufwendig.
# dd if=/dev/zero of=/dev/sda status=progress
 
*Teilweise - Ist schnell, aber die vorherige Nutzung des Datenträgers sollte bekannt sein.
# dd if=/dev/zero of=/dev/sda bs=1M count=2
 
2+0 Datensätze ein
2+0 Datensätze aus
2097152 bytes (2,1 MB, 2,0 MiB) copied, '''0,0952489 s''', 22,0 MB/s
 
*Mehr Info:[[Linux:Befehl:dd|Linux:Befehl:dd]]
 
==Partitionierung==
*Alle Datenträger des geplanten RAIDs identisch partitionieren.
===fdisk===
====Bezeichnungen der Datenträger herausfinden====
#fdisk -l
 
===Neue, leere Partitionstabelle auf dem Laufwerk erstellen mit [[Linux:Befehl:fdisk|fdisk]]===
 
====Wechsel in interaktiven Modus====
 
# fdisk /dev/sdc
Welcome to fdisk (util-linux 2.33.1).                                                                                                           
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
 
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xdfca4904.
Command (m for help):
 
====Disklabel festlegen====
 
GPT oder DOS (MBR)?
 
Es soll eine GPT (GUID-Partition-Table) angelegt werden.
 
Command (m for help): '''g'''
 
Created a new GPT disklabel (GUID: 748568BC-EC8C-F34A-B822-45C2E267CFFB).
 
====Partitionstabelle anlegen====
 
 
Command (m for help): '''n'''
 
Partition number (1-128, default 1):
First sector (2048-3907029134, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-3907029134, default 3907029134): '''+1842G'''
 
Created a new partition 1 of type 'Linux filesystem' and of size 1,8 TiB.
 
====Partition als RAID-Partition markieren====
 
Ändern vom Partitionstyp "Linux Filesystem" auf "Linux RAID".
 
Command (m for help): '''t'''
 
Selected partition 1
Partition type (type L to list all types): '''29'''
 
Changed type of partition 'Linux filesystem' to 'Linux RAID'.
 
=Software-RAID anlegen=
 
*Das Hauptwerkzeug für alle Arbeiten an Software-RAIDs unter Linux ist [[Linux:Befehl:mdadm|mdadm]].
 
*mdadm bildet die Schnittstelle zu den RAID-Funktionen des Kernels.  


*Hiermit werden auch RAID-Verbunde erstellt.
*Hiermit werden auch RAID-Verbunde erstellt.


==Software-RAID 1 über zwei Partitionen==
==RAID anlegen==
 
*Z.B über zwei Partitionen.
*z.B mit den Partitionen sde1 und sdf1:
  # mdadm --create /dev/Name_des_RAIDs --auto md --level=RAID-Level --raid-devices=Anzahl_der_Partitionen /dev/Name_der_Partition /dev/Name_der_Partition
  # mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/sde1 /dev/sdf1
 
==Software-RAID 5 über vier Partitionen==
 
*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=
=Dateisystem=


*Um den RAID-Verbund als normales Speicherlaufwerk zu nutzen, muss noch ein Dateisystem darauf erstellt und dieses in das System eingebunden werden, z.B. ext4.
*Um den RAID-Verbund als Datenträger zu nutzen, muss noch ein Dateisystem erstellt werden, z. B. ext4.  
 
==RAID 1==
 
# mkfs.ext4 /dev/md0
 
==RAID 0, 5, 6 oder 10==
*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. [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.


==[[Hardware:Storage:RAID#Alignment|Alignment (Ausrichtung)]]==
==Anlegen==
*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 Performance zu erzielen, sollten die Größen aufeinander abgestimmt sein.


===Ermittlung der Chunk Size===
# mkfs.ext4 /dev/Name_des_RAIDs


# mdadm -D /dev/md0 | grep "Chunk Size"
==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.


*Bei einem RAID 5 mit Standardeinstellungen liefert dies z.B.:
  # mkfs.ext4 -b 4096 -E stride=128,stripe-width=384 /dev/Name_des_RAIDs
 
    Chunk Size : 512K
 
*Es werden also 512 [https://de.wikipedia.org/wiki/Byte#Vergleichstabelle KiB] Chunks verwendet.
 
===Änderung der Chunk Size===
*Chunk Size auf 64 KiB ändern.
*Macht nur Sinn, wenn auf dem RAID hauptsächlich sehr kleine Dateien geschrieben bzw. gelesen werden sollen.
 
# mdadm --grow -c 64 /dev/md0
 
===Berechnung des Alignments===
*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 hier '''128 * 3 = 384'''.
 
*Details zur Anzahl der effektiv nutzbaren Partitionen findet man im Artikel [[Hardware:Storage:RAID#RAID-Level|Hardware:Storage:RAID]].
 
*Sind die Parameter ermittelt, wird das Dateisystem erstellt:
 
  # mkfs.ext4 -b 4096 -E stride=128,stripe-width=384 /dev/md0


=RAID mounten=
=RAID mounten=
Zeile 160: Zeile 28:
*Das RAID muss noch in die Verzeichnisstruktur eingebunden werden.  
*Das RAID muss noch in die Verzeichnisstruktur eingebunden werden.  


*Dies geschieht einfach mittels mount, z.B. am Mountpunkt /media/daten.
*Dies geschieht einfach mittels mount, z. B. am Mountpunkt /media/daten.


==Manuell und transient (nicht dauerhaft)==
==Manuell und transient (nicht dauerhaft)==


  # mount /dev/md0 /media/daten
  # mount /dev/Name_des_RAIDs /media/daten


==Automatisch und persistent (dauerhaft)==
==Automatisch und persistent (dauerhaft)==
*Öffnen der fstab mit dem Editor vi.
# vi /etc/fstab


*Damit das System beim Start das Dateisystem selber einhängt, muss eine entsprechende Zeile in die Datei '''/etc/fstab''' eingetragen werden.
*Eintrag für das RAID vornehmen.
*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.
*Besser man verwendet die UUID, diese ist absolut eindeutig.


Zeile 176: Zeile 45:


===UUID auslesen===
===UUID auslesen===
Name des RAID-Array hier '''md0'''.


# blkid –c /dev/md0
====blkid====


  /dev/md0: UUID="e5e4d736-b1a8-4400-bda6-1a4c44bbe783" TYPE="ext4"
  # blkid –c /dev/Name_des_RAIDs


=mdadm.conf=
/dev/Name_des_RAIDs: UUID="'''ausgelesene UUID'''" TYPE="Art_des_Dateisystems"


*Alle Informationen zum RAID werden auf jeder verwendeten Partition in den sog. [[Linux:Software-RAID#RAID Superblock|Superblock]] geschrieben (auch Metadaten genannt).
Mehr Info: [[blkid|blkid]]


*Der Kernel sucht beim Starten automatisch nach diesen Superblöcken und startet alle voll funktionsfähigen RAIDs, ohne dass eine Konfigurationsdatei nötig ist.
=Über Ausfälle per E-Mail benachrichtigt werden=
 
*Dafür muss für mdadm eine Konfigurationsdatei erstellt werden.
*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.
*Mehr Info: [[mdadm#mdadm.conf|mdadm.conf]]
 
==mdadm.conf erstellen==
*Ü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"
  # su -c "/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf"


==Über Ausfälle am RAID per E-Mail benachrichtigt werden==
==mdadm.conf editieren==
*In der mdadm.conf muss dafür in der Zeile...
*In der mdadm.conf muss dafür in der Zeile...
  '''MAILADDR root'''  
  '''MAILADDR root'''  
*...root durch die gewünschte E-Mail-Adresse ersetzt werden.
*...root durch die gewünschte E-Mail-Adresse ersetzt werden.
  '''MAILADDR xzy@abc.org'''
  '''MAILADDR xzy@abc.org'''
*Dafür muss der E-Mail-Versand durch das System eingerichtet sein, z.B. via Postfix als Satellitensystem.
*Dafür muss der E-Mail-Versand durch das System eingerichtet sein, z. B. via Postfix als Satellitensystem.


=RAID-Optimierung=
=RAID-Optimierung=
Zeile 214: Zeile 73:


*Bei einem Software-RAID ist es empfehlenswert den Schreib-Cache von Datenträger zu deaktivieren, um bei einem Stromausfall keinen Datenverlust zu erleiden.
*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).
*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===
===Status Datenträger-Cache überprüfen===
Zeile 240: Zeile 99:
===Datenträger-Cache deaktivieren===
===Datenträger-Cache deaktivieren===


*Mit einem Editor die Konfigurationsdatei von hdparm unter /etc/hdparm.conf öffnen, z.B. mit vim.
*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.
*Dort in der Zeile '''#write_cache = off''' Auskommentierung aufheben und Änderung speichern.


Zeile 266: Zeile 125:
*Der Datenträger-Cache ist nun deaktiviert.
*Der Datenträger-Cache ist nun deaktiviert.


=weiterführende Artikel=
=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:Wartung]]
 
[[Linux:Software-RAID:Fehlerbehebung|Linux:Software-RAID:Fehlerbehebung]]
 
[[RAID:Komplexe Aufgaben|RAID:Komplexe Aufgaben]]


[[Linux:Software-RAID:Wartung]]
[[Linux:Software-RAID|Linux:Software-RAID]]


[https://wiki.itw-berlin.net/index.php?title=Linux:Software-RAID:Fehlerbehebung Linux:Software-RAID:Fehlerbehebung]
[[Linux:Software-RAID:Vorbereitung|Linux:Software-RAID:Vorbereitung]]


=Quellen=
=Quellen=
Zeile 279: Zeile 159:
[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]
[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