PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Raidtools


frank-haug
29.08.01, 15:04
Hallo zusammen !

Habe vor, Raid 1 (Spiegelung) auf einem SuSE 7.2 - System zu implementieren: 2 x U2W SCSI HDD's 'a 8,0 GB. Auf beiden ist eine gleich große primäre Linux-Partition (ext2) vorhanden. Ich habe die auf der SuSE 7.2 - CDROM vorhandenen Raid-Tools installiert. Irgendwo war allerdings zu lesen, daß die Raid-Tools vom Kernel standardmäßig nicht unterstützt werden !!!??? >> Im Webmin 0.87 lassen sich die Raid-Tools unter auch nicht aktivieren. Nachdem ich damit nicht klargekommen bin, habe ich die "mdutils", welche auf der 7.2 'er Distribution nicht mehr drauf sind, von einer SuSE 6.4 CDROM installiert. Die Datei /etc/raid1.conf habe ich für die beiden HDD's entsprechend angepaßt: /dev/sdb1 + /dev/sdc1. Mit dem anschließenden Befehl "mdadd /dev/md0 /dev/sdb1 /dev/sdc1" habe ich versucht, die Spiegelung einzurichten, jedoch kommt hierbei die Meldung "no such device". Hat schon jemand Erfahrung damit gemacht ?

wb1
29.08.01, 16:33
>Irgendwo war allerdings zu lesen, daß die Raid-Tools vom Kernel standardmäßig nicht unterstützt werden !!!???

Du mußt dir einen passenden Kernel compilieren.
Kernelquellen mit yast installieren.
cd /usr/src/linux
make menuconfig
Änderungen im Kernel durchführen
make dep clean bzlilo modules modules_install

frank-haug
31.08.01, 08:50
Danke für den Tip, ich habe den Kernel entsprechend neu kompiliert. Die "mdutils" habe ich erneut installiert. Die Plattenspiegelung habe ich neu eingerichtet ("mkraid -f /etc/raid1.conf"). Nachdem die Konfiguration durchgeführt worden ist, habe ich die Konfig. per "ckraid /etc/raid1.conf" überprüft -> Bildschirmausgabe:

disk 0: /dev/sdb1, 8924076kB, raid superblock at 8923968kB
disk 1: /dev/sdc1, 8924076kB, raid superblock at 8923968kB
reading raid superblock
checking raid level 1 set /dev/md0
MD ID: a92b4efc
Conforms to MD version: 0.36.4
Raid set ID: 684232eb
Creation time: Thu Aug 30 18:42:04 2001
Update time: Thu Aug 30 19:17:26 2001
State: 1 (clean)
Raid level: 1
Individual disk size: 8714MB (8923968kB)
Total number of disks: 2
Number of raid disks: 2
Number of active disks: 2
Number of working disks: 2
Number of failed disks: 0
Number of spare disks: 0

Disk 0: raid_disk 0, state: 6 (operational, active, sync)
Disk 1: raid_disk 1, state: 6 (operational, active, sync)
array size: 8923968kB=0x20AD0000

Ich denke, das sieht grundsätzlich gut aus. Das Problem ist allerdings, daß ich die Spiegelung nicht aktivieren kann, kein Filesystem anlegen kann, geschweige denn, die Platten hinterher zu mounten.:

Syntaxen:

"mdrun -p1 /dev/md0"
"mke2fs /dev/md0"
"mount /dev/md0 /mnt"

Bildschirmausgabe bei "mdrun -p1 /dev/md0":

server:/ # mdrun -p1 /dev/md0
/dev/md0: No such device


Bildschirmausgabe "mke2fs /dev/md0":

mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09

mke2fs: Device size reported to be zero. Invalid partition specified, or
partition table wasn't reread after running fdisk, due to
a modified partition being busy and in use. You may need to reboot
to re-read your partition table.


Bildschirmausgabe bei "mount /dev/md0 /mnt":

server:/ # mount -t ext2 /dev/md0 /mirrorset
mount: wrong fs type, bad option, bad superblock on /dev/md0,
or too many mounted file systems
(could this be the IDE device where you in fact use
ide-scsi so that sr0 or sda or so is needed?)

Ich hoffe, das Ganze ist ausführlich genug. Vielleicht kannst Du etwas damit anfangen ?

Ciao, Frank

wer_ner
31.08.01, 23:21
Hi,
ich habe vor kurzem eine Raid 1 installiert.

Hier ist eine Doku:

Voraussetzung sind möglichst zwei gleiche Platten, die entweder im IDE- oder SCSI-System laufen.

Zunächst wird auf der ersten Platte ganz normal eine entsprechende Installation vorgenom-men. Wichtig ist hierbei, daß die Suse-Kernel-Quellen mitinstalliert werden. Diese benötigen wiederum das Ncurses-Devel-RPM.

Anschließend einen neuen Kernel "bauen". Siehe Suse-Handbuch. Vorzugsweise sollte man die Datei /proc/config.gz wegkopieren, mit "gunzip config.gz" auspacken und anschließend die Datei "config" nach /usr/src/linux kopieren. Diese kann dann als Basis für den neuen Kernel dienen. Bei Bedarf liegt in der ..... eine Konfigurationsdatei für einen neuen Kernel mit dem Treiber für den Adaptec 2940.

WICHTIG ist, daß in dem neuen Kernel die Controller-Module, z.B. aic7xxx und vorallem die Raid-Module fest einkompeliert werden. Kernel erstellen und anschließend installieren.

Während dieser Zeit kann die /etc/raidtab erstellt werden. Dies hängt von der Konstellation ab, die vorgesehen ist:

/etc/raidtab

# Konfiguration für das Raid 1 vom
# ns01-Server
#
# Herr .....
#
# Stand 8/01

# Root-array mit ca 850 MB
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
chunk-size 32
# Sparedisks für den Ausfall
# keine vorhanden
nr-spare-disks 0
persistent-superblock 1
device /dev/sda3
raid-disk 0
device /dev/sdb3
raid-disk 1

# Boot-array mit ca 15 MB
raiddev /dev/md1
raid-level 1
nr-raid-disks 2
chunk-size 32
# Sparedisks für den Ausfall
# keine vorhanden
nr-spare-disks 0
persistent-superblock 1
device /dev/sda1
raid-disk 0
device /dev/sdb1
raid-disk 1

Voraussetzung hierfür ist, daß auf beiden Platten alle Partitionen gleich groß erstellt wurden.

In obiger Konstellation ist die Platte in drei Partitionen geteilt. Die erste wird für den Mount-Point /boot verwendet, die zweite für den Swap-Bereich, die dritte für / .

Anschließend wird die /etc/lilo.conf erstellt.

# LILO configuration file
# Start LILO global Section
# If you want to prevent console users to boot with init=/bin/bash,
# restrict usage of boot params by setting a passwd and using the option
# restricted.
#password=bootpwd
#restricted
disk=/dev/md0
bios=0x80
sectors=63
heads=255
cylinders=131
partition=/dev/md1
start=63
boot=/dev/sda
map=/boot/map
install=/boot/boot.b

#compact # faster, but won't work on all systems.
vga=normal
message=/boot/message
menu-scheme=Wg:kw:Wg:Wg
read-only
prompt
timeout=100
# End LILO global Section
#
image = /boot/vmlinuz
root = /dev/md0
label = LinuxRaid
# initrd = /boot/initrd
read-only

image = /boot/vmlinuz
root = /dev/sda3
label = Linux
initrd = /boot/initrd

#
image = /boot/memtest.bin
label = memtest86
optional

#
image = /boot/vmlinuz.old
root = /dev/sda3
label = linux.old
initrd = /boot/initrd

Hinweise zur /etc/lilo.conf

1. Das Image "linux.old" bootet die erste Platte im Fehlerfall. Allerdings für dies wegen einer fehlerhaften /etc/fstab zum Abbruch. In dieser muß vorher die Einstellung wegen dem Raid auf einzelne Platte zurückgestellt werden (siehe auskommentierte Zeilen).

/etc/fstab

/dev/sda2 swap swap defaults,pri=1 0 0
/dev/sdb2 swap swap defaults,pri=1 0 0
/dev/md0 / reiserfs defaults 1 1
#/dev/sda3 / reiserfs defaults 1 1
/dev/md1 /boot ext2 defaults 1 2
#/dev/sda1 /boot ext2 defaults 1 2
/dev/sr0 /media/cdrom auto ro,noauto,user,exec 0 0

/dev/fd0 /media/floppy auto noauto,user 0 0

proc /proc proc defaults 0 0
# End of YaST-generated fstab lines

Übrigens bedeutet das "pri=1" hinter den Swapeinträgen, daß die Swapfiles gleichberechtigt verteilt werden und dadurch eine deutliche Steigerung der Systemleistung erreicht wird.
2. Die Einträge
disk=/dev/md0
bios=0x80
sectors=63
heads=255
cylinders=131
partition=/dev/md1
start=63
beziehen sich auf die Plattengeometrie und sind deshalb notwendig, damit der Kernel gefun-den werden kann. Die MD - Laufwerke sind meist während des Bootens nicht zugänglich, deshalb wird ersatzweise direkt auf die Platte zugegriffen.

Die Werte der Platte kann man mit "fdisk -ul /dev/"Platte"" ermitteln. "Platte" steht z.B. für sda für die erste SCSI-Platte.

Wenn der Kernel erstellt und installiert wurde, sollte man das System checken, so daß die normale Installation sauber läuft.

Wenn dies erledigt ist, von der SUSE-CD die manuelle Installation starten, die Module auto-matisch einbinden und anschließend das Rettungssystem starten. Damit sind alle notwendi-gen Module für die Platte geladen und auch die deutsche Tastaturumgebung.

Nun von der Platte /dev/sda3 die /etc/raidtab kopieren:
mount -o ro /dev/sda3 /mnt
cp /mnt/etc/raidtab /etc/raidtab
umount /mnt

Nun die beiden Plattenbereiche aus dem installierten System auf die jeweiligen Raid-Partner kopieren. Die Befehle hierfür sind (in obiger Konstellation)

dd if=/dev/sda1 of=/dev/sdb1
dd if=/dev/sda3 of=/dev/sdb2

Damit ist auf beiden Platten dasselbe enthalten.

Nun mit fdisk oder dem yast kontrollieren, daß die Partitionen /dev/sda1, /dev/sda3, /dev/sdb1 und /dev/sdb3 den Typ "fd" haben.

z.B.:

fdisk /dev/sda
p (anzeige der Partitionierung)
L (Änderung des Typs)
Nummer der Partition und Typ angeben
w (für Schreiben der Änderungen)

Nun die Raids anlegen und starten:
mkraid /dev/md0
mkraid /dev/md1
raidstart /dev/md0
raidstart /dev/md1

Zur Kontrolle sollte die /prob/mdtab kontrolliert werden. Dort sollten die MD-Devices vorhan-den sein und beide Platten aktiv. Natürlich kann obiger Vorgang etwas dauern J.

Nun den Lilo richtig installieren:

mount /dev/md0 /mnt
chroot /mnt
mount /dev/md1 /boot
lilo

Hier passiert folgendes: zunächst wird das Root-Device nach /mnt gemountet und mit "chroot" eine neue Umgebung gemountet. Damit verhält sich das System als würde es von dem MD-Device laufen, /boot einbinden und dann lilo installieren.

Alles wieder abschalten:

umount /boot
exit
umount /mnt
raidstop /dev/md0
raidstop /dev/md1

Neu booten, System sollte laufen!

Natürlich das System testen. Insbesondere ob beide Platten unabhängig von einander booten. Eventuell muß dann die Lilo.conf für die zweite Platte angepaßt werden. Man sollte auch et-was Erfahrung mit den "Raidtools" sammeln.

Ansonsten laufen die Systeme nach unseren Erfahrungen relativ stabil, dies bestätigt auch ei-ne Test in der IX 9/01.

Weitere Doku: www.linuxdoc.org/HOWTO/Boot+Root+Raid+LILO-1.html (http://www.linuxdoc.org/HOWTO/Boot+Root+Raid+LILO-1.html)


Vielleicht hilfs,

Werner

frank-haug
05.09.01, 06:36
Danke für die Mühe, ich probiers aus....

frank-haug
16.09.01, 09:53
Hallo !

Danke für die umfangreiche Doku. Ich habe das Problem inzwischen lösen können: Mit den "Raidtools 0.90". War eigentlich ganz easy und läuft jetzt wie geschmiert.

Ciao, Frank