In dieser Anleitung wird fdisk für die Einteilung der Festplatten benutzt.
fdisk war bis zum Erscheinen von 2TB-Festplatten das Tool der Wahl.
ACHTUNG
Diese Anleitung ist veraltet und sollte nur noch in
Ausnahmefällen beachtet werden. Diese Anleitung wurde
nicht an das aktuelle System angepasst.
Um ein RAID einzurichten, benutzen wir in dieser Beschreibung das Programm
'mdadm'.
Diese Anleitung wurde speziell auf eisfair-Systeme abgestimmt, auf deren
Besonderheiten zu gegebener Zeit hingewiesen wird.
Es werden alle Arten von Festplatten (IDE, SATA, SCSI) unterstützt. Die
Festplattenbezeichnung (hd[a-f] oder sd[a-f]) muss jeweils den eigenen
Gegebenheiten angepasst werden, unabängig davon, welche Werte in dieser
Anleitung verwendet wurden.
eisfair-1 | |
Das Program 'mdadm' ist ab der base 1.8.0 im Basis-System enthalten und muss deshalb nicht explizit installiert werden. | |
Die notwendigen Kernelmodule sind im Kernel integriert und müssen nicht zusätzlich geladen werden. | |
Wenn das bisherige System auf einer IDE-Festplatte installiert ist, müssen für SCSI- oder SATA-Festplatten noch die entsprechenden Kernelmodule geladen werden. | |
Durch Ausführen des Befehls 'modprobe $modul' wird das Modul geladen. | |
($modul muss in diesem Fall durch den zu ladenden Modulnamen ersetzt werden, z.B. 'ahci') |
eis # modprobe ahci eis #
|
Sollte der zu ladenden Treiber nicht bekannt sein, dann nutzt man den Befehl | |
lspci -v | |
,um diesen zu ermitteln. |
eisfair-2 | |
Das Program 'mdadm' ist bereits im Basissystem enthalten und muss deshalb nicht explizit installiert werden. | |
Die RAID-Kernelmodule müssen geladen werden, wenn bisher noch kein RAID-System installiert worden ist. |
eis # modprobe raid1 eis #
|
Ein eisfair-System wurde bereits auf einer IDE-Festplatte installiert und soll um zwei zusätzliche SATA II-Festplatten in einem RAID-1-Verbund ergänzt werden. Damit ergibt sich beispielsweise folgendes Bild:
eis # fdisk -l Disk /dev/hda: 2111 MB, 2111864832 bytes 16 heads, 63 sectors/track, 4092 cylinders, total 4124736 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xcec8ed6a Device Boot Start End Blocks Id System /dev/hda1 * 63 98783 49360+ 83 Linux /dev/hda2 98784 361871 131544 82 Linux swap / Solaris /dev/hda3 361872 4124735 1881432 83 Linux Disk /dev/sda: 1000.2 GB, 1000204886016 bytes 255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/sda doesn't contain a valid partition table Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes 255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x4136b680 Device Boot Start End Blocks Id System /dev/sdb1 * 64 112454 56195+ 83 Linux /dev/sdb2 112456 385559 136552 82 Linux swap / Solaris /dev/sdb3 385560 4482134 2048287+ 83 Linux /dev/sdb4 4482136 1953520064 974518964+ 83 Linux eis #
|
Das Basis-System liegt in diesem Beispiel auf der Festplatte /dev/hda.
Die zu einem Software-RAID zusammenzufassenden Festplatten sind
/dev/sda: | hat bisher keine Formatierung - ist also neu | |
/dev/sdb: | wurde schon einmal benutzt und muss nun für | |
den Einsatz fit gemacht werden. Erreicht wird dies | ||
durch das Löschen der vorhandenen Datenstruktur: |
eis # dd if=/dev/zero of=/dev/sdb bs=512 count=1 1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.000447 s, 1.1 MB/s eis #
|
Beim Ausführen des Befehls 'fdisk -l' ergibt sich somit folgendes Bild:
eis # fdisk -l Disk /dev/hda: 2111 MB, 2111864832 bytes 16 heads, 63 sectors/track, 4092 cylinders, total 4124736 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xcec8ed6a Device Boot Start End Blocks Id System /dev/hda1 * 63 98783 49360+ 83 Linux /dev/hda2 98784 361871 131544 82 Linux swap / Solaris /dev/hda3 361872 4124735 1881432 83 Linux Disk /dev/sda: 1000.2 GB, 1000204886016 bytes 255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/sda doesn't contain a valid partition table Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes 255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/sdb doesn't contain a valid partition table eis #
|
Auf der ersten Festplatte wird eine Partition angelegt und deren Typ festgelegt. Mittels des fdisk-Befehls werden folgende Schritte ausgeführt:
- | Partition anlegen (hier wird eine primäre Partition angelegt | |
welche die ganze Grösse der Festplatte einnimmt) | ||
- | Typ der Partition auf 'Linux raid auto' ändern | |
- | Partitionstabelle schreiben |
eis # fdisk /dev/sda Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0xd7bfe3c2. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): p Disk /dev/sda: 1000.2 GB, 1000204886016 bytes 255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xd7bfe3c2 Device Boot Start End Blocks Id System Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4, default 1): 1 First sector (63-1953525167, default 63):
|
Wenn die verwendeten Festplatten 4k-Sektorgrößen unterstützen, sollten diese auch verwendet werden. Dafür ist eine Verschiebung des Startpunktes der Daten auf einen durch acht teilbaren Wert notwendig. Dies wird ebenfalls mit Hilfe des fdisk-Befehls durch Ausführen folgender Schritte erreicht:
- | Expertenmodus aktivieren | |
- | Beginn der Daten in der Partition auf durch 8 teilbaren Wert | |
setzen (hier vom Default-Wert 63 auf 64) | ||
- | Partitionstabelle schreiben |
eis # fdisk /dev/sda1 The number of cylinders for this disk is set to 243201. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): p Disk /dev/sda: 2000.3 GB, 2000398934016 bytes 255 heads, 63 sectors/track, 243201 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x1361d2f0 Device Boot Start End Blocks Id System /dev/sda1 1 243201 1953512001 fd Linux raid autodetect Command (m for help): x Expert command (m for help): m Command action b move beginning of data in a partition c change number of cylinders d print the raw data in the partition table e list extended partitions f fix partition order g create an IRIX (SGI) partition table h change number of heads i change the disk identifier m print this menu p print the partition table q quit without saving changes r return to main menu s change number of sectors/track v verify the partition table w write table to disk and exit Expert command (m for help): b Partition number (1-4): 1 New beginning of data (63-3907024064, default 63): 64 Expert command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. eis #
|
Für die, die es kurz mögen, die vorherigen Schritte als Einzeiler mit sfdisk:
Die '0' lässt sich auch durch einen durch 8 teilbaren Wert ersetzen
z.B. '64'
eis # echo '0,,fd' | sfdisk -q -D -uM --no-reread /dev/sda eis #
|
Nachdem die erste Festplatte komplett eingerichtet wurde, überträgt man deren Partitions-Layout auf die zweite Festplatte und begutachtet das Ergebnis:
eis # sfdisk -d /dev/sda | sfdisk -f /dev/sdb eis # eis # fdisk -l Disk /dev/hda: 2111 MB, 2111864832 bytes 16 heads, 63 sectors/track, 4092 cylinders, total 4124736 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xcec8ed6a Device Boot Start End Blocks Id System /dev/hda1 * 63 98783 49360+ 83 Linux /dev/hda2 98784 361871 131544 82 Linux swap / Solaris /dev/hda3 361872 4124735 1881432 83 Linux Disk /dev/sda: 1000.2 GB, 1000204886016 bytes 81 heads, 63 sectors/track, 382818 cylinders, total 1953525168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xd7bfe3c2 Device Boot Start End Blocks Id System /dev/sda1 64 1953525167 976761560 fd Linux raid autodetect Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes 255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 64 1953525167 976761560 fd Linux raid autodetect eis #
|
Falls die Festplatten bereits einmal in einem RAID-Verbund verwendet wurden, muss sichergestellt werden, dass keine Reste der alten RAID-Konfiguration mehr vorhanden sind. Hierzu wird einfach der alte Superblock gelöscht:
eis # mdadm --zero-superblock /dev/sda1 mdadm: Unrecognised md component device - /dev/sda1 eis # mdadm --zero-superblock /dev/sdb1 mdadm: Unrecognised md component device - /dev/sdb1 eis #
|
Falls keine Reste eines früheren RAID-Verbundes gefunden werden, wird von mdadm die oben zu sehende Meldung ausgegeben. Dies ist an dieser Stelle kein Problem und bei neuen Festplatten absolut normal.
Die Festplatten sind nun soweit vorbereitet, um sie zu einem RAID-Verbund zusammenzuführen. Der RAID-Verbund wird im nächsten Schritt mit Hilfe von mdadm angelegt:
eis # mdadm --create /dev/md0 --bitmap=internal --level=1 --raid-disks=2 /dev/sda1 /dev/sdb1 mdadm: array /dev/md0 started. eis #
|
Jetzt beginnt die Synchronisation der RAID-Festplatten, welche man unbedingt bis zum Ende abwarten sollte. Dieser Vorgang kann, abhängig von der Größe der Festplatten, mehrere Stunden dauern. Den aktuellen Status der Synchronisation kann man sich wie folgt anzeigen lassen:
eis # cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdc[1] sdb[0] 1953514496 blocks [2/2] [UU] [>....................] resync = 0.0% (491072/1953514496) finish=397.6min speed=81845K/sec unused devices:
|
Beim Aufruf des Befehls 'watch cat /proc/mdstat' erhält man eine alle zwei Sekunden aktualisierte Statusausgabe und kann den Synchronisationsprozess so nebenher im Auge behalten. Zurück auf die Konsole gelangt man mit 'Strg+C':
eis # watch cat /proc/mdstat Every 2.0s: cat /proc/mdstat Thu Sep 8 17:44:42 2011 Personalities : [raid1] md0 : active raid1 sdc[1] sdb[0] 1953514496 blocks [2/2] [UU] [>....................] resync = 0.0% (491072/1953514496) finish=397.6min speed=81845K/sec unused devices:
|
Nach Abschluss der Synchronisation legt man das Dateisystem an, was
üblicherweise einige Minuten dauert. Das Standard-Dateisystem vieler
Linux-Systeme ist auch heute noch 'ext3 - mkfs.ext3', auch wenn es
diverse Alternativen gibt. 'Wer die Wahl hat, hat die Qual' ;-)
eisfair-1 | |
Neu für eisfair hinzugekommene Dateisysteme sind 'ext4 - mkfs.ext4' und 'xfs - mkfs.xfs'. Zum Einrichten eines 'xfs'-Dateisystems müssen zusätzlich die 'xfs-tools' von Pack-Eis installiert werden. |
eis # mkfs.etx4 /dev/md0 mke2fs 1.41.14 (22-Dec-2010) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 2336 inodes, 9344 blocks 467 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=9699328 2 block groups 8192 blocks per group, 8192 fragments per group 1168 inodes per group Superblock backups stored on blocks: 8193 Writing inode tables: done Creating journal (1024 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 29 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. eis #
|
Dieses Szenario setzt voraus, dass auf einem anderen System ein RAID-Verbund auf einer oder mehreren Platten bereits angelegt wurde und die beinhaltenden Platten in den eisfair-1-Server eingebaut und elektrisch angeschlossen wurden.
Um den existierenden RAID-Verbund mounten zu können, muss dieser zuerst gestartet werden. Dies geht mit folgendem Befehl; ggf. /dev/mdX-Device und die einzelnen Partitionen /dev/hdX bzw. /dev/sdX anpassen.
Beispiel für ein RAID-1 auf zwei Festplatten:
eis # mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 mdadm: /dev/md0 has been started with 2 drives (out of 2) eis #
|
eis # mdadm --assemble /dev/md0 /dev/sdb1 mdadm: /dev/md0 has been started with 1 drive (out of 2) eis #
|
eis # mdadm /dev/md0 -a /dev/sdc1 eis #
|
Der RAID-Verbund ist nun eingerichtet und kann gemountet werden. Im Beispiel wird als Mountpoint das Verzeichnis /data/backup verwendet:
eis # mkdir -p /data/backup eis # ls -l /data/ total 8 drwxr-xr-x 2 root root 4096 Aug 28 16:45 backup drwxr-xr-x 2 root root 4096 Jun 14 15:22 packages eis # mount -t ext4 /dev/md0 /data/backup eis #
|
Die neue Partition im RAID-Verbund ist dem System nun bis zum nächsten Reboot bekannt:
eis # mount /dev/hda3 on / type ext3 (rw,errors=remount-ro,acl,user_xattr) /dev/hda1 on /boot type ext3 (rw,errors=remount-ro) devpts on /dev/pts type devpts (rw) usbfs on /proc/bus/usb type usbfs (rw) /sys on /sys type sysfs (rw) /dev/md0 on /data/backup type ext4 (rw,acl,user_xattr) eis #
|
Um den RAID-Verbund dauerhaft zu aktivieren, damit er auch einen
Neustart übersteht, sind folgende Schritte durchzuführen:
Mit Hilfe des Editors 'joe' öffnet man die Datei /etc/fstab und fügt eine zusätzliche Zeile, ebenfalls beginnend mit UUID=, hinzu.
Ermitteln lässt sich der Wert der hinter UUID= erforderlich ist mit foldgendem Kommando.
eis # blkid -o export /dev/md0 | grep '^UUID' eis #
|
joe /etc/fstab |
---|
Um eventuell fehlende Kernelmodule und das Starten des RAID-Verbundes in die initrd zu bekommen, empfiehlt es sich an dieser Stelle ein Kernelupdate durchzuführen. Auch wenn der Kernel bereits auf dem aktuellen Stand sein sollte, wird durch ein Kernelupdate sicher gestellt, dass eine korrekte initrd-Datei erzeugt wird.
Natürlich ist es auch möglich, die initrd manuell zu bearbeiten und die notwendigen Angaben mit dem Editor 'joe' einzufügen. Vor eiskernel mit der Version 2.11.0 wird eine normale initrd verwendet, die wie folgt entpackt und gemountet wird:
eis # mkdir -p /tmp/initrd/init eis # cd /tmp/initrd eis # cp -a /boot/initrd.gz . eis # gzip -d initrd.gz eis # modprobe loop eis # mount -o loop initrd init eis #
|
joe init/linuxrc |
---|
Ab eiskernel 2.11.0 wird eine initramfs verwendet und das oben beschriebene Verfahren funktioniert so nicht mehr. Ein Beispiel für die notwendigen Befehle findet Ihr unter 'Software-RAID - GPT-fdisk'. Vor eiskernel 2.7.1 wird das Raid mit dem Befehl raidautorun der busybox gestartet. Am Dateiende die folgende Zeile hinzufügen (Leerzeile am Ende nicht vergessen):
/sbin/raidautorun /dev/md0
Nach eiskernel 2.7.1 und wenn Raids mit Meta-Data 1.2 existieren, wird das Raid immer mit mdadm in der initrd assembliert. Ein Beispiel für die notwendigen Befehle findet Ihr unter 'Software-RAID - GPT-fdisk'. Nun wird die initrd wieder zusammengepackt und zurückkopiert:
eis # umount init eis # gzip -9 initrd eis # cp initrd.gz /boot eis # reboot eis #
|
Nach dem Neustart des Servers prüfen wir noch einmal, ob die neue Partition im RAID-Verbund korrekt eingebunden wurde.
Welcome to eisfair! base : 2.8.12 eiskernel: 3.16.74-eisfair-1-SMP eis # eis # mount /dev/hda3 on / type ext3 (rw,errors=remount-ro,acl,user_xattr) /dev/hda1 on /boot type ext3 (rw,errors=remount-ro) devpts on /dev/pts type devpts (rw) usbfs on /proc/bus/usb type usbfs (rw) /sys on /sys type sysfs (rw) /dev/md0 on /data/backup type ext4 (rw,acl,user_xattr) eis #
|
An dieser Stelle ist die Konfiguration des RAID-Verbundes und dessen
dauerhafte Einbindung in das eisfair-System abgeschlossen.
Zunächst muss die mdadm-Konfigurationsdatei aktualisiert werden:
eis # mdadm --examine --scan >> /etc/mdadm/mdadm.conf mdadm: excess address on MAIL line: mdadm/mail_to - ignored mdadm: excess address on MAIL line: doesnt exist - ignored eis #
|
Die Konfiguration sollte nun in etwa wie folgt aussehen:
eis # 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
|
Nachdem die Array-Zeile eingefügt wurde, müssen noch die folgenden Anpassungen in der mdadm.config-Datei vorgenommen werden:
1. Eintragen der zu verwendenden Festplatten unter DEVICE:
Eintrag alt: |
DEVICE partitions |
Eintrag neu: |
DEVICE /dev/sdb[0-9] /dev/sdc[0-9] |
2. Erweitern der ARRAY-Zeile um die metadata-Angabe nach folgendem Schema:
Eintrag alt: |
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=8f00... |
Eintrag neu: |
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=00.90 UUID=8f00... |
3. Prüfen der eingetragenen UUID und gegebenenfalls deren Korrektur. In der Ausgabe von 'blkid' ist die UUID der beiden Festplatten im RAID-Verbund zu sehen. Diese ist für beide Festplatten identisch und muss sich ebenfalls in der mdadm.config-Datei befinden. Achtung, die Schreibweise unterscheidet sich geringfügig. Bei der Ausgabe von blkid werden die UUIDs mit '-' getrennt, in der mdadm.config-Datei mit ':' und noch dazu an anderer Stelle angezeigt. Hier ein korrektes Beispiel:
eis # blkid ... /dev/sdb1: UUID="f728db1b-06e6-0380-36b8-364fac71c0cc" TYPE="linux_raid_member" /dev/sdc1: UUID="f728db1b-06e6-0380-36b8-364fac71c0cc" TYPE="linux_raid_member" ... eis # grep ARRAY /etc/mdadm/mdadm.conf} ARRAY /dev/md0 level=raid1 num-devices=2 metadata=00.90 UUID=f728db1b:06e60380:36b8364f:ac71c0cc eis #
|
Nun muss der RAID-Verbund noch in die fstab-Datei eingetragen werden. Bei einer Standardinstallation von eisfair-2 ohne separate Datenpartition sieht die fstab beispielsweise wie folgt aus:
/etc/fstab #(Ausgabe für das HowTo formatiert) proc /proc proc defaults 0 0 UUID=41b0... / ext3 defaults,errors=remount-ro,acl,user_xattr 0 1 UUID=c99e... /boot ext3 defaults,errors=remount-ro,acl,user_xattr 0 1 UUID=a101... none swap sw 0 0 /dev/cdrom /media/cdrom udf,iso9660 user,noauto,exec,utf8 0 0 /dev/fd0 /media/floppy auto rw,user,noauto,exec,utf8 0 0
Um nun den RAID-Verbund in die fstab einzutragen, wird die UUID benötigt. Diese wird entweder wieder mit 'blkid' oder mit 'vol_id' wie folgt ermittelt:
eis # vol_id /dev/md0 d2dcb1cd-2ba4-4f89-8bee-8c44213b2848 eis #
|
Mit dieser UUID wir nun der entsprechende Eintrag in die fstab-Datei, nach folgendem Schema, vorgenommen (Leerzeile am Zeilenende nicht vergessen):
vi /etc/fstab |
UUID=<hier-UUID-eintragen> /data/backup ext3 defaults,errors=remount-ro,acl,user_xattr 0 2
Im letzten Schritt muss in der Grub-Konfiguration das Laden der RAID-Module aktiviert werden. Dazu wird die Datei /boot/grub/menu.lst im Editor geöffnet:
vi /boot/grub/menu.lst |
und die Kernel-Zeile um die Angabe 'raid=1' ergänzt werden:
Eintrag alt: |
kernel /boot/vmlinux root=UUID=41b0... ro quiet console=tty7 kmapger |
Eintrag neu: |
kernel /boot/vmlinux root=UUID=41b0... ro quiet console=tty7 kmapger raid=1 |
An dieser Stelle ist die Konfiguration des RAID-Verbundes und dessen dauerhafte Einbindung in das eisfair-System abgeschlossen. Dies sollte noch durch einen Neustart des Servers überprüft werden:
eis # reboot eis # eis # df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 35G 408M 33G 2% / varrun 1010M 32K 1010M 1% /var/run udev 1010M 48K 1010M 1% /dev devshm 1010M 0 1010M 0% /dev/shm /dev/sda1 69M 14M 51M 22% /boot /dev/md0 1.9T 196M 1.8T 1% /data/backup eis #
|
An dieser Stelle ist die Konfiguration des RAID-Verbundes und dessen
dauerhafte Einbindung in das eisfair-System abgeschlossen.
Ein eisfair-System wurde bereits mit 4 Partitionen auf einer Festplatte
installiert, d.h. es wurde dabei auch eine zusätzliche /data-Partition
angelegt. Dieses eisfair-System soll nun komplett auf einen RAID-1-Verbund umziehen.
Damit ergibt sich folgendes Bild:
/dev/sda | ⇒ | Erste Festplatte mit dem vorhandenen eisfair-System | |
/dev/sda1 | ⇒ | /boot | |
/dev/sda2 | ⇒ | swap-Partition | |
/dev/sda3 | ⇒ | / | |
/dev/sda4 | ⇒ | /data | |
/dev/sdb | ⇒ | Zweite 'leere' Festplatte |
eis # fdisk -l Disk /dev/sda: 160.0 GB, 160041885696 bytes 255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x2fa4f6c3 Device Boot Start End Blocks Id System /dev/sda1 * 63 112454 56196 83 Linux /dev/sda2 112455 385559 136552+ 82 Linux swap / Solaris /dev/sda3 385560 21366449 10490445 83 Linux /dev/sda4 21366450 312576704 145605127+ 83 Linux Disk /dev/sdb: 160.0 GB, 160040803840 bytes 255 heads, 63 sectors/track, 19457 cylinders, total 312579695 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/sdb doesn't contain a valid partition table eis #
|
Auf der ersten Festplatte ändert man nun die Partitions-Ids aller vorhandenen Partitionen nach 'fd' 'Linux raid autodetect':
eis # sfdisk --change-id /dev/sda 1 fd Done eis # sfdisk --change-id /dev/sda 2 fd Done eis # sfdisk --change-id /dev/sda 3 fd Done eis # sfdisk --change-id /dev/sda 4 fd Done eis #
|
Für die, die es kurz mögen, gibt es diese Befehle noch einmal als Einzeiler mit sfdisk:
eis # for i in 1 2 3 4; do sfdisk --change-id /dev/sda $i fd ; done Done Done Done Done eis #
|
Die Partitionen stellen sich nun wie folgt dar:
eis # fdisk -l Disk /dev/sda: 160.0 GB, 160041885696 bytes 255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x2fa4f6c3 Device Boot Start End Blocks Id System /dev/sda1 * 63 112454 56196 fd Linux raid autodetect /dev/sda2 112455 385559 136552+ fd Linux raid autodetect /dev/sda3 385560 21366449 10490445 fd Linux raid autodetect /dev/sda4 21366450 312576704 145605127+ fd Linux raid autodetect Disk /dev/sdb: 160.0 GB, 160040803840 bytes 255 heads, 63 sectors/track, 19457 cylinders, total 312579695 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/sdb doesn't contain a valid partition table eis #
|
Nachdem die erste Festplatte komplett eingerichtet wurde, überträgt man deren Partitions-Layout auf die zweite Festplatte und begutachtet das Ergebnis:
eis # sfdisk -d /dev/sda | sfdisk -f /dev/sdb Checking that no-one is using this disk right now ... OK Disk /dev/sdb: 19457 cylinders, 255 heads, 63 sectors/track sfdisk: ERROR: sector 0 does not have an msdos signature /dev/sdb: unrecognized partition table type Old situation: No partitions found New situation: Units = sectors of 512 bytes, counting from 0 Device Boot Start End #sectors Id System /dev/sdb1 * 63 112454 112392 fd Linux raid autodetect /dev/sdb2 112455 385559 273105 fd Linux raid autodetect /dev/sdb3 385560 21366449 20980890 fd Linux raid autodetect /dev/sdb4 21366450 312576704 291210255 fd Linux raid autodetect Successfully wrote the new partition table Re-reading the partition table ... If you created or changed a DOS partition, /dev/foo7, say, then use dd(1) to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (See fdisk(8).) eis #
|
eis # sfdisk -luS Disk /dev/sda: 19457 cylinders, 255 heads, 63 sectors/track Units = sectors of 512 bytes, counting from 0 Device Boot Start End #sectors Id System /dev/sda1 * 63 112454 112392 fd Linux raid autodetect /dev/sda2 112455 385559 273105 fd Linux raid autodetect /dev/sda3 385560 21366449 20980890 fd Linux raid autodetect /dev/sda4 21366450 312576704 291210255 fd Linux raid autodetect Disk /dev/sdb: 19457 cylinders, 255 heads, 63 sectors/track Units = sectors of 512 bytes, counting from 0 Device Boot Start End #sectors Id System /dev/sdb1 * 63 112454 112392 fd Linux raid autodetect /dev/sdb2 112455 385559 273105 fd Linux raid autodetect /dev/sdb3 385560 21366449 20980890 fd Linux raid autodetect /dev/sdb4 21366450 312576704 291210255 fd Linux raid autodetect eis #
|
Falls die Festplatten bereits einmal in einem RAID-Verbund verwendet wurden, muss sichergestellt werden, dass keine Reste der alten RAID-Konfiguration mehr vorhanden sind. Hierzu wird einfach der alte Superblock gelöscht.
eis # mdadm --zero-superblock /dev/sdb1 mdadm: Unrecognised md component device - /dev/sdb1 eis # mdadm --zero-superblock /dev/sdb2 mdadm: Unrecognised md component device - /dev/sdb2 eis # mdadm --zero-superblock /dev/sdb3 mdadm: Unrecognised md component device - /dev/sdb3 eis # mdadm --zero-superblock /dev/sdb4 mdadm: Unrecognised md component device - /dev/sdb4 eis #
|
Falls keine Reste eines früheren RAID-Verbundes gefunden werden, wird die oben zu sehende Meldung ausgegeben. Das ist an dieser Stelle kein Problem und bei neuen Festplatten absolut normal.
Die Festplatten sind nun soweit vorbereitet, dass ein RAID-Verbund
angelegt werden kann. Hierzu verwendet man den mdadm. Zur besseren
Orientierung wird empfohlen, die Bezeichnungen der 'md'-Devices
an die der vorherigen Partitionen anzulehnen:
/dev/sda1 | ⇒ | /dev/md1 | |
/dev/sda2 | ⇒ | /dev/md2 | |
/dev/sda3 | ⇒ | /dev/md3 | |
/dev/sda4 | ⇒ | /dev/md4 | |
Da die erste Festplatte die zu kopierenden Daten enthält, wird sie beim Anlegen des RAID-Verbundes als 'missing' deklariert. Das Schlüsselwort 'missing' sagt lediglich aus, dass noch Devices fehlen und bezieht sich nicht auf das danach angegebene Device.
eis # mdadm --create /dev/md1 --bitmap=internal --level=1 --raid-disks=2 missing /dev/sdb1 mdadm: /dev/sdb1 appears to contain an ext2fs file system size=56128K mtime=Tue Sep 20 20:13:39 2011 Continue creating array? y mdadm: array /dev/md1 started. eis # eis # mdadm --create /dev/md2 --bitmap=internal --level=1 --raid-disks=2 missing /dev/sdb2 mdadm: array /dev/md2 started. eis # eis # mdadm --create /dev/md3 --bitmap=internal --level=1 --raid-disks=2 missing /dev/sdb3 mdadm: /dev/sdb3 appears to contain an ext2fs file system size=1052160K mtime=Thu Sep 8 11:39:23 2011 Continue creating array? y mdadm: array /dev/md3 started. eis # eis # mdadm --create /dev/md4 --bitmap=internal --level=1 --raid-disks=2 missing /dev/sdb4 mdadm: array /dev/md4 started. eis #
|
Das Ergebnis lässt man sich zur Kontrolle anzeigen:
eis # cat /proc/mdstat Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] md4 : active raid1 sdb4[1] 145605056 blocks [2/1] [_U] md3 : active raid1 sdb3[1] 10490368 blocks [2/1] [_U] md2 : active raid1 sdb2[1] 136448 blocks [2/1] [_U] md1 : active raid1 sdb1[1] 56128 blocks [2/1] [_U] unused devices:
|
Nun legt man das Dateisystem an, was üblicherweise einige Minuten
dauert. Das Standard-Dateisystem vieler Linux-Systeme ist auch heute
noch 'ext3 - mkfs.ext3', auch wenn es diverse Alternativen gibt.
'Wer die Wahl hat, hat die Qual' ;-)
eisfair-1 | |
Neu für eisfair hinzugekommene Dateisysteme sind 'ext4 - mkfs.ext4' und 'xfs - mkfs.xfs'. Zum Einrichten eines 'xfs'-Dateisystems müssen zusätzlich die 'xfs-tools' von Pack-Eis installiert werden. | |
mkfs.ext4 | /dev/md1 | |
mkfs.ext4 | /dev/md3 | |
mkfs.ext4 | /dev/md4 | |
mkswap | /dev/md2 |
eis # mkfs.etx4 /dev/md1 mke2fs 1.41.14 (22-Dec-2010) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 14056 inodes, 56128 blocks 2806 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=57671680 7 block groups 8192 blocks per group, 8192 fragments per group 2008 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 20 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. eis # eis # mkfs.etx4 /dev/md3 mke2fs 1.41.14 (22-Dec-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 655776 inodes, 2622592 blocks 131129 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2688548864 81 block groups 32768 blocks per group, 32768 fragments per group 8096 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 20 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. eis # eis # mkfs.etx4 /dev/md4 mke2fs 1.41.14 (22-Dec-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 9101312 inodes, 36401264 blocks 1820063 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=0 1111 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 32 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. eis # eis # mkswap /dev/md2 mkswap: /dev/md2: warning: don't erase bootbits sectors on whole disk. Use -f to force. Setting up swapspace version 1, size = 136444 KiB no label, UUID=0d01a7f7-ae3a-4d99-834e-a5805bb10231 eis #
|
Wenn das komplette RAID-Setup über eine Secure-Shell durchgeführt
wird, sollte man vor dem ersten Reboot die Überprüfung des
Root-Datei-Systems unterbinden. Dazu ist in der Datei /etc/init.d/checkfs
die Zeile '/sbin/fsck -A -p 2>/dev/null' auszukommentieren und diese dann
zu speichern:
joe /etc/init.d/checkfs |
---|
Das Root-Device (/dev/md3) mountet man nach /mnt und legt dort ein neues boot-Verzeichnis an. Dieses boot-Verzeichnis verwendet man nun als Mountpoint für das Boot-Device (/dev/md1):
eis # mount -t ext4 /dev/md3 /mnt eis # mkdir -p /mnt/boot eis # mount -t ext4 /dev/md1 /mnt/boot eis #
|
Die Partitionen mit dem Root-Verzeichnis sowie dem Boot-Verzeichnis werden auf die neu erstellten Multiple-Devices kopiert.
Da der Kopiervorgang selbst einige Minuten dauern kann, wartet man so lange, bis der Eingabe-Prompt wieder erscheint:
eis # cd / eis # find . -xdev | cpio -pmv /mnt eis # eis # cd /boot eis # find . -xdev | cpio -pmv /mnt/boot eis #
|
Im Anschluss müssen nun noch im /dev Verzeichnis die Devices console und null angelegt werden. Diese Devices müssen beim boot vorhanden sein.
Dazu wechselt man in das Verzeichnis:
cd /mnt/dev
mknod -m 0660 console c 5 1
mknod -m 0660 null c 1 3
Mit Hilfe des Editors 'joe' öffnet man die Datei /mnt/etc/fstab und
passt sie an die neuen Multiple-Device-Namen an. Bitte eine Leerzeile
am Dateiende nicht vergessen:
Ermitteln lässt sich der Wert der jeweils hinter UUID= erforderlich ist mit foldgendem Kommando. Bitte den Wert /dev/mdX bitte jeweils anpassen.
eis # blkid -o export /dev/md1 | grep '^UUID' eis #
|
joe /mnt/etc/fstab |
---|
Jetzt kann die aktuelle /boot-Partition ausgehängt und stattdessen /dev/sda1 nach /mnt/boot eingehängt werden. Dies ist notwendig, um die korrekte Installation des Bootloaders Lilo zu gewährleisten:
eis # cd / eis # umount /boot eis # mount /dev/sda1 /mnt/boot eis #
|
Im nächsten Schritt wird die Datei /mnt/etc/lilo.conf so modifiziert,
dass das Boot-Device immer noch ein herkömmliches Laufwerk /dev/sda
bleibt, das Root-Datei-System sich jedoch bereits auf einem
Multiple-Device befindet:
joe /mnt/etc/lilo.conf |
---|
Damit das zukünftige RAID auch startet, muss die initrd geöffnet und das Skript 'linuxrc' manipuliert werden. Vor eiskernel mit der Version 2.11.0 wird eine normale initrd verwendet, die wie folgt entpackt und gemountet wird:
eis # mkdir -p /tmp/initrd/init eis # cd /tmp/initrd eis # cp -a /mnt/boot/initrd.gz . eis # gzip -d initrd.gz eis # modprobe loop eis # mount -o loop initrd init eis #
|
joe init/linuxrc |
---|
Ab eiskernel 2.11.0 wird eine initramfs verwendet und das oben beschriebene Verfahren funktioniert so nicht mehr. Ein Beispiel für die notwendigen Befehle findet Ihr unter 'Software-RAID - GPT-fdisk'. Vor eiskernel 2.7.1 wird das Raid mit dem Befehl raidautorun der busybox gestartet. Am Dateiende die folgende Zeile hinzufügen (Leerzeile am Ende nicht vergessen):
/sbin/raidautorun /dev/md1
Nach eiskernel 2.7.1 und wenn Raids mit Meta-Data 1.2 existieren, wird das Raid immer mit mdadm in der initrd assembliert. Ein Beispiel für die notwendigen Befehle findet Ihr unter 'Software-RAID - GPT-fdisk'. Nun wird die initrd wieder zusammengepackt und zurückkopiert:
eis # umount init eis # gzip -9 initrd eis # cp initrd.gz /mnt/boot eis #
|
Um die Voraussetzung für einen fehlerfreien Neustart des Servers zu
schaffen, ist es notwendig, die zuvor genannten Anpassungen an der Datei
/mnt/etc/lilo.conf vorzunehmen. Danach kann der lilo-Befehl auf dem
Verzeichnis /mnt ausgeführt werden:
eis # cd / eis # lilo -r /mnt Added eis * eis #
|
Abschließend sind noch folgende Schritte auszuführen, um einer
Kernelpanik beim Systemstart vorzubeugen. Die Partition /dev/sda1
ist noch nach /mnt/boot eingehängt und muss nun wieder nach /boot
eingehängt werden. Anschließend wird das System neu gestartet:
eis # umount /dev/sda1 eis # mount /dev/sda1 /boot eis # eis # cp -a /boot/initrd.gz /mnt/boot eis # eis # reboot eis #
|
Wenn alle bisherigen Schritte ohne Probleme durchgeführt wurden, läuft der RAID-Verbund zwar bereits, jedoch ohne aktive Redundanz, da die Festplatte /dev/sda noch nicht Teil des RAID-Verbundes ist:
eis # mount /dev/md3 on / type ext4 (rw,errors=remount-ro,acl,user_xattr) /dev/md1 on /boot type ext4 (rw,errors=remount-ro) /dev/md4 on /data type ext4 (rw,acl,user_xattr) devpts on /dev/pts type devpts (rw) usbfs on /proc/bus/usb type usbfs (rw) /sys on /sys type sysfs (rw) eis #
|
Die Festplatte /dev/sda wird nun in den RAID-Verbund integriert:
eis # mdadm /dev/md1 --add /dev/sda1 mdadm: added /dev/sda1 eis # mdadm /dev/md2 --add /dev/sda2 mdadm: added /dev/sda2 eis # mdadm /dev/md3 --add /dev/sda3 mdadm: added /dev/sda3 eis # mdadm /dev/md4 --add /dev/sda4 mdadm: added /dev/sda4 eis #
|
Jetzt beginnt die Synchronisation der RAID-Festplatten, welche man
unbedingt bis zum Ende abwarten sollte. Dieser Vorgang kann, abhängig
von der Größe der Festplatten, mehrere Stunden dauern. Den aktuellen
Status der Synchronisation kann man sich wie folgt anzeigen lassen:
eis # cat /proc/mdstat Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] md2 : active raid1 sda2[0] sdb2[1] 136448 blocks [2/2] [UU] md3 : active raid1 sda3[2] sdb3[1] 10490368 blocks [2/1] [_U] [=========>...........] recovery = 48.0% (5042688/10490368) finish=1.8min speed=48404K/sec md4 : active raid1 sda4[2] sdb4[1] 145605056 blocks [2/1] [_U] resync=DELAYED md1 : active raid1 sda1[0] sdb1[1] 56128 blocks [2/2] [UU] unused devices:
|
Beim Aufruf des Befehls 'watch cat /proc/mdstat' erhält man eine alle zwei
Sekunden aktualisierte Statusausgabe und kann den Synchronisationsprozess
so nebenher im Auge behalten. Zurück auf die Konsole gelangt man mit 'Strg+C':
eis # watch cat /proc/mdstat Every 2.0s: cat /proc/mdstat Thu Sep 8 17:44:42 2011 Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] md2 : active raid1 sda2[0] sdb2[1] 136448 blocks [2/2] [UU] md3 : active raid1 sda3[2] sdb3[1] 10490368 blocks [2/1] [_U] [=========>...........] recovery = 48.0% (5042688/10490368) finish=1.8min speed=48404K/sec md4 : active raid1 sda4[2] sdb4[1] 145605056 blocks [2/1] [_U] resync=DELAYED md1 : active raid1 sda1[0] sdb1[1] 56128 blocks [2/2] [UU] unused devices:
|
Damit bei jedem Systemstart wieder eine Überprüfung des Dateisystems
angestoßen wird, muss die in einem vorherigen Schritt auskommentierte
Zeile '#/sbin/fsck -A -p 2>/dev/null' wieder aktiviert werden:
joe /etc/init.d/checkfs |
---|
Auch die lilo-Konfiguration muss nun noch an die veränderten
Rahmenbedingungen angepasst werden, um den Start von allen
Laufwerken des RAID-Verbundes zu ermöglichen:
joe /etc/lilo.conf |
---|
Zum Abschluss wird noch einmal der lilo-Befehl ausgeführt und das eisfair-System neu gestartet.
eis # lilo Added eis * The boot record of /dev/md1 has been updated. The boot record of /dev/sda has been updated. Warning: /dev/sdb is not on the first disk The boot record of /dev/sdb has been updated. One warning was issued. eis # eis # reboot eis #
|
An dieser Stelle ist die Konfiguration des RAID-Verbundes und dessen
dauerhafte Einbindung in das eisfair-System abgeschlossen. Dies
sollte noch durch einen Neustart des Servers überprüft werden:
eis # Welcome to eisfair! base : 2.8.12 eiskernel: 3.16.74-eisfair-1-SMP eis # eis # mount /dev/md3 on / type ext4 (rw,errors=remount-ro,acl,user_xattr) /dev/md1 on /boot type ext4 (rw,errors=remount-ro) /dev/md4 on /data type ext4 (rw,acl,user_xattr) devpts on /dev/pts type devpts (rw) usbfs on /proc/bus/usb type usbfs (rw) /sys on /sys type sysfs (rw) eis #
|
Die Installation eines RAID-5 erfolgt analog eines RAID-1 mit einer dritten Festplatte.
Der wesentlichste und wichtigste Unterschied ist, dass ein Linux-System nicht von einem Software-RAID-5 booten kann. Das heisst nun aber nicht, dass sich ein System mit Software-RAID-5 nicht einrichten und betreiben lässt. Es benötigt dafür nur eine Boot-Partition, die kein RAID-5 enthält. Dafür ist ein RAID-1 genau richtig.
In der /etc/lilo.conf ist dafür der Wert
raid-extra-boot = mbr
zu setzen. Dann wird von ``lilo`` der Bootloader auf alle 3 Festplatten geschrieben. Dieses Vorgehen wird von lilo dabei auch entsprechend kommentiert.
Ein Software-RAID wird vom Kernel bereit gestellt. Das bedeutet, der Kernel muss selbst erst einmal geladen sein, um dieses Software-RAID zu initalisieren. Wenn nun /boot mit dem zu ladenen Kernel aber auf einem RAID-5 liegen würde, bei dem die Daten über 3 Festplatten verteilt sind, müßte der Kernel von einem Array geladen werden, welches nur der Kernel selber initialisieren kann ...
Weitere Tests lassen sich realisieren, indem man einzelne Festplatten nacheinander hardwareseitig abklemmt. Es ist darauf zu achten, dass die Synchronisation immer vollständig erfolgt ist, bevor ein Reboot ausgeführt wird. Ist alles korrekt konfiguriert, muss das System von jedem Laufwerk ohne Fehlermeldungen hochfahren.
Bei Ausfall einer Festplatte in einem Software-RAID-Verbund sind im Wesentlichen die gleichen Schritte wie bei dem Hinzufügen der 2. Festplatte, weiter vorne beschrieben, auszuführen.
eis # hdparm -i /dev/hdb /dev/hdb: Model=WDC WD3200AAJB-00J3A0, FwRev=01.03E01, SerialNo=WD-WCAV2AV04526 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq } RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=50 BuffType=unknown, BuffSize=8192kB, MaxMultSect=16, MultSect=16 CurCHS=65535/1/63, CurSects=4128705, LBA=yes, LBAsects=625142448 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120} PIO modes: pio0 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 AdvancedPM=no WriteCache=enabled Drive conforms to: Unspecified: ATA/ATAPI-1,2,3,4,5,6,7 * signifies the current active mode eis #
|
eis # mdadm /dev/md1 --fail /dev/hdb1 mdadm: set /dev/hdb1 faulty in /dev/md1 eis # mdadm /dev/md2 --fail /dev/hdb2 mdadm: set /dev/hdb2 faulty in /dev/md2 eis # mdadm /dev/md3 --fail /dev/hdb3 mdadm: set /dev/hdb3 faulty in /dev/md3 eis # mdadm /dev/md4 --fail /dev/hdb4 mdadm: set /dev/hdb4 faulty in /dev/md4 eis #
|
eis # mdadm /dev/md1 --remove /dev/hdb1 mdadm: hot removed /dev/hdb1 eis # mdadm /dev/md2 --remove /dev/hdb2 mdadm: hot removed /dev/hdb2 eis # mdadm /dev/md3 --remove /dev/hdb3 mdadm: hot removed /dev/hdb3 eis # mdadm /dev/md4 --remove /dev/hdb4 mdadm: hot removed /dev/hdb4 eis #
|
eis # sfdisk -d /dev/sda | sfdisk -f /dev/sdb Checking that no-one is using this disk right now ... OK Disk /dev/hdb: 19457 cylinders, 255 heads, 63 sectors/track sfdisk: ERROR: sector 0 does not have an msdos signature /dev/sdb: unrecognized partition table type Old situation: No partitions found New situation: Units = sectors of 512 bytes, counting from 0 Device Boot Start End #sectors Id System /dev/hdb1 * 63 112454 112392 fd Linux raid autodetect /dev/hdb2 112455 385559 273105 fd Linux raid autodetect /dev/hdb3 385560 21366449 20980890 fd Linux raid autodetect /dev/hdb4 21366450 312576704 291210255 fd Linux raid autodetect Successfully wrote the new partition table Re-reading the partition table ... If you created or changed a DOS partition, /dev/foo7, say, then use dd(1) to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (See fdisk(8).) eis #
|
eis # sfdisk -luS Disk /dev/sda: 19457 cylinders, 255 heads, 63 sectors/track Units = sectors of 512 bytes, counting from 0 Device Boot Start End #sectors Id System /dev/sda1 * 63 112454 112392 fd Linux raid autodetect /dev/sda2 112455 385559 273105 fd Linux raid autodetect /dev/sda3 385560 21366449 20980890 fd Linux raid autodetect /dev/sda4 21366450 312576704 291210255 fd Linux raid autodetect Disk /dev/sdb: 19457 cylinders, 255 heads, 63 sectors/track Units = sectors of 512 bytes, counting from 0 Device Boot Start End #sectors Id System /dev/hdb1 * 63 112454 112392 fd Linux raid autodetect /dev/hdb2 112455 385559 273105 fd Linux raid autodetect /dev/hdb3 385560 21366449 20980890 fd Linux raid autodetect /dev/hdb4 21366450 312576704 291210255 fd Linux raid autodetect eis #
|
eis # mdadm /dev/md1 --add /dev/hdb1 mdadm: added /dev/hdb1 eis # mdadm /dev/md2 --add /dev/hdb2 mdadm: added /dev/hdb2 eis # mdadm /dev/md3 --add /dev/hdb3 mdadm: added /dev/hdb3 eis # mdadm /dev/md4 --add /dev/hdb4 mdadm: added /dev/hdb4 eis #
|
Nach der Synchronisation ist der RAID-Verbund wieder vollständig.
Es ist unbedingt zu beachten, dass ein RAID-Verbund kein Backup ersetzt.
Aus diesem Grund wird empfohlen, eine verlässliche Sicherungsstrategie
zu erstellen.
Darüberhinaus sollte vor der Überführung eines bestehenden
eisfair-Systems in einen RAID-Verbund, wie vor allen großen Änderungen
an der Hard- oder Software, eine Datensicherung auf einen externen
Datenträger durchgeführt werden.
Für die Erstellung dieser Anleitung wurde u.a. auf die auf
eisfair.org
abgelegten
Anleitungen von Jürgen Witt und Manfred Reiland
zurückgegriffen.