Raid 1 Software

Ayant besoin professionel de réaliser un système de sauvegarde. Petit achat d'un boitier Sylverstone, carte mère mini-itx, processeur core i7, disque dur ssd enfin voilà un belle bête à monter surtout pour s'amuser. Les disques durs de sauvegardes sont dans une boite protégée contre le feu et l'eau (4 disques de 1To). Le système servira aussi à vérifier la santé des autres machines par snmp tous ça basé sur un système Ubuntu 9.04 server.

Configuration du RAID1

Création de 2 partitions RAID1 de 1To

Pour chaque disque

# fdisk /dev/sdX

Créer une partition de type Linux raid autodetect (id = fd dans fdisk)

Quitter fdisk par 'w'

Créer les arrays pour les 2 groupes de disques

# mdam --verbose --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdX /dev/sdX

Modifier /etc/mdadm/mdadm.conf

Utiliser la commande suivante

# mdadm –detail --scan

et ajouter les lignes suivantes au fichier de configuration

ARRAY /dev/md1 level=raid1 num-devices=2 metadata=00.90
UUID=156b6fad:4c766c16:5fb02083:99a3fc4b
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=00.90
UUID=5c38d7b4:b1832d52:5fb02083:99a3fc4b

Formater les arrays

# mkfs.ext4 -m1 /dev/md0
# mkfs.ext4 -m1 /dev/md1

Créer les répertoires /mnt/raid1 et /mnt/raid2

Modifier /etc/fstab et ajouter les lignes suivantes

/dev/md0 /mnt/raid1 ext4 defaults 0 0
/dev/md1 /mnt/raid2 ext4 defaults 0 0

Utilisation courante

Liste les informations d'un disque

# mdadm -E /dev/sdX

Cette commande scan tous les disques et assemble ceux qui corresponde au uuid définit

# mdadm -Av /dev/md0 --uuid=84788b68:1bb79088:9a73ebcc:2ab430da /dev/sd*

Affichage des statistiques des arrays, synchronisation, mode dégradé

# cat /proc/mdstat
# watch -n1 'cat /proc/mdstat'

Défaillance d'un disque

Attention : Au redémarrage de la machine avec un disque défaillant l'array ne sera pas
disponible

Identifier le disque défaillant

Test de situation de disque défaillant

# mdadm --manage /dev/md0 --fail /dev/sdc1

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6]
[raid10]
md0 : active raid1 sdb1[0] sdc1[2](F)
24418688 blocks [2/1] [U_]
md1 : active raid1 sdd2[0] sde2[1]
24418688 blocks [2/2] [UU]
unused devices: <none>

Retirer le disque /dev/sdc1 de /dev/md0:

# mdadm --manage /dev/md0 --remove /dev/sdc1
mdadm: hot removed /dev/sdb1

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6]
[raid10]
md0 : active raid1 sdb1[0]
24418688 blocks [2/1] [U_]
md1 : active raid1 sdd2[0] sde2[1]
24418688 blocks [2/2] [UU]
unused devices: <none>

Il est possible de faire les opérations à chaud en SATA ou éteindre le système.
Remplacer le disque défectueux par un disque de même espace disque ( en aucun cas le
disque doit avoir une taille inférieure)

Démarrer le système si nécessaire

Créer exactement la même partition sur le nouveau disque

# sfdisk -d /dev/sdb /dev/sdc

Vérifier que les deux disques qui vont former l'ensemble RAID ont les mêmes partitions

# fdisk -l

Ajouter /dev/sdc1 à /dev/md0

# mdadm --manage /dev/md0 --add /dev/sdc1
mdadm: re-added /dev/sdc1

L'ensemble RAID va se synchroniser

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sdb1[0] sdc1[1]
24418688 blocks [2/1] [U_]
[=>...................] recovery = 9.9% (2423168/24418688) finish=2.8min
speed=127535K/sec
...

Attendre que la synchronisation soit terminé.