Erstellen eines Mirrors mit mdadm und Austausch einer Festplatte

Admin

Erstellen eines Mirrors from scratch

 * Zuerst muessen passende Partitionen gefunden bzw. neu angelegt werden

Angenommen, es gibt freie Platten /dev/sdb und /dev/sdc


 * Plattengeometrien feststellen

Mit sfdisk -l erhalte ich Auskunft ueber die Plattengeometrie, insbes. die Anzahl der Zylinder, z.B.

Disk /dev/sdb: 130 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
 * 1) sfdisk -l /dev/sdb


 * Partitionieren

(Ich will alle 130 Zylinder verwenden)

Erscheint Prompt sdb1:
 * 1) sfdisk /dev/sdb

Eingabe: sdb1:0 130 fd sdb2: sdb3: sdb4:

fd bedeutet Partitionstyp "Raid Autokonfiguration" Aller Plattenplatz ist mit sdb1 verbraucht, deshalb sdb2, ..., sdb4 leer lassen.


 * Mirror = RAID1 erzeugen


 * 1) mdadm -C /dev/md0 -v -l1 -n2 -e1.2 /dev/sdb1 /dev/sdc1

Bedeutung: -C: "create": Neu anlegen /dev/md0: Name des Devices, ist auch mit weiterem Parameter (-Nhome, braucht -e1.x) auch z.B. /dev/mdhome moeglich -v: verbose, kann man weglassen -l1: -(ell)Eins: "Level 1", d.h. RAID1 -n2: 2 Geraete (Festplatten) -e1.2: Optional, hat mir gefallen die RAID-Metainformationen erst 4k nach Device-Anfang beginnen zu lassen, bleibt Platz fuer einen Bootblock. /dev/sdb1 /dev/sdc1: Die Geraete, aus denen der Mirror aufgebaut werden soll.


 * Das neuentstandene RAID-Device partitionieren und mit Dateisystem versehen


 * Anzahl Zylinder nachsehen
 * 1) sfdisk -l /dev/md0

Disk /dev/md0: 261053 cylinders, 2 heads, 4 sectors/track Units = cylinders of 4096 bytes, blocks of 1024 bytes, counting from 0


 * Partitionieren (will die ganze Platte verwenden, desh. u. Eingabe "0 261053" )

(...)
 * 1) sfdisk /dev/md0

Disk /dev/md0: 261053 cylinders, 2 heads, 4 sectors/track

Old situation: Units = cylinders of 4096 bytes, blocks of 1024 bytes, counting from 0

/dev/md0p1 :0 261053 /dev/md0p1         0+ 261052  261053-   1044211+  83  Linux /dev/md0p2 : /dev/md0p2         0       -       0          0    0  Empty /dev/md0p3 : /dev/md0p3         0       -       0          0    0  Empty /dev/md0p4 : /dev/md0p4         0       -       0          0    0  Empty

New situation: Units = cylinders of 4096 bytes, blocks of 1024 bytes, counting from 0

Device Boot Start    End   #cyls    #blocks   Id  System /dev/md0p1         0+ 261052  261053-   1044211+  83  Linux /dev/md0p2         0       -       0          0    0  Empty /dev/md0p3         0       -       0          0    0  Empty /dev/md0p4         0       -       0          0    0  Empty Warning: no primary partition is marked bootable (active) This does not matter for LILO, but the DOS MBR will not boot this disk. Do you want to write this to disk? [ynq] y Successfully wrote the new partition table

Re-reading the partition table ...


 * Das neue Raid-Device /dev/md0 muss mit Dateisystem versehen werden

mke2fs 1.41.9 (22-Aug-2009) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 65280 inodes, 261053 blocks 13052 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=268435456 8 block groups 32768 blocks per group, 32768 fragments per group 8160 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376
 * 1) mke2fs /dev/md0

Writing inode tables: 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.


 * So sieht ein korrektes RAID1aus

Personalities : [raid1] md0 : active raid1 sdc1[1] sdb1[0] 1044212 blocks super 1.2 [2/2] [UU]
 * 1) cat /proc/mdstat

unused devices:

Im Detail ansehen

/dev/md0: Version : 1.2 Creation Time : Wed Jul 14 12:12:33 2010 Raid Level : raid1 Array Size : 1044212 (1019.91 MiB 1069.27 MB) Used Dev Size : 1044212 (1019.91 MiB 1069.27 MB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent
 * 1) mdadm -D /dev/md0

Update Time : Wed Jul 14 15:49:56 2010 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0

Name : i09mdadm:0 (local to host i09mdadm) UUID : 3a28c463:5487c126:eb3afc69:a61c52e8 Events : 32

Number  Major   Minor   RaidDevice State 0      8       17        0      active sync   /dev/sdb1 1      8       33        1      active sync   /dev/sdc1

Defektes RAID1 reparieren

 * /proc/mdstat ansehen

Personalities : [raid1] md0 : active raid1 sdc1[1](F) sdb1[0] 1044212 blocks super 1.2 [2/1] [U_]
 * 1) cat /proc/mdstat

3. Zeile "F" zeigt den Ausfall von sdc1 4. Zeile "[2/1]" und "[U_]" zeigt die fehlende Platte im RAID mdadm: set /dev/sdc1 faulty in /dev/md0 mdadm: hot removed /dev/sdc1
 * Defekte Festplatte /dev/sdc1 markieren und entfernen
 * 1) mdadm -v --manage /dev/md0 -f /dev/sdc1 -r /dev/sdc1

Ansehen

/dev/md0: Version : 1.2 Creation Time : Wed Jul 14 12:12:33 2010 Raid Level : raid1 Array Size : 1044212 (1019.91 MiB 1069.27 MB) Used Dev Size : 1044212 (1019.91 MiB 1069.27 MB) Raid Devices : 2 Total Devices : 1 Persistence : Superblock is persistent
 * 1) mdadm -D /dev/md0

Update Time : Wed Jul 14 16:13:48 2010 State : clean, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 0 Spare Devices : 0

Name : i09mdadm:0 (local to host i09mdadm) UUID : 3a28c463:5487c126:eb3afc69:a61c52e8 Events : 42

Number  Major   Minor   RaidDevice State 0      8       17        0      active sync   /dev/sdb1 1      0        0        1      removed

Weiteres Vorgehen


 * 1) Neue Partition erstellen
 * 2) Neue Partition in RAID einbinden


 * 1) sfdisk -l /dev/sdd

Disk /dev/sdd: 130 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

Device Boot Start    End   #cyls    #blocks   Id  System /dev/sdd1         0       -       0          0    0  Empty /dev/sdd2         0       -       0          0    0  Empty /dev/sdd3         0       -       0          0    0  Empty /dev/sdd4         0       -       0          0    0  Empty


 * Partitionsdaten von der guten Platte sdb kopieren (oder falls einfach, mit sfdisk erstellen)

1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.00564036 s, 90.8 kB/s
 * 1) dd if=/dev/sdb of=/dev/sdd count=1 bs=512


 * Die Partitionierung ist angekommen
 * 1) sfdisk -l /dev/sdd

Disk /dev/sdd: 130 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

Device Boot Start    End   #cyls    #blocks   Id  System /dev/sdd1         0+    129     130-   1044224+  fd  Linux raid autodetect /dev/sdd2         0       -       0          0    0  Empty /dev/sdd3         0       -       0          0    0  Empty /dev/sdd4         0       -       0          0    0  Empty


 * Die geaenderten Partitionsdaten dem Kernel bekanntgeben


 * 1) sfdisk -R /dev/sdd


 * Die neue Festplatte ins defekte Raid einbinden


 * 1) mdadm /dev/md0 -a /dev/sdd1

Nachsehen (noch nicht fertig)
 * 1) cat /proc/mdstat:

mdadm: added /dev/sdd1 Personalities : [raid1] md0 : active raid1 sdd1[2] sdb1[0] 1044212 blocks super 1.2 [2/1] [U_] [>....................] recovery =  0.0% (0/1044212) finish=1087.7min speed=0K/sec

unused devices:

Fertig

Personalities : [raid1] md0 : active raid1 sdd1[2] sdb1[0] 1044212 blocks super 1.2 [2/2] [UU]
 * 1) cat /proc/mdstat

unused devices: