====== RAID, mdadm ======
Une bonne doc => http://www.linuxpedia.fr/doku.php/expert/mdadm
http://www.debian-fr.org/raid-logiciel-avec-mdadm-exemple-raid1-niveau-debutant-t27585.html
===== Commandes utiles =====
Etat du raid
# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md1 : active raid5 sda5[0] sde5[2] sdc5[1]
527012864 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
md0 : active raid1 sda1[0] sde1[4] sdc1[2]
29279104 blocks super 1.2 [3/3] [UUU]
unused devices:
mdadm --examine --scan
Mettre à jour les infos
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Pour avoir le détail d'une grappe
mdadm --detail /dev/md0
L'état d'un disque
mdadm --examine /dev/sda1
Création d'une grappe RAID1 avec deux disques
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
Création d'une grappe RAID1 de deux disque dont un est absent pour l'instant
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda1 missing
Création d'une grappe RAID1 avec d'autres paramètres ...
mdadm --create --verbose /dev/md0 --level=1 --name=xyz --metadata=1.0 --raid-devices=2 /dev/sda1 /dev/sdb1
* nommage explicite de la grappe avec --name=xyz
* forçage du type de superblock avec --metadata=1.0
J’attire spécialement l’attention sur le paramètre metadata=. Il permet de préciser le mode de gestion du « superblock » RAID.
Version du superblock (métadonnée RAID)
Le « superblock » désigne l’ensemble des données stockées sur les disques et servant à fournir au système les informations lui permettant de gérer les grappes RAID. Le format et le mode de stockage de ces métadonnées sont indiqué par un numéro de version :
0.90 : valeur par défaut, sauf indication contraire dans mdadm.conf
1.0 : « superblock » stocké en fin de partition, cette valeur est utilisée automatiquement par le partitioneur de openSUSE pour une compatibilité avec l’amorçage du système avant montage des volumes en RAID (avec GRUB2 ou Lilo)
1.1 : « superblock » stocké en début de partition
1.2 : « superblock » stocké à 4K du début de la partition
Changement du nombre de disques de la grappe
mdadm --grow --raid-devices=2 /dev/md0
Ajout d'un disque (/dev/sdb1) à une grappe (/dev/md0)
mdadm --add /dev/md0 /dev/sdb1
Changer l'espace disque utilisé par la grappe
mdadm --grow /dev/md2 --size=max
**max** indique la capacité maximum, sinon préciser une taille en ko
Désactiver le disque
mdadm /dev/md0 --fail /dev/sdb1
Avant de le retirer de la grappe
mdadm /dev/md0 --remove /dev/sdb1
Si c'est un retrait définitif, il est nécessaire de supprimer le superblock du disque
mdadm --zero-superblock /dev/sdb1
Arrêt de la grappe
mdadm --stop /dev/md0
Écrasement des superblocks pour finaliser la suppression de la grappe
mdadm --zero-superblock /dev/sda1
Pour tous les disques de la grappe
mdadm --zero-superblock /dev/sdb1
Un examine scan permet de férifier que la grappe a bien été définitivement supprimé
mdadm --examine --scan
source pas très lisible : http://blog.ramdani.net/2010/11/commandes-pratiques-pour-gerer-le-raid-soft-sous-linux/
===== Réparation =====
Imaginons que vous avez fait une connerie et que le serveur ne démarre plus car il n'arrive plus à monter le RAID.
Lancer un liveCD et c'est parti.
On vérifie la présence des partitions raid
root@ubuntu:~# fdisk -l | grep raid
/dev/sda1 * 2048 58593279 29295616 fd Linux raid autodetect
/dev/sda5 58595328 585871359 263638016 fd Linux raid autodetect
/dev/sdb1 * 2048 58593279 29295616 fd Linux raid autodetect
/dev/sdb5 58595328 585871359 263638016 fd Linux raid autodetect
/dev/sdc1 * 2048 58593279 29295616 fd Linux raid autodetect
/dev/sdc5 58595328 585871359 263638016 fd Linux raid autodetect
/dev/sdd1 * 2048 58593279 29295616 fd Linux raid autodetect
/dev/sdd5 58595328 585871359 263638016 fd Linux raid autodetect
/dev/sde1 * 2048 58593279 29295616 fd Linux raid autodetect
/dev/sde5 58595328 585871359 263638016 fd Linux raid autodetect
On vérifie la validité d'une partition
root@ubuntu:~# mdadm --examine /dev/sda1
/dev/sda1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : fd7d0783:025baf16:c02e44cf:f1fda742
Name : serveur:0
Creation Time : Thu Dec 5 07:58:58 2013
Raid Level : raid1
Raid Devices : 5
Avail Dev Size : 58558464 (27.92 GiB 29.98 GB)
Array Size : 58558208 (27.92 GiB 29.98 GB)
Used Dev Size : 58558208 (27.92 GiB 29.98 GB)
Data Offset : 32768 sectors
Super Offset : 8 sectors
State : clean
Device UUID : 7b97f61d:bb3a9025:40eb6b07:e4cbdba8
Update Time : Thu Sep 4 13:55:28 2014
Checksum : a71bde76 - correct
Events : 3732599
Device Role : Active device 0
Array State : A.A.A ('A' == active, '.' == missing)
On tente d'assembler notre raid (car dans ce cas là, on le connait déjà)
root@ubuntu:~# mdadm --assemble /dev/md0 /dev/sd[ace]1 --force
mdadm: /dev/md0 has been started with 3 drives (out of 5).
root@ubuntu:~# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0] sde1[4] sdc1[2]
29279104 blocks super 1.2 [5/3] [U_U_U]
unused devices:
Ensuite on monte le raid
root@ubuntu:~# cd /mnt
root@ubuntu:/mnt# ls
root@ubuntu:/mnt# mkdir raid
root@ubuntu:/mnt# mount /dev/md0 raid/
Dans notre cas, le raid /dev/md0 a 5 disques dont 2 ne fonctionnent pas (on le voit par un tiret bas _)
# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md1 : active raid5 sda5[0] sde5[2] sdc5[1]
527012864 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
md0 : active raid1 sda1[0] sde1[4] sdc1[2]
29279104 blocks super 1.2 [5/3] [U_U_U]
unused devices:
On peut lui dire de ne gérer que 3 disques
# mdadm --grow --raid-devices=3 /dev/md0
raid_disks for /dev/md0 set to 3
On vérifie que les tirets bas ne sont plus là.
# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md1 : active raid5 sda5[0] sde5[2] sdc5[1]
527012864 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
md0 : active raid1 sda1[0] sde1[4] sdc1[2]
29279104 blocks super 1.2 [3/3] [UUU]
unused devices:
On peut ensuite sauvegarder cette config
mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf