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.
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.
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
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:
Dazu generieren wir zuerst das RAID1 mit einer fehlenden Platte, die fügen wir später dazu.
Damit das ganze auch einen Reboot übersteht muss das in /etc/mdadm/mdadm.conf eingetragen werden. Zuerst die Devices mit folgender Zeile:
und dann noch die ID des md-Devices:
Anschliessend die Partition Formatieren und mounten:
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.
oder
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:
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):
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.
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:
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:
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.
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:
Inhaltsverzeichnis
Obwohl das Dokument alle Ecken der Raidkonfiguration ausleutet war es nicht ganz einfach. Hier also meine Zusammenstellung die bei meinem Server funktioniert hat.
Hardware 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.
Debian 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
Vorbereitungen
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
RAID1 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
DEVICE /dev/sda3 /dev/sdb3
mdadm --brief --detail --verbose /dev/md3 >> /etc/mdadm/mdadm.conf
mkfs.ext3 /dev/md3
mount /dev/md3 /mnt
cd /var ; find . -xdev -print | cpio -dvpm /mnt
cd /var; tar clf - . | (cd /mnt && tar xvpf - )
mdadm --add /dev/md3 /dev/sda3
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
Swap 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.
Root 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....
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....
Grub 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)
Schlussbemerkung
Ich bin sicher es gibt an der einen oder anderen Stelle noch etwas Optimierungsmöglicheiten im Ablauf. Gerne nehme ich Anregungen entgegen.Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 28672
Url: https://administrator.de/contentid/28672
Ausgedruckt am: 24.11.2024 um 07:11 Uhr