itwissen
Goto Top

Software RAID1 (Mirror) mit Debian

Software RAID1 (Mirror) mit Debian Sarge

Ein Praxisbericht, wie ich meine Debian Server mit zwei Platten nachträglich mit RAID1 (Mirror) gegen Plattenausfälle gesichert habe. Das geschriebene hier basiert auf dem Rootraid Dokument:

https://alioth.debian.org/projects/rootraiddoc/

Obwohl das Dokument alle Ecken der Raidkonfiguration ausleutet war es nicht ganz einfach. Hier also meine Zusammenstellung die bei meinem Server funktioniert hat.

back-to-topHardware Konfiguration


Ein PC mit zwei identischen Platten (/dev/sda, /dev/sdb).

Das war die Konfiguration mit dem ich das RAID1 aufgebaut habe. Man könnte woanderst diskutieren, wie gut es ist zwei identische Platten zu nehmen. Das möchte ich hier aber nicht tun.

back-to-topDebian Installation


Standard Debian 3.1 (Sarge) Installation. Ich persönlich benutze FAI für die unbeaufsichtige Installation. Der 2.6er Kernel hat die Raid Module schon eingebaut. Die notwenidigen Tools sind im Paket mdadm:
apt-get install mdadm

back-to-topVorbereitungen


Zuerst mal sicherstellen, dass ein Backup vorhanden ist. Ich habe zwar bisher keines benötigt, aber ich will nicht schuld sein, wenn Daten verlorengehen. Wer sich nicht schon ein wenig mit Linux auskennt, sollte das hier erstmal auf einem Testsystem ausprobieren, um die Sache kennenzulernen.

Ich habe 3 Partitionen. Erstens die Root-Partition (/dev/sda1), dann noch eine Swap-Partition (/dev/sda2) und eine für /var (/dev/sda3). Die zweite Platte (/dev/sdb) ist noch unpartitioniert. Das machen wir als erstes. Partitionstabelle von /dev/sda auf /dev/sdb kopieren und dabei den Typ auf Linux raid autodetect (id: fd) ändern:

sfdisk -d /dev/sda | sed -e 's/=8[23]/=fd/g' | sfdisk /dev/sdb  

back-to-topRAID1 auf nicht root-Partition, in diesem Fall /var


Dazu generieren wir zuerst das RAID1 mit einer fehlenden Platte, die fügen wir später dazu.
mdadm --create /dev/md3 --level=1 --raid-devices=2 missing /dev/sdb3
Damit das ganze auch einen Reboot übersteht muss das in /etc/mdadm/mdadm.conf eingetragen werden. Zuerst die Devices mit folgender Zeile:
DEVICE /dev/sda3 /dev/sdb3
und dann noch die ID des md-Devices:
mdadm --brief --detail --verbose /dev/md3 >> /etc/mdadm/mdadm.conf
Anschliessend die Partition Formatieren und mounten:
mkfs.ext3 /dev/md3
mount /dev/md3 /mnt
Als nächstes die Daten auf die neue Partition kopieren. Dazu sollte man möglichst alleine auf dem Rechner sein und so viele wie mögliche Dienste abstellen. Im Gegensatz zu Windows ist das kopieren aber unkritisch. Bei Userdaten muss man aufpassen, dass die Benutzer nicht gerade was schreiben.
cd /var ; find . -xdev -print | cpio -dvpm /mnt
oder
cd /var; tar clf - . | (cd /mnt && tar xvpf - )
Schon fast am Ziel. In der Datei /etc/fstab muss aus dem sda3 noch ein md3 gemacht werden. Anschliessend ein Reboot und schauen ob das /dev/md3 richtig gemountet ist. Wenn das so ist wird es zeit den Mirror zu vervollständigen in dem die zweite Disk zugefügt wird:
mdadm --add /dev/md3 /dev/sda3
Die Synchronisation kann man unter /proc/mdstat beobachten z.b. mit cat /proc/mdstat.
Abschliessend noch die /dev/sda3 in /etc/mdadm/mdadm.conf eintragen, statt der missing Partition. mdadm.conf müsste dann etwa diese Einträge haben (UUID natürlich unterschiedlich):
DEVICE /dev/sda3 /dev/sdb3
ARRAY /dev/md3 level=raid1 num-devices=2 UUID=0fc5588a:2fddde42:87a3b1dd:0d49cb68 devices=/dev/sda3,/dev/sdb3

back-to-topSwap Partition, /dev/sda2


Man kann sich darüber streiten, ob es Sinn macht die Swap Partition zu spiegeln.

Ich habe es gemacht, denn falls die Swap-Partition ausfällt, stürzt der Rechner ab. Dies zu vermeiden nehme ich den Performazverlust in kauf. Ein gut abgestimmtes System sollte den Swap sowieso möglichst nicht verwenden.

Der Vorgang ist identisch zum vorhergehenden Kapitel, nur das formtieren und kopieren wird ausgelassen.

back-to-topRoot Partition, /dev/sda1


Da man davon Booten muss, braucht es das md und raid1 Kernelmodul schon beim Booten.

md und raid1 in /etc/modules und /etc/mkinitrd/modules eintragen.

Jetzt wird ein neues initrd gebaut werden:
mkinitrd -o /boot/initrd.img....-raid /lib/modules/2.6....
In /boot/grub/menu.lst muss noch das sda1 durch md1 ersetzt werden und die alte durch die neue initrd ersetzt werden.

Ab hier wird vorgegangen wie bei der nicht-root Partition.

Wenn der Rechner dann von der md1 bootet nochmal ein frisches initrd bauen und /boot/grub/menu.lst kontrollieren und gegebenenfalls anpassen:
mkinitrd -o /boot/initrd.img....-raid /lib/modules/2.6....

back-to-topGrub auf der zweiten Platte installieren


Wenn die erste Platte ausfällt, fällt auch der MBR aus und es kann nicht mehr gebootet werden. Deshalb wird der Grub-Bootsektor zur sicherheit noch auf die zweite Platte installiert werden. Beim Plattenaustausch muss das wiederholt werden.

grub
device (h0) /dev/sdb
root (hd0,0)
setup (hd0)

back-to-topSchlussbemerkung

Ich bin sicher es gibt an der einen oder anderen Stelle noch etwas Optimierungsmöglicheiten im Ablauf. Gerne nehme ich Anregungen entgegen.

Content-Key: 28672

Url: https://administrator.de/contentid/28672

Ausgedruckt am: 28.03.2024 um 20:03 Uhr