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
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: <none>
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=<version>. 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/
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: <none>
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: <none>
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: <none>
On peut ensuite sauvegarder cette config
mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf