Linux software raid

Aus metasec wiki
Wechseln zu: Navigation, Suche

Voraussetzungen

Vorarbeiten

Booten von der SystemRescueCD.

Danach müssen die Festplatten partitioniert werden. Falls Partitionen bereits vorhanden sind, dann müssen die s.g. "Partitiontypes" auf "FD" angepasst werden. Dieser Typ definiert die Partition zum "RAID-Autodetect" Typ. Somit wird diese Partition als Teil eines RAID Verbundes beim booten vom Kernel erkannt. Dieses wird am besten mit "cfdisk" erledigt. I.d.R. wird ein RAID1 aufgesetzt, also ein voll gespiegelter Festplattenverbund. Das Festplattenlayout sollte man sich vorher überlegen, oder einfach das Standardlayout vom Zphone übernehmen.

Danach müssen die RAID-Sets aufgesetzt werden.
Wichtig ist, dass bei dieser Methode das RAID auf Partitionsebene gemacht wird! Beim den nachfolgenden Kommandos gehen alle Daten verloren!!!

Prüfen Sie ob beide Festplatten gleich partitioniert sind! Falls es nicht der Fall, holen Sie diese nach. Dieses kann auch mit cfdisk erledigt werden.

Raid einrichten

Das Software Raid unter Linux wird mit dem Kommando "mdadm" verwaltet. Diese schreibt die Raidsignaturen direkt auf die jeweiligen Partitionen.
Zum Anlegen der Raidsets gehen Sie wie folgt vor:

/dev/md0 - Bootpartition:

mdadm --create /dev/md0 --name=BOOT --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

/dev/md1 - Datenpartition:

mdadm --create /dev/md1 --name=DATA --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2

Sie können den Verlauf des Arraybuilds mit folgendem Kommando überwachen


root@sysresccd /root % cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdb2[1] sda2[0]
      243585472 blocks [2/2] [UU]
      [>....................]  resync =  0.0% (2176/243585472) finish=1852.0min speed=2176K/sec

md0 : active raid1 sdb1[1] sda1[0]
      56128 blocks [2/2] [UU]

unused devices: <none>

Formatieren

Nachdem die Arrays aufgebaut sind, können diese formatiert werden. Dieses kann auch bereits während des Arraybuilds passieren. Allerdings ist es besser die Dinge sequenziell zu machen...

/dev/md0 - Bootpartition:

mkfs.ext3 /dev/md0

/dev/md1 - Datenpartition:

mkfs.ext3 /dev/md1

Zphone installieren

Nachdem nun die formatierten Arrays zur Verfügung stehen, können diese gemountet und mit Daten bespielt werden. Wenn Sie eine SystemResCD verwenden gehen Sie wie folgt vor:

Dateisysteme einhängen:

mkdir /mnt/zphone
mount /dev/md1 /mnt/zphone

mkdir /mnt/zphone/boot
mount /dev/md0 /mnt/zphone/boot

Zphone "zu Fuß" installieren:
Dieses setzt eine funktionierende Internetverbindung voraus!

cd /mnt/zphone
wget http://dl.metasec.de/zphone_master_image_current.tar.bz2
tar --numeric-owner -xvjf /mnt/zphone/zphone_master_image_current.tar.bz2 -C /mnt/zphone

Bootmanager anpassen

Wichtig: Der jeweilige Bootkernel ist unter /mnt/zphone/boot zu prüfen. Dieses Beschreibung ist nur mit Beispieldaten verfasst

/etc/lilo.conf

lba32
boot=/dev/sda
install=/boot/boot-menu.b
map=/boot/map
delay=20
timeout=20
prompt
vga=normal
default=ast

image=/boot/vmlinuz-2.6.24
        label=ast
        read-only
        root=/dev/md1
        append=""
        initrd=/boot/initrd.img-2.6.24

image=/boot/vmlinuz-2.6.24
        label=ast_rescue
        read-only
        root=/dev/md1
        append="init S "
        initrd=/boot/initrd.img-2.6.24


fstab anpassen

/etc/fstab


# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>                       <dump>  <pass>
/dev/md1       /               ext3    defaults,errors=remount-ro      0       1
/dev/md0       /boot           ext2    defaults                        0       2
/dev/sda3       none            swap    sw                              0       0
/dev/sdb3       none            swap    sw                              0       0
proc            /proc           proc    defaults                        0       0

Bootmanager installieren

chroot /mnt/zphone /bin/bash
mount /proc
lilo
umount /proc
exit

Soweit der lilo beim installieren des Bootrecords keine Fehler ausgibt, können Sie mit "reboot" die Maschine neu booten. Entfernen Sie die CD und starten Sie von Festplatte...

Sonstige Anpassungen

udev network interfaces resolv.conf


Troubelshooting

http://gnu.linux-sysadmin.org/cms/show_article/5044.html

Es kann sein dass das Paket mdadm nicht vorhanden ist. Dieses stellt man spätestens beim booten fest :-> Dieses lässt sich einfach beheben, indem man im chroot ein

apt-get install mdadm

ausführt. Dabei werden auch neue initrd Dateien erzeugt. Deshalb muss der lilo nach dem Update der initrd ausgeführt werden!!!