NonRaid zu (software)Raid1 SuSE 10 1

Aus Linupedia.org
Version vom 31. August 2006, 09:00 Uhr von Admine (Diskussion | Beiträge) (zwischenspeichern)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Oftmals ist es so, dass man sich nicht schon bei der Installation dazu entschlossen hat, gleich auf ein SoftwareRaid zu Installieren. Weil man erstmal das neue System testen wollte, ohne das Alte gleich zu verlieren, oder warum auch immer. Dann hat man ein schon fertig konfiguriertes Neues System, das aber nicht gespiegelt ist, und ganz neu installieren möchte man nicht noch mal, weil schon viel zu viel Arbeit in das neue System geflossen ist.

Ein schon laufendes System dann später auf Raid-1 umzustellen, ist duchaus möglich, benötigt aber eine Menge Handarbeit, ansonsten kann man versuchen sich einige Arbeit zu sparen indem man den Weg über ein komplettes SystemBackup geht, läuft dann aber dennoch Gefahr, in die Konfigurationsfallen zu tappen.

Leider ist es so, dass die meisten HOWTOs zu diesem Thema wegen irgendwelcher Kleinigkeiten, Versionsänderungen an diversen Programmen oder Scripten, oder Suse-Spezialitäten nicht auf einem SuSE 10.1 und SCSI-Devices funktioniert, desshalb habe ich mal meine Erfahrungen zu einem HOWTO zusammengestellt.


Warnung: es ist nun mal so, dass jedes Linuxsystem anders konfiguriert ist, es muss also mit einigen Optionen innerhalb der Befehle an jedes System angepasst werden, und kann nicht einfach auf jedem Rechner einfach so abgetippt werden. Es ist also erforderlich, einige Erfahrungen im Umgang als root auf einer Shell unter Linux allgemein zu haben, sowie einige Erfahrungen mit fstab und menu.lst, auch schon Erfahrungen mit mdadm können keinesfalls schaden.


Die bestehende Konfiguration:

automat:/proc # fdisk -l

Disk /dev/sda: 36.7 GB, 36703932928 bytes
64 heads, 32 sectors/track, 35003 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          65       66544   83  Linux
/dev/sda2              66        5186     5243904   83  Linux
/dev/sda3            5187       25667    20972544   83  Linux
/dev/sda4           25668       35003     9560064    f  W95 Ext'd (LBA)
/dev/sda5           25668       27716     2098160   82  Linux swap / Solaris
/dev/sda6           27717       35003     7461872   83  Linux 

Disk /dev/sdb: 36.7 GB, 36703932928 bytes
64 heads, 32 sectors/track, 35003 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       35003    35843056   83  Linux 


automat:/proc # cat /etc/fstab
/dev/sda2            /                    ext3       acl,user_xattr        1 1
/dev/sda5            swap                 swap       pri=42                0 0
/dev/sda1            /boot                ext2       acl,user_xattr        1 2
/dev/sda3            /home                ext3       acl,user_xattr        1 2
/dev/sda6            /data                ext2       auto,ro               1 2
devpts               /dev/pts             devpts     mode=0620,gid=5       0 0
proc                 /proc                proc       defaults              0 0
usbfs                /proc/bus/usb        usbfs      noauto                0 0
sysfs                /sys                 sysfs      noauto                0 0
/dev/fd0             /media/floppy        auto       noauto,user,sync      0 0


wir haben also 2 gleiche Platten, sdb ist derzeit nicht in Benutzung, wir haben mehrere Linux Filesysteme /boot ist ein separates Filesystem, das Howto ist aber so geschrieben, das es egal ist ob es separat oder mit auf der Rootpartition ist. Zuerst klonen wir den gesamte Partionstabelle von sda auf sdb

automat:/proc # sfdisk -d /dev/sda  > /tmp/sda.txt
automat:/proc # sfdisk /dev/sdb < /tmp/sda.txt
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdb: 35003 cylinders, 64 heads, 32 sectors/track
Old situation:
Units = cylinders of 1048576 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdb1          0+  35002   35003-  35843056   83  Linux
/dev/sdb2          0       -       0          0    0  Empty
/dev/sdb3          0       -       0          0    0  Empty
/dev/sdb4          0       -       0          0    0  Empty
New situation:
Units = sectors of 512 bytes, counting from 0

   Device Boot    Start       End   #sectors  Id  System
/dev/sdb1   *        32    133119     133088  83  Linux
/dev/sdb2        133120  10620927   10487808  83  Linux
/dev/sdb3      10620928  52566015   41945088  83  Linux
/dev/sdb4      52566016  71686143   19120128   f  W95 Ext'd (LBA)
/dev/sdb5      52566048  56762367    4196320  82  Linux swap / Solaris
/dev/sdb6      56762400  71686143   14923744  83  Linux
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).)

Wer eine KDE offen hat: dort gehen eventuell ein paar Fenster auf, dass neue Devices gefunden wurden, die einfach alle Abbrechen. fdisk -l zeigt uns dass alle Partitionen jetzt auf sda und sdb gleich sind. Da sdb zZ. nicht in Benutzung ist, benötigen wir hier auch keinen reboot. Wir beginnen zuerst nur auf dem Rootfilesystem einen RAID-Device aufzubauen, und dieses zu laufen zu bekommen. Dabei werden wir die sda vorläufig nicht anfassen, damit bleibt das alte LINUX nach wie vor noch erhalten und weiter bootbar. Wir erstellen Raid-1 Devices mit einem fehlenden Slice. Also zuerst ein raid-1 rootdevice mit sdb2 als einzigen aktiven Slice. Dazu ändern wir auf sdb2 zuerst einmal die SystemID.

automat:/proc # sfdisk --change-id /dev/sdb 2 fd
Done
automat:/proc # sfdisk -R /dev/sdb

eventuell gehen wieder in der KDE Fenster auf, das kennen wir ja schon. ein Blick mit fdisk -l zeigt uns jetzt das bei sdb wirklich fd als ID eingetragen ist. Als erstes setzen wir das RAID device auf mit 2 Slice, wobei einer "missing" ist.

automat:/ # mdadm -C /dev/md0 -l1 -c4 -n2 missing /dev/sdb2
mdadm: /dev/sdb2 appears to be part of a raid array:
    level=raid1 devices=2 ctime=Sat Aug 19 21:27:47 2006
Continue creating array? y
mdadm: array /dev/md0 started.-------------------

Den Erfolg können wir wie folgt überprüfen

automat:/proc # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb2[1]
      5243840 blocks [2/1] [_U]
     
unused devices: <none>


und oder

automat:/proc # mdadm -D /dev/md0
/dev/md0:
        Version : 00.90.03
  Creation Time : Sat Aug 19 21:27:47 2006
     Raid Level : raid1
     Array Size : 5243840 (5.00 GiB 5.37 GB)
    Device Size : 5243840 (5.00 GiB 5.37 GB)
   Raid Devices : 2
  Total Devices : 1
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Sat Aug 19 21:27:47 2006
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           UUID : edf2a03f:8371ba02:b75cfbef:b1415c61
         Events : 0.1

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       18        1      active sync   /dev/sdb2 

Wir tragen jetzt unser konfiguriertes Raiddevice in die mdadm.conf ein. Dabei hat es sich zumindestens bei meinen SCSI-Laufwerken für erforderlich herausgestellt die DEVICES bekannt zu geben, auf denen die RAID-Superblöcke zu suchen sind, da sie sonst beim booten nicht gefunden werden.

automat:/ # echo "DEVICE /dev/sda? /dev/sdb?" > /etc/mdadm.conf
automat:/ # mdadm --detail --scan >> /etc/mdadm.conf
automat:/ # cat /etc/mdadm.conf
DEVICE /dev/sda? /dev/sdb?
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=edf2a03f:8371ba02:b75cfbef:b1415c61

Nächster Punkt: das Filesystem auf /dev/md0 anlegen und das Filesystem temporär mounten und die orginalen Files dort hinein kopieren.

automat:/proc # mkfs.ext3 -j /dev/md0
...
...
automat:/proc # mount /dev/md0 /mnt
automat:/proc # cd /
automat:/ # find . -mount | cpio  -pdumC65536 /mnt
64239 blocks 

jetzt ändern wir auf dem "neuem" Rootfilesystem die fstab

automat:/ # cd /mnt/etc
automat:/mnt/etc # vi fstab
/dev/sda2            /                    ext3       acl,user_xattr        1 1 (dieses ist der alte Zeile)
/dev/md0             /                    ext3       acl,user_xattr        1 1 (das ist geänderte Zeile) 

Sodann können wir das Filesystem wieder aushängen, wir ändern als nächstes die /boot/grub/menu.lst

automat:/mnt/etc # cd /
automat:/ # umount /mnt
automat:/ # cd /boot/grub
automat:/boot/grub # vi menu.lst