|
|
(100 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 |
|
| |
|
| ==Dateisystem anlegen== | | 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
| |
| | |
| ==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]]
| |
| | |
| [[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]]
| |
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
- 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