Software RAID1 auf einem laufenden System (Inkl. GRUB Konfiguration) (Debian Etch) einrichten
7 /dev/sda Vorbereiten
Wenn alles gut läuft, findest Du /dev/md0 und /dev/md2 in der Ausgabe von
df -h
server1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md2 4.4G 730M 3.4G 18% /
tmpfs 126M 0 126M 0% /lib/init/rw
udev 10M 68K 10M 1% /dev
tmpfs 126M 0 126M 0% /dev/shm
/dev/md0 137M 17M 114M 13% /boot
server1:~#
Die Ausgabe von
cat /proc/mdstat
sollte wie folgt aussehen:
server1:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdb3[1]
4594496 blocks [2/1] [_U]
md1 : active raid1 sdb2[1]
497920 blocks [2/1] [_U]
md0 : active raid1 sdb1[1]
144448 blocks [2/1] [_U]
unused devices: <none>
server1:~#
Nun müssen wir auch die Partitionsart unserer drei Partitionen auf /dev/sda zu Linux raid autodetect ändern:
fdisk /dev/sda
server1:~# fdisk /dev/sda
Command (m for help): <– t
Partition number (1-4): <– 1
Hex code (type L to list codes): <– fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): <– t
Partition number (1-4): <– 2
Hex code (type L to list codes): <– fd
Changed system type of partition 2 to fd (Linux raid autodetect)
Command (m for help): <– t
Partition number (1-4): <– 3
Hex code (type L to list codes): <– fd
Changed system type of partition 3 to fd (Linux raid autodetect)
Command (m for help): <– w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
server1:~#
Nun können wir /dev/sda1, /dev/sda2, und /dev/sda3 zu den entsprechenden RAID arrays hinzufügen:
mdadm –add /dev/md0 /dev/sda1
mdadm –add /dev/md1 /dev/sda2
mdadm –add /dev/md2 /dev/sda3
Sieh Dir nun Folgendes an
cat /proc/mdstat
… Du solltest feststellen, dass die RAID arrays synchronisiert werden:
server1:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[2] sdb3[1]
4594496 blocks [2/1] [_U]
[=====>……………] recovery = 29.7% (1367040/4594496) finish=0.6min speed=85440K/sec
md1 : active raid1 sda2[0] sdb2[1]
497920 blocks [2/2] [UU]
md0 : active raid1 sda1[0] sdb1[1]
144448 blocks [2/2] [UU]
unused devices: <none>
server1:~#
(Du kannst Folgendes laufen lassen
watch cat /proc/mdstat
um eine fortlaufende Ausgabe des Prozesses zu erhalten. Um watch zu verlassen, drücke STRG+C.)
Warte bis die Synchronisation abgeschlossen ist (die Ausgabe sollte dann so aussehen:
server1:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[0] sdb3[1]
4594496 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
497920 blocks [2/2] [UU]
md0 : active raid1 sda1[0] sdb1[1]
144448 blocks [2/2] [UU]
unused devices: <none>
server1:~#
).
Passe dann /etc/mdadm/mdadm.conf der neuen Situation an:
cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
mdadm –examine –scan >> /etc/mdadm/mdadm.conf
/etc/mdadm/mdadm.conf sollte nun so ähnlich wie Folgendes aussehen:
cat /etc/mdadm/mdadm.conf
# mdadm.conf # # Please refer to mdadm.conf(5) for information about this file. # # by default, scan all partitions (/proc/partitions) for MD superblocks. # alternatively, specify devices to scan, using wildcards if desired. DEVICE partitions # auto-create devices with Debian standard permissions CREATE owner=root group=disk mode=0660 auto=yes # automatically tag new arrays as belonging to the local system HOMEHOST <system> # instruct the monitoring daemon where to send mail alerts MAILADDR root # This file was auto-generated on Mon, 26 Nov 2007 21:22:04 +0100 # by mkconf $Id: mkconf 261 2006-11-09 13:32:35Z madduck $ ARRAY /dev/md0 level=raid1 num-devices=2 UUID=72d23d35:35d103e3:2b3d68b9:a903a704 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=a50c4299:9e19f9e4:2b3d68b9:a903a704 ARRAY /dev/md2 level=raid1 num-devices=2 UUID=99fee3a5:ae381162:2b3d68b9:a903a704 |
8 GRUB (Teil 2) vorbereiten
Wir haben es fast geschafft. Nun müssen wir erneut /boot/grub/menu.lst bearbeiten. Momentan ist es so konfiguriert, dass es von /dev/sdb (hd1,0) hochfährt. Natürlich möchten wir immer noch, dass das System in der Lage ist hochzufahren, wenn /dev/sdb ausfällt. Daher kopieren wir die erste Kernelzeile (die hd1 enthält), fügen sie unten ein und ersetzen hd1 mit hd0. Außerdem kommentieren wir alle anderen Kernelzeilen aus, sodass es wie folgt aussieht:
vi /boot/grub/menu.lst
[...] ## ## End Default Options ## title Debian GNU/Linux, kernel 2.6.18-4-486 RAID (hd1) root (hd1,0) kernel /vmlinuz-2.6.18-4-486 root=/dev/md2 ro initrd /initrd.img-2.6.18-4-486 savedefault title Debian GNU/Linux, kernel 2.6.18-4-486 RAID (hd0) root (hd0,0) kernel /vmlinuz-2.6.18-4-486 root=/dev/md2 ro initrd /initrd.img-2.6.18-4-486 savedefault #title Debian GNU/Linux, kernel 2.6.18-4-486 #root (hd0,0) #kernel /vmlinuz-2.6.18-4-486 root=/dev/sda3 ro #initrd /initrd.img-2.6.18-4-486 #savedefault #title Debian GNU/Linux, kernel 2.6.18-4-486 (single-user mode) #root (hd0,0) #kernel /vmlinuz-2.6.18-4-486 root=/dev/sda3 ro single #initrd /initrd.img-2.6.18-4-486 #savedefault ### END DEBIAN AUTOMAGIC KERNELS LIST |
In der gleichen Datei befindet sich eine kopt Zeile; ersetze /dev/sda3 mit /dev/md2 (entferne nicht # am Anfang der Zeile!):
[...] # kopt=root=/dev/md2 ro [...] |
Aktualisiere danach Deine Ramdisk:
update-initramfs -u
… und starte das System neu:
reboot
Es sollte ohne Probleme starten.
Das war es – Du hast die Software RAID1 erfolgreich auf Deinem laufenden Debian Etch System eingerichtet!