expert:mdadm
no way to compare when less than two revisions
Différences
Ci-dessous, les différences entre deux révisions de la page.
— | expert:mdadm [2018/11/17 12:53] (Version actuelle) – créée - modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ===== mdadm , gestion de RAID logiciel ===== | ||
+ | mdadm est le nom du paquet, et de la commande éponyme, qui permettent de gérer le raid logiciel sur un système GNU-Linux. | ||
+ | Le raid " | ||
+ | |||
+ | Le raid matériel est très performant, les contrôleurs sont très chers, les groupes raid créés ne sont pas " | ||
+ | Le "fake raid" n'a aucun avantage sur le raid logiciel, il est même moins souple et pas plus performant. Son seul atout pourrait-être une relative " | ||
+ | |||
+ | __Reste celui qui nous intéresse ici, le raid purement logiciel, géré par le noyau Linux et mdadm__. | ||
+ | |||
+ | < | ||
+ | Les touches utilisées sont indiquées entre crochets, exemple **[ctrl]** pour la touche " | ||
+ | |||
+ | ====Installation==== | ||
+ | |||
+ | mdadm est présent dans les dépôts de (quasiment ?) toutes les distributions, | ||
+ | |||
+ | < | ||
+ | |||
+ | réglera le problème de l' | ||
+ | |||
+ | Lors de l' | ||
+ | |||
+ | " | ||
+ | Sauf cas très particulier vous devez laisser le choix par défaut (oui).\\ | ||
+ | "Quel est le destinataire des messages système de mdadm ?"\\ | ||
+ | Là vous constaterez que c'est une __très__ bonne idée d' | ||
+ | |||
+ | En effet le démon de surveillance "mdadm %%--%%monitor" | ||
+ | |||
+ | ====Configuration==== | ||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | En dehors des options proposées à l' | ||
+ | |||
+ | < | ||
+ | #Liste des volumes raid qui doivent être démarrés automatiquement lors du chargement de | ||
+ | #" | ||
+ | #racine du système "/" | ||
+ | # | ||
+ | #' | ||
+ | #'/ | ||
+ | #' | ||
+ | |||
+ | INITRDSTART=' | ||
+ | |||
+ | # AUTOSTART: | ||
+ | #mdadm démarre les volumes listés dans / | ||
+ | |||
+ | AUTOSTART=true | ||
+ | |||
+ | # AUTOCHECK: | ||
+ | #mdadm doit-il vérifier la concordance des données sur les composants des volumes raid ? | ||
+ | #Évite la corruption silencieuse des données sur l'un des disques. Voir / | ||
+ | |||
+ | AUTOCHECK=true | ||
+ | |||
+ | # START_DAEMON: | ||
+ | #mdadm doit-il démarrer le démon de surveillance au démarrage (--monitor) ? | ||
+ | |||
+ | START_DAEMON=true | ||
+ | |||
+ | # DAEMON_OPTIONS: | ||
+ | #Autres options à passer au démon de surveillance. | ||
+ | |||
+ | DAEMON_OPTIONS=" | ||
+ | |||
+ | # VERBOSE: | ||
+ | #Si cette option est activée (true), mdadm donnera un peu plus de détails, i.e. | ||
+ | #lors de la création de l' | ||
+ | |||
+ | VERBOSE=true | ||
+ | |||
+ | # MAIL_TO: | ||
+ | #Cette option est maintenant définie dans / | ||
+ | </ | ||
+ | |||
+ | Voir également / | ||
+ | |||
+ | < | ||
+ | # mdadm.conf | ||
+ | # | ||
+ | #Merci de vous référez à "man mdadm.conf(5)" | ||
+ | # | ||
+ | |||
+ | #Par défaut, détecter toutes les partitions qui contiennent des superblocks (" | ||
+ | # | ||
+ | |||
+ | DEVICE partitions | ||
+ | |||
+ | #Créer automatiquement les volumes avec les permissions et attributs suivant: | ||
+ | |||
+ | CREATE owner=root group=disk mode=0660 auto=yes | ||
+ | |||
+ | # | ||
+ | |||
+ | HOMEHOST < | ||
+ | |||
+ | #Adresse où envoyer les alertes du démon de surveillance ($(user)@ , root...): | ||
+ | |||
+ | MAILADDR user@localhost | ||
+ | |||
+ | #Détail des volumes MD existant: | ||
+ | |||
+ | ARRAY /dev/md0 level=raid1 num-devices=2 metadata=0.90 UUID=4a5ffe63: | ||
+ | | ||
+ | ARRAY /dev/md1 level=raid1 num-devices=2 metadata=0.90 UUID=c02b4e8c: | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Pour mettre à jour les détails des volumes après une modification, | ||
+ | |||
+ | < | ||
+ | |||
+ | ou pour ne pas avoir les volumes raid associés "en dur" aux disques, ne pas utiliser " | ||
+ | |||
+ | < | ||
+ | |||
+ | ça permet de ne pas devoir mettre à jour ce fichier en cas de changement/ | ||
+ | |||
+ | :!: Avant de mettre à jour les informations de mdadm.conf, il faut avoir retiré les anciennes informations du fichier évidemment. | ||
+ | |||
+ | |||
+ | ====Commandes utiles==== | ||
+ | |||
+ | |||
+ | ===Création d'un volume=== | ||
+ | |||
+ | Ici un raid 1 (miroir) à partir de deux disques, avec une taille de secteurs de 128k (défaut 64k): | ||
+ | |||
+ | < | ||
+ | |||
+ | Version " | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | Pour créer un volume raid 1 avec un seul disque, on utilise la directive " | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | L' | ||
+ | |||
+ | ===Démarrer, | ||
+ | |||
+ | Démarrer tous les groupes (présents dans un fichier mdadm.conf) :\\ | ||
+ | |||
+ | < | ||
+ | |||
+ | Démarrer un volume non listé dans mdadm.conf (%%--%%assemble est abrégé " | ||
+ | |||
+ | < | ||
+ | |||
+ | Pour démarrer le volume dont le nombre mineur est " | ||
+ | |||
+ | < | ||
+ | |||
+ | L' | ||
+ | |||
+ | |||
+ | Si le groupe raid est en mode " | ||
+ | |||
+ | < | ||
+ | |||
+ | Si le groupe raid est marqué comme " | ||
+ | |||
+ | < | ||
+ | |||
+ | Pour lancer ensuite le volume assemblé utilisez " | ||
+ | |||
+ | Si un groupe marqué " | ||
+ | |||
+ | < | ||
+ | |||
+ | Comme tout les forçages, ça n'est pas conseillé avant d' | ||
+ | |||
+ | Stopper un groupe donné (ici " | ||
+ | |||
+ | < | ||
+ | |||
+ | Démarrer un volume non listé dans mdadm.conf (%%--%%assemble). Vous devez savoir que les disques indiqué composent un volume raid, (utilisez " | ||
+ | |||
+ | < | ||
+ | |||
+ | Pour démarrer le volume dont le nombre mineur est " | ||
+ | |||
+ | < | ||
+ | |||
+ | ===Pour examiner un groupe raid=== | ||
+ | |||
+ | < | ||
+ | |||
+ | ou plus détaillé :\\ | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | Informations sur l' | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | mdadm écrit les informations relatives au volume dans un " | ||
+ | Pour examiner les informations du superblock: | ||
+ | |||
+ | < | ||
+ | |||
+ | Les " | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | ===Pour ajouter/ | ||
+ | |||
+ | Dans ces exemples on considère qu'il n'y a qu'une partition par disque, sinon il faut ajouter toutes les partitions du nouveau disque aux groupes raid, et marquer en " | ||
+ | |||
+ | < | ||
+ | |||
+ | Pour retirer un disque, on procède en deux étapes :\\ | ||
+ | |||
+ | < | ||
+ | # mdadm /dev/md0 --remove / | ||
+ | |||
+ | Pour rapidement remplacer un disque on peut combiner les options :\\ | ||
+ | |||
+ | < | ||
+ | |||
+ | La reconstruction sur le disque nouvellement ajouté commencera immédiatement. | ||
+ | |||
+ | ====Raid partitionnable==== | ||
+ | |||
+ | À partir du noyau 2.6.28 tous les raid sont partitionnables (la situation est moins claire pour les noyaux plus anciens), c'est à dire que l'on peut créer un raid à partir d'un disque entier (non partitionné), | ||
+ | Pour créer un raid partitionnable on utilise l' | ||
+ | |||
+ | < | ||
+ | |||
+ | Ici on crée un raid 1 partitionnable nommé " | ||
+ | |||
+ | À noter que lors de tests avec différentes distributions, | ||
+ | |||
+ | < | ||
+ | |||
+ | Pour créer expressément un raid non partitionnable, | ||
+ | |||
+ | Si vous désirez plus de souplesse dans la gestion de l' | ||
+ | |||
+ | |||
+ | ====Utilisation avancée==== | ||
+ | |||
+ | |||
+ | ===Partager des disques de secours=== | ||
+ | |||
+ | On peut préciser un groupe de volumes raid qui pourront se partager un " | ||
+ | On ajoutera à / | ||
+ | |||
+ | < | ||
+ | |||
+ | ARRAY /dev/md0 level=raid1 num-devices=2 UUID=25cd832e: | ||
+ | spare-group=group1 | ||
+ | |||
+ | ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aee5ac6c: | ||
+ | spare-group=group1</ | ||
+ | |||
+ | Ici le disque de secours /dev/sde1 qui appartient au volume raid1 /dev/md1 sera aussi disponible en cas de défaillance d'un disque du volume raid1 /dev/md0. Attention, la taille du volume du disque " | ||
+ | |||
+ | ===Augmenter la taille d'un volume raid=== | ||
+ | |||
+ | Si vous voulez remplacer les disques de 500GB qui composent votre raid1, par des disques de 1TB, ou si vous voulez ajouter un disque à un raid5, vous devrez étendre le volume raid puis le système de fichiers. | ||
+ | |||
+ | On considère un raid5 sur trois disques, auquel on ajoute /dev/sde1 :\\ | ||
+ | |||
+ | < | ||
+ | # mdadm /dev/md0 --grow --backup-file=/ | ||
+ | # e2fsck -fp /dev/md0 | ||
+ | # resize2fs /dev/md0 | ||
+ | # e2fsck -fp / | ||
+ | |||
+ | Lors de la seconde étape l' | ||
+ | |||
+ | Maintenant pour un raid1, on veut passer de disques de 160GB à des 500GB :\\ | ||
+ | |||
+ | On considère que le raid est composé de /dev/md0 (/dev/sda1, /dev/sdb1), et /dev/md1 (/dev/sda2 et dev/sdb2), on ajoute les nouveaux disques un par un aux volumes raid, mais on considère qu'ils sont déjà installés dans la machine, et partitionnés: | ||
+ | |||
+ | < | ||
+ | # mdadm /dev/md1 --fail /dev/sda2 | ||
+ | # mdamd /dev/md0 --remove /dev/sda1 | ||
+ | # mdadm /dev/md1 --remove / | ||
+ | |||
+ | On ajoute le premier nouveau disque:\\ | ||
+ | |||
+ | < | ||
+ | # mdadm /dev/md1 --add /dev/sdc2 | ||
+ | $ cat / | ||
+ | |||
+ | On attend que la reconstruction soit finie, puis on enlève l' | ||
+ | |||
+ | < | ||
+ | # mdadm /dev/md1 --fail /dev/sdb2 | ||
+ | # mdamd /dev/md0 --remove /dev/sdb1 | ||
+ | # mdadm /dev/md1 --remove / | ||
+ | |||
+ | On ajoute le second nouveau disque:\\ | ||
+ | |||
+ | < | ||
+ | # mdadm /dev/md1 --add /dev/sdd2 | ||
+ | $ cat / | ||
+ | |||
+ | Quand la synchronisation est finie, on étend le volume raid sur l' | ||
+ | |||
+ | < | ||
+ | # mdadm --grow /dev/md1 --size=max</ | ||
+ | |||
+ | Finalement on étend le système de fichier pour qu'il corresponde à la taille des volumes raid:\\ | ||
+ | |||
+ | < | ||
+ | # resize2fs / | ||
+ | |||
+ | N' | ||
+ | |||
+ | Il est conseillé de procéder sur un volume non monté (live-cd), ou à la rigueur en mode " | ||
+ | |||
+ | :!: Il est fortement recommandé de recréer un initrd (" | ||
+ | |||
+ | |||
+ | ===Solutionner une erreur de taille entre les superblocks et les tables de partitions des disques=== | ||
+ | |||
+ | Il arrive après création d'un volume raid sur des disques ayant un système de fichier qui occupe la totalité du disque, et/ou en mode " | ||
+ | Généralement la taille reportée par le superblock est plus importante, car elle " | ||
+ | |||
+ | Pour résoudre le problème: | ||
+ | |||
+ | < | ||
+ | # resize2fs /dev/md0 | ||
+ | # e2fsck -fp / | ||
+ | |||
+ | À effectuer sur un volume raid non monté (depuis un live-cd par exemple). Le " | ||
+ | |||
+ | Pour ne pas rencontrer ce genre de problème il faut éviter de créer des groupes raids à partir de partitions qui comportent déjà des systèmes de fichiers. Si c'est indispensable (dans le cas où on crée le raid sur un disque en mode " | ||
+ | Mieux, on créé le volume raid à partir de partitions sans système de fichier, et on formate le volume raid après sa création ("mkfs / | ||
+ | |||
+ | ===Les formats de métadonnées=== | ||
+ | |||
+ | Il existe plusieurs formats de métadonnées en usage pour différentes versions de mdadm, ou parfois d'une distribution à l' | ||
+ | |||
+ | < | ||
+ | |||
+ | ou sur une partition qui fait partie d'un raid :\\ | ||
+ | |||
+ | < | ||
+ | |||
+ | Le format le plus courant est le " | ||
+ | Existe également les formats " | ||
+ | Si vous changez des disques raids de machines, ou que vous changiez de système d' | ||
+ | On peut préciser la version de métadonnées avec l' | ||
+ | Tous les types de métadonnées 0.90 ou 1.* permettent l' | ||
+ | |||
+ | Il est parfois possible d' | ||
+ | |||
+ | ====Liens==== | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | * [[systeme_conversion_raid1|Convertir un système installé en RAID1 logiciel]] | ||
+ | --------------------------------------------------------------------------- | ||
+ | |||
+ | [[http:// |
expert/mdadm.txt · Dernière modification : 2018/11/17 12:53 de 127.0.0.1