====== 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