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

Aus Foxwiki
Robertquies (Diskussion | Beiträge)
Robertquies (Diskussion | Beiträge)
Zeile 81: Zeile 81:


  Command (m for help): '''g'''
  Command (m for help): '''g'''
 
  Created a new GPT disklabel (GUID: 748568BC-EC8C-F34A-B822-45C2E267CFFB).
  Created a new GPT disklabel (GUID: 748568BC-EC8C-F34A-B822-45C2E267CFFB).



Version vom 19. August 2020, 13:53 Uhr

Vorbereitung

Beschriftung

  • Datentrager beim Einbau eindeutig beschriften.
  • Am besten nimmt man dazu die Seriennummer.

Seriennummer herausfinden

  • Ein Terminal öffnen.

Mit udevadm

# /sbin/udevadm info --query=property --name=sda | grep ID_SERIAL

Mit hdparm

# hdparm -i /dev/sda | grep SerialNo
  • Mit "-i /dev/sda" übergibt man "hdparm" einen Parameter, der die konkrete Information zur Festplatte sda liefert.
  • Die zu überprüfende Festplatte kann jedoch von der Schnittstelle aus variieren:
   IDE / ATA Gerät : "-i /dev/hd[a-t]"
   SCSI / SATA Geräte : "-i /dev/sd[a-z]" 
  • Danach filtert man mit " | grep SerialNo" die Seriennummer der Festplatte aus der Ausgabe hinaus.
  • Wenn dieser Befehl einen Fehler zurück gibt, muss wahrscheinlich noch das Programm selbst installiert werden.
#apt install hdparm

Datenträger "säubern"

  • Oft ist die vorherige Nutzung der Datenträger unklar.
    • Es können z.B. noch Superblöcke vorhanden sein.

Vollständig

  • Kapazität des Datenträgers sda: 1,8 TiB
# dd if=/dev/zero of=/dev/sda
  • Der Datenträger sda wird so lange mit Nullen beschrieben bis er voll ist.
  • Ist sicher, aber zeitaufwendig.

Teilweise

# 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
  • Der Datenträger sda wird mit 2 Blöcken je 1 MiB mit Nullen beschrieben bis er voll ist.
  • Ist schnell, aber man sollte besser über die vorherige Nutzung des Datenträgers Bescheid wissen.
  • Kann ansonsten zu "unerklärlichen" Fehlern führen.

Partitionierung

  • Zunächst müssen die Bezeichnungen der zu verwendenden Datenträger bekannt sein.
  • Auf jedem 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 mit 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.
Im Detail

Neue Partitionstabelle anlegen.

=> n

Soll als primäre Partition angelegt werden.

=> 1 oder einfach "Enter" drücken, dann wird der Standardwert (default) genommen.

Am Anfang des Datenträgers werden 2048 Sektoren ungenutzt gelassen, um ein optimales Alignment zu ermöglichen.

Deshalb soll der erste Sektor der Partition bei Sektor 2048 beginnen.

=> 2048 oder einfach "Enter" drücken, dann wird der Standardwert (default) genommen.

Am Ende des Datenträgers werden auch Sektoren ungenutzt gelassen, denn falls nach Jahren ein Datenträger ausfällt und keine baugleiche Festplatte mehr beschafft werden kann, wird das RAID zum Datengrab.

Werden Sektoren am Ende ungenutzt gelassen, kann ein Datenträger, der einige Sektoren weniger hat, problemlos verwendet werden-

1,8 TiB = 1843,2 GiB

Hier sollen sicherheitshalber 1,2 GiB frei bleiben.

=> +1842G

Partition als RAID-Partition markieren

Command (m for help): t Selected partition 1 Partition type (type L to list all types): 29

Software-RAID anlegen

  • Das Hauptwerkzeug für alle Arbeiten an Software-RAIDs unter Linux ist mdadm.
  • mdadm bildet die Schnittstelle zu den RAID-Funktionen des Kernels.
  • Hiermit werden auch RAID-Verbunde erstellt.

Software-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

  • 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

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

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. Chunk Size, also die Datenmenge, die in einem einzelnen Schreibvorgang geschrieben wird, bekannt sein.

Alignment (Ausrichtung)

  • 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

# mdadm -D /dev/md0 | grep "Chunk Size" 
  • Bei einem RAID 5 mit Standardeinstellungen liefert dies z.B.:
    Chunk Size : 512K
  • Es werden also 512 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.
  • 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.
  • 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:
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. 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 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.

weiterführende Artikel

Linux:Software-RAID:Wartung

Linux:Software-RAID:Fehlerbehebung

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