19.04.2023

Linux System

Linux Tastenkombinationen
Konfigurations-Dateien und Verzeichnisse unter Linux
System Anpassung
Systemreparatur
Bootmanager - Grub2/Grub/LiLo
Hardwareerkennung
Paket-Verwaltung
Init-System SysV-Init, Systemd, Upstart, Busybox u.a.
System Protokollierung - syslog
PAM Zugriffssteuerung
Admin-Rechte-Steuerung
Kernel 2.4 | 2.6
Linux Intrusion Detection System (LIDS)
User Mode Linux UML
Dateisysteme
Drucken unter Linux
Sound konfigurieren
Partition kopieren
IPX Protokoll
SoftwareRAID
Netzwerk
Bluetooth
X-Server und Desktops
64Bit und 32Bit auf einem System
ACPI System einrichten
Shared Libraries
Linux Console
Jobs mit cron automatisieren
PCMCIA
ISDN und Capi
VNC-Server einrichten
Verschlüsselter Zugriff auf Ressourcen übers Netzwerk
Festplatten Überwachen mit S.M.A.R.T
Linux Systemhilfe richtig verwenden
sudo konfigurieren
Installation aus den Sourcen
SCSI Emulation für ATAPI Geräte einrichten
cloop (Komprimiertes Loopback Device) einrichten
Übersicht ext2 / ext3 Zusatzflags
Versionsverwaltung von Dateien
SSHFS einrichten
Linux unter VMware
sonstiges

Navigation:
Konfigurationsdatei Beispiele
RAID1 Array erstellen
Bootsector schreiben
zweite Platte ins RAID1 aufnehmen
Vorbereitung für ein RAID5
RAID ändern / löschen
Hot-Replace
RAID Fehlersuche
sonstiges

Links:

 

Seitenanfang

Linux mit Softwareraid

Pakete raidtools oder raidtools2, mdadm

dmraid ist in der lage RAID 0 und 1 anzulegen, es legt mit Hilfe des im Linux Kernel enthaltenen Device Mapper virtuelle Geräte an, über die man auf den RAID Verbund zugreifen kann.
dmraid ist unter anderen auch in der Lage ein RAID wiederherzustellen, das man mit einem Chipsatz oder RAID-Adapter angelegt hat, aber dieser wegen eines defektes nicht mehr zur verfügung steht.

- löscht RAID-Konfigurationsdaten von den beteiligten RAID Laufwerken

dmraid -E

mdadm kann mit RAID 0,1,5 und 6 umgehen.

Als erstes muß auf den Festplatten die im Raid laufen sollen, mit fdisk eine Partition vom Typ "Linux Raid autodetect (FD) " anlegen werden.

Das erste RAID Array ist dann unter /dev/md0 das zweite unter /dev/md1 usw. zu erreichen.

Die Raidtools erwarten die Konfigurationsdatei unter /etc/raidtab, für das Paket mdadm ist die Konfiguration unter /etc/mdadm/mdadm.conf.

Die Konfigurationsdatei ist eigentlich nicht so wichtig, da die Verwaltungsinformationen am Ende jeder RAID-Partition im RAID-Superblock gespeichert werden.

Seitenanfang

Konfigurationsdatei Beispiele

# /etc/mdadm/mdadm.conf
DEVICE partitions
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=57b53db2:b76961f1:56e4dd95:859fd30
   devices=/dev/hda1,/dev/hdb1
# /etc/fstab
/dev/md0	/	ext3	defaults,errors=remount-ro	0	1

- denn Raid Zustand kann man in der /proc/mdstat überprüfen.

cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hda1[0] hdb1[1]
      4095360 blocks [2/2] [UU]

unused devices: <none>
Seitenanfang

RAID1 Array erstellen

  1. von einer LiveCD oder KnoppixCD starten
  2. die zweite Platte des Systems für das RAID vorbereiten
    /dev/sdb1 BOOT Partition anlegen (primär, bootbar, Typ 83)
    /dev/sdb2 SWAP Disk anlegen (primär, Typ 82)
    /dev/sdb5 SoftRAID Disk anlegen (logisch, Typ FD)
    cfdisk /dev/sdb
    modprobe raid1
    mdadm --create /dev/md0 --level=1 --raid-device=2 missing /dev/sdb5
    legt das SoftwareRAID Device /dev/md0 an, als RAID1 mit zwei Device von den eins fehlt (missing). Die Konfiguration wird im RAID Superblock am Anfang der RAID Partition gespeichert.
  3. Status des RAIDs anzeigen
    # mdadm -D /dev/md0
    /dev/md0:
            Version : 00.90
      Creation Time : Fri Nov 21 22:27:41 2008
         Raid Level : raid1
         Array Size : 7411968 (7.07 GiB 7.59 GB)
      Used Dev Size : 7411968 (7.07 GiB 7.59 GB)
       Raid Devices : 2
      Total Devices : 1
    Preferred Minor : 0
        Persistence : Superblock is persistent
    
        Update Time : Fri Nov 21 22:35:49 2008
              State : clean, degraded
     Active Devices : 1
    Working Devices : 1
     Failed Devices : 0
      Spare Devices : 0
    
               UUID : d69f8c02:c26b9a15:87b1bf6d:3d278009
             Events : 0.40
    
        Number   Major   Minor   RaidDevice State
           0       0        0        0      removed
           1       8       21        1      active sync   /dev/sdb5
  4. Laufwerke formatieren
    mkfs.ext3 /dev/sdb1
    mke2fs /dev/sdb2
    mkfs.ext3 /dev/md0
  5. Neue Root Partition nach /raid und Boot-Partition nach /raid/boot mounten
    mkdir /raid
    mount /dev/md0 /raid
    mkdir /raid/boot
    mount /dev/sdb1 /raid/boot
  6. alle Daten der alten Platte auf die RAID Platte nach /raid kopieren
    mkdir /org
    mount /dev/sda1 /org
    cd /org
    tar cf - . | ( cd/org ;tar xfp - )
  7. /raid/etc/fstab anpassen
  8. /raid/boot/grub/menu.lst anpassen
  9. Grub in den MBR der RAID Platte installieren
    grub --config-file=/raid/boot/grub/menu.lst
    
    device (hd0) /dev/sdb
    root (hd0,0)
    setup (hd0)
    quit
  10. jetzt kann man den Rechner herunterfahren, die erste Platte entfernen und von der Platte mit dem RAID booten.
Seitenanfang

Bootsector schreiben

Beispiel für eine Grub-Installation mit chroot

- von einer LiveCD starten

mkdir /raid
mdadm --assemble --run /dev/md0 /dev/hda5
mount /dev/md0 /raid
mount /dev/hda1 /raid/boot
mount --bind /dev /raid/dev
mount --bind /proc /raid/proc
mount --bind /sys /raid/sys
chroot /raid

- Änderungen der menu.lst von Grub.

# /boot/grub/menu.lst
title           Debian GNU/Linux, kernel 2.6.18-6-686
root            (hd0,0)
kernel          /vmlinuz-2.6.18-6-686 root=/dev/md0 ro
initrd          /initrd.img-2.6.18-6-686

- Symlink auf dem Kernel und die RAMDisk erstellen

ln -s /boot/vmlinuz-2.6.18-6-686 vmlinuz-2.6.18-6-686
ln -s /boot/initrd.img-2.6.18-6-686 initrd.img-2.6.18-6-686

- Grub in den MBR installieren

grub --config-file=/boot/grub/menu.lst
root (hd0,0)
setup (hd0)
quit

- RAMDisk aktualisieren, damit md0 als ROOT Partition auch eingebunden werden kann, sonst kommt beim booten die Fehlermeldung "waiting for root file system".

mkinitramfs -o /boot/initrd.img-2.6.18-6-686
Seitenanfang

zweite Platte ins RAID1 aufnehmen

  1. wenn die zweite Platte zum RAID1 hinzugefügt werden soll, muss man diese auch wie die erste einrichten. Eine Boot-, Swap- und RAID-Partition sind einzurichten, die Boot, Swap und RAID Partition sind noch zu formatieren, das Boot Verzeichnis kopieren und Grub einrichten.
    Partitionierung der ersten Platte auf die zweite übertragen.
    sfdisk -d /dev/sda | sfdisk /dev/sdb
  2. Dann die Platte zum Raid hinzufügen.
    mdadm /dev/md0 --add /dev/sdb5
    # mdadm -D /dev/md0
    /dev/md0:
            Version : 00.90.03
      Creation Time : Fri Nov 21 23:27:41 2008
         Raid Level : raid1
         Array Size : 7411968 (7.07 GiB 7.59 GB)
        Device Size : 7411968 (7.07 GiB 7.59 GB)
       Raid Devices : 2
      Total Devices : 2
    Preferred Minor : 0
        Persistence : Superblock is persistent
    
        Update Time : Mon Jan 12 16:25:01 2009
              State : clean
     Active Devices : 2
    Working Devices : 2
     Failed Devices : 0
      Spare Devices : 0
    
               UUID : d69f8c02:c26b9a15:87b1bf6d:3d278009
             Events : 0.2020
    
        Number   Major   Minor   RaidDevice State
           0       3       69        0      active sync   /dev/sdb5
           1       3        5        1      active sync   /dev/sda5
  3. eine Platte eines RAID1 entfernt, z.B. zur Spiegelung auf einen anderen Rechner oder als Backup
    sync
    mdadm /dev/md0 --fail /dev/sdb5 --remove /dev/sdb5
    

- Inhalt der Backup Platte kontrollieren, Platte wird als zweites unvollständiges RAID hinzugefügt

mdadm --assemble --run /dev/md1 /dev/sdb5
mount /dev/md1 /media/md1

- zweites RAID wieder entfernen

mdadm --stop /dev/md1

- Partitionierungsdaten in eine Datei sichern

fdisk /dev/sda -l > /partition

- Grub in den MBR der ersten Festplatte mithilfe einer LiveCD installieren.

grub --config-file=/media/sda1/boot/grub/menu.lst

  root (hd0,0)
  setup (hd0)
  quit
mdadm --create /dev/md0 --level=1 --raid-device=2 missing /dev/hdb5
mdadm -Cva /dev/md0 -l1 -n2 missing /dev/hdb5

- /dev/md0 Device manuell anlegen

mknod /dev/md0 b 9 0 ; mknod /dev/md1 b 9 1
Seitenanfang

Vorbereitung für ein RAID5

Für ein RAID5 das aus mind. drei Platten besteht, ist es empfehlenswert, das auf den Platten noch ein RAID1 mit 500MB für die Boot-Partition eingerichtet wird und das RAID5 als Daten-Partition im Anschluss. Mit Grub ist es nicht möglich von einem RAID5 zu booten.

z.B.

sda1, sdb1 und sdc1 werden zu einem RAID1 für die Boot-Partition eingerichtet (ca. 500MB),
sda2, sdb2 und sdc2 werden zu einem RAID5 eingerichtet für Root, Daten und einer SWAP-Datei. Im MBR der Platten wird der Urloader installiert sda1, sdb1 und sdc1 werden als aktive Partitionen mit fdisk markiert und Grub wird in die Boot-Partition installiert.

  1. Die Einrichtung am besten mit einem Livesystem vornehmen.
    1. Partition sda1 mit einer Linux raid autodetect Partition (0xfd) einrichten RAID1, bootbar
    2. Partition sda2 mit einer Linux raid autodetect Partition (0xfd) einrichten RAID5
    RAID1 einrichten, aus drei Platten von den zwei Platten fehlen.
    cfdisk /dev/sda
    modprobe raid1
    mdadm --create /dev/md0 --level=1 --raid-device=3 /dev/sda1 missing missing
  2. Dateisystem der ersten Platte einrichten und Daten der Boot-Partition darauf kopieren. Die md0 Partition wird mit dem LABEL=boot versehen, so ist ein vertauschen im System nicht mehr möglich, wenn jedes Label nur ein mal vorkommt.
    mke2fs -j -L boot /dev/md0
    mount /dev/md0 /boot
    cp -a /mnt/boot/* /boot
  3. /etc/fstab aktualisieren.
    LABEL=boot	/boot	ext3	errors=remount-ro 0	1
  4. Grub Konfigurationsdatei anpassen
    #/boot/grub/menu.lst
    title           Debian GNU/Linux, kernel 2.6.18-6-686
    root            (hd0,0)
    kernel          /vmlinuz-2.6.18-6-686 root=/dev/md1 ro
    initrd          /initrd.img-2.6.18-6-686
    savedefault
  5. für die Grubinstallation das RAID deaktivieren.
    umount /dev/md0
    mdadm --stop /dev/md0
    mount /dev/sda1 /boot
    grub --config-file=/media/sda1/boot/grub/menu.lst
    
      root (hd0,0)
      setup (hd0,0)
      quit
  6. mit testdisk /dev/sda1 den Urloader einrichten, dazu ist zu wählen, Proceed, Intel, MBR Code und noch ein Ok.
  7. Die erste Partition wieder ins RAID1 aufnehmen
    mdadm --assemble --run /dev/md0 /dev/sda1
  8. Da die Daten auf /dev/sdb stehn und diese noch kopiert werden müssen wird erst mal nur sdc1 und sdc2 zu den beiden RAIDs hinzugefügt. Als erstes die Partitionen wie auf /dev/sda einrichten und das Device /dev/sdc1 zum RAID1 hinzufügen.
    sfdisk -d /dev/sda | sfdisk /dev/sdc
    mdadm /dev/md0 --add /dev/sdc1
    RAID5 einrichten und Daten kopieren.
    mdadm --create /dev/md1 --level=5 --raid-device=3 /dev/sda2 missing /dev/sdc2
    mke2fs -j -L raid5 /dev/md1
    mount /dev/md1 /media
    mount /dev/sdb5 /mnt
    cp -a /mnt/* /media
  9. Auf dem Device /dev/sdb die Partitionen löschen und ins RAID aufnehmen.
    cfdisk /dev/sdb
    mdadm --add /dev/md0 /dev/sdb1
    mdadm --add /dev/md1 /dev/sdb2
  10. Eintragungen in der fstab
    #/etc/fstab
    # <file system> <mount point>   <type>  <options>			<dump>  <pass>
    proc            /proc           proc    defaults			0	0
    LABEL=boot      /boot           ext3    errors=remount-ro		0	1
    /dev/md1        /               ext3    defaults,errors=remount-ro	0	1
Seitenanfang

RAID ändern / löschen

- Partition aus einem RAID Verbund entfernen und den Superblock löschen.

mdadm /dev/md0 --fail /dev/sda1
mdadm /dev/md0 --remove /dev/sda1
mdadm --zero-superblock /dev/sda1

- RAID komplett löschen

umount /dev/md0 /dev/md1
mdadm --stop /dev/md0 /dev/md1
mdadm --zero-superblock /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sda2 /dev/sdb2 /dev/sdc2

- RAID5 mit HotSpare Device einrichten

mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sda2 /dev/sdb2 /dev/sdc2 \
--spare-devices=1 /dev/sdd2

- HotSpare Device einem RAID5 aus drei Festplatten hinzufügen

mdadm /dev/md1 --add /dev/sdd2
mdadm /dev/md1 --grow --raid-devices=4

die vierte Festplatte muß genauso partitioniert werden wie die anderen drei.

- wenn man die RAID5 Partition vergrößern möchte, müssen neue Festplatten mit einer gleichgroßen Boot-Partition und einer größeren Daten-Partition dem RAID Verband einzeln hinzugefügt werden, so lange bis alle Laufwerke durch welche mit größerer Partition ersetzt wurden. Danach kann man das RAID-Device vergrößern.

alte Platte entfernen

mdadm /dev/md0 --fail /dev/sdc1
mdadm /dev/md0 --remove /dev/sdc1
mdadm --zero-superblock /dev/sdc1
mdadm /dev/md1 --fail /dev/sdc2
mdadm /dev/md1 --remove /dev/sdc2
mdadm --zero-superblock /dev/sdc2

neue Platte einbinden, und warten bis RAID wiederhergestellt wurde.

mdadm /dev/md0 --add /dev/sdc1
mdadm /dev/md1 --add /dev/sdc2
mdadm -D /dev/md0
mdadm -D /dev/md1
mdadm /dev/md1 --grow --size=max

Device auf Fehler prüfen, Dateisystem auf maximale Größe erweitern.

e2fsck -f /dev/md1
resize2fs -p /dev/md1
Seitenanfang

Hot-Replace

dem RAID Verbund wird eine Platte hinzugefügt, auf der ein Rebuild einer noch exisierenden Platte (nicht defekten Platte) gespielt wird, um diese danach auszutauschen.
Das RAID bleibt dabei intakt.

- Datenträger /dev/sdd3 wird dem RAID-Verbund als Spare hinzugefügt. Mit den zweiten Befehl werden die Daten der /dev/sdc3 auf die Spare Platte kopiert.

mdadm /dev/md1 --add /dev/sdd3
mdadm /dev/md1 --replace /dev/sdc3

- Status des Kopiervorganges anzeigen

cat /proc/mdstat

- Platte als fehlerhalft markieren

mdadm --manage /dev/md1 --fail /dev/sdc3
oder
mdadm --manage --set-faulty /dev/md1 /dev/sdc3

- Platte aus RAID entfernen

mdadm /dev/md1 -r /dev/sdc3

 

Seitenanfang

RAID Fehlersuche

Fehlermeldung beim starten, System bleibt in der initramfs hängen.
Failure: failed to assemble all arrays.

wenn die RAID Arrays beim starten nicht eingebunden werden, versuchen das RAID5 Array von Hand zu initialisieren

mdadm --assemble /dev/md1 --run /dev/sda2 /dev/sdb2 /dev/sdc2

wenn das Device /dev/md1 nicht existiert

mknod /dev/md1 b 9 1

eine neue initrd mit RAID Unterstützung erstellen

mkdir /raid
mount /dev/md1 /raid
mount --bind /dev /raid/dev
mount --bind /proc /raid/proc
mount --bind /sys /raid/sys
mount -n -o remount,rw /dev/md0
mount --bind /root /mnt/boot
chroot /raid
/usr/sbin/mkinitramfs -o /boot/initrd.img-2.6.23 2.6.23
Seitenanfang

sonstiges