Mirroring con mdadm su Debian

Ritratto di admin

Introduzione

L’installazione del sistema avviene utilizzando il debian installer

Esame dello stato delle partizioni

# mdadm --examine --brief --scan
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=43267e50:c1553b14:ad764cb1:b009281a
devices=/dev/hdc1,/dev/hda1
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=32e3c30b:7299f8d4:baa0df66:ba74db0c
devices=/dev/hdc2,/dev/hda2
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=21a5acc9:55783566:d0756ef3:8599776d
devices=/dev/hdc5,/dev/hda5

Analisi dello stato dei dischi del RAID

# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.00
Creation Time : Tue Mar 21 17:58:44 2006
Raid Level : raid1
Array Size : 14651136 (13.97 GiB 15.00 GB)
Device Size : 14651136 (13.97 GiB 15.00 GB)
Raid Devices : 2
Total Devices : 1
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Thu Mar 23 11:40:29 2006
State : active, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0

UUID : 4aa97772:1690d4d2:9d492b4c:fec8b29f
Events : 0.37

Number Major Minor RaidDevice State
0 3 1 0 active sync /dev/hda1
1 0 0 1 faulty removed

Il raid è composto da hda+hdc1
• hda1 è active sync (ok)
• hdc1 è faulty removed  va reintegrata

Ripristino di un device compromesso

# mdadm --manage --add /dev/md0 /dev/hdc1
mdadm: hot added /dev/hdc1

# mdadm --manage --add /dev/md1 /dev/hdc2
mdadm: hot added /dev/hdc2

Parte il ripristino a caldo

# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md1 : active raid1 ide/host0/bus1/target1/lun0/part2[2] ide/host0/bus0/target0/lun0/part2[0]
4883648 blocks [2/1] [U_]
[=>...................] recovery = 7.0% (343296/4883648) finish=4.4min speed=17164K/sec

Creazione di un nuovo device RAID a sistema avviato

Se si sostituisce o si scollega un disco, quando lo si reintegra occorre ricostruire il RAID che si troverà in uno stato di questo tipo:

# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md1 : active raid1 ide/host0/bus0/target0/lun0/part2[0]
4883648 blocks [2/1] [U_]

md0 : active raid1 ide/host0/bus0/target0/lun0/part1[0]
14651136 blocks [2/1] [U_]

Crea o ricrea il device /dev/md0 come array RAID1 consistente nei device fisici /dev/hda1 e /dev/hdc1.
Ovviamente le partizioni devono essere di tipo “Raid Autodetect”

# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/hd[ac]1

Stato dei singoli device

# mdadm -E /dev/hda1
/dev/hda1:
Magic : a92b4efc
Version : 00.90.00
UUID : 4aa97772:1690d4d2:9d492b4c:fec8b29f
Creation Time : Tue Mar 21 17:58:44 2006
Raid Level : raid1
Raid Devices : 2
Total Devices : 1
Preferred Minor : 0

Update Time : Thu Mar 23 11:40:29 2006
State : active
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Checksum : 2f99b537 - correct
Events : 0.37

Number Major Minor RaidDevice State
this 0 3 1 0 active sync /dev/hda1

0 0 3 1 0 active sync /dev/hda1
1 1 0 0 1 faulty removed

Per la gestione dei devices:

For Manage mode:
-a, --add
hotadd listed devices.
-r, --remove
remove listed devices. They must not be active. i.e. they should be failed or spare devices.
-f, --fail
mark listed devices as faulty.
--set-faulty
same as --fail.

Simulazione di un guasto

Volendo simulare un guasto e vedere se il sistema parte lo stesso ricordo di:

• collegare i due dischi come master sui due canali IDE
• impostare il flag bootable per entrambe le root partitions
• configurare GRUB sui due dischi (solo se necessario) in questo modo:

grub> root (hd0,0)
grub> setup (hd0)
grub> root (hd1,0)
grub> setup (hd1)
grub> quit

• La sostituzione di un disco con uno nuovo prevede comunque il suo partizionamento con partizioni uguali (come dimensioni/cilindri) a quello presente. Si può automatizzare usando sfdisk per copiare lo stato delle partizioni da un disco all’altro.
• La partizione di swap sarebbe meglio non metterla in raid (più prestante in caso di pesante swap) ma può funzionare lo stesso anche in raid.

Note sulla crezione del device

• E’ bene costruire sempre un raid con i due dischi master per ogni canale qundi HDA+HDC.
• Nel caso in cui vengano usati HDB (primo canale) o HDC (secondo canale) nel caso di modifiche occorre ricordarsi di aggiornare o filw /etc/fstab e /etc/mdadm/mdadm.conf