« Mdadm » : différence entre les versions

Aller à la navigation Aller à la recherche
4 256 octets ajoutés ,  10 janvier 2021
(26 versions intermédiaires par le même utilisateur non affichées)
Ligne 11 : Ligne 11 :
Si vous avez écrit des zero (disque mécanique) ou trim/blkdiscard (disque SSD), vous pouvez ajouter l'option <code>--assume-clean</code> afin d'éviter la synchronisation initiale. Ne le faite pas si vous n'êtes pas sur de vous car un array non synchronisé peut avoir des conséquences très néfastes pour l'intégrité de votre array.
Si vous avez écrit des zero (disque mécanique) ou trim/blkdiscard (disque SSD), vous pouvez ajouter l'option <code>--assume-clean</code> afin d'éviter la synchronisation initiale. Ne le faite pas si vous n'êtes pas sur de vous car un array non synchronisé peut avoir des conséquences très néfastes pour l'intégrité de votre array.


Ajoutez l'array fraîchement créé dans le fichier de configuration afin de conserver le nom (md0), puis régénérez l'initramfs :
Ajoutez l'array fraîchement créé dans le fichier de configuration afin de conserver le nom (md0), puis régénérez l'initramfs.<br>
Cette étape est également indispensable si la partition est bootable
<pre>
<pre>
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Ligne 23 : Ligne 24 :
grub-install /dev/sdb
grub-install /dev/sdb
</pre>
</pre>
=Ajout d'un troisième membre à un raid1=
En disque actif :
<pre>mdadm --grow /dev/md0 --level=1 --raid-devices=3 --add /dev/sdc1</pre>
En spare :
<pre>mdadm --manage /dev/md0 --add /dev/sdc1</pre>


=Monitoring=
=Monitoring=
Ligne 65 : Ligne 73 :
* /dev/sda1 + /dev/sdb1 = /dev/md0
* /dev/sda1 + /dev/sdb1 = /dev/md0


Sauf si mdadm a détecté de lui même le disque défectueux, la commande
Sauf si mdadm a détecté de lui même le disque défectueux, la commande <code>cat /proc/mdstat</code> retournera :
<pre>cat /proc/mdstat</pre>
 
retournera :
<pre>
<pre>
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
Ligne 81 : Ligne 86 :
<pre>mdadm --manage /dev/md0 --fail /dev/sdb1</pre>
<pre>mdadm --manage /dev/md0 --fail /dev/sdb1</pre>


Une fois cela fait, la commande  
Une fois cela fait, la commande <code>cat /proc/mdstat</code> retournera :
<pre>cat /proc/mdstat</pre>
 
retournera :
<pre>
<pre>
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
Ligne 106 : Ligne 108 :
Notez que la partition sdb1 a disparu de la grappe.
Notez que la partition sdb1 a disparu de la grappe.


==Changement du disque et ajout du nouveau disque==
Attention, à ce stade :
* sauf si des secteurs défectueux ont altéré le MBR du disque SDB ou le dossier /boot stocké sur la partition sdb1, le disque SDB reste bootable depuis le bios : le grub installé sur le MBR du disque SDB passe la main au grub stocké sur la partition SDB1 qui charge la configuration stockée sur SDB1, qui permet enfin de charger le kernel stocké sur le raid.
* Cependant, si vous effacez la partition SDB1, votre système risque de rester bloqué (le grub du MBR va essayer de charger en boucle le grub de SDB1 qui n'existe plus, et ne timeout pas).
* Si vous effacez le MBR du disque SDB, le disque ne sera plus bootable. La suite dépendra du comportement de votre bios : tentative d'un autre disque ou non
* De même, ne réinstallez pas grub sur SDB sans avoir resynchronisé le raid, sous peine de voir grub bloquer le boot sans passer la main a un autre disque !
 
==Changement du disque et ajout du nouveau disque au raid==
<br>
'''Après avoir coupé la machine, changez le disque physique, puis partitionnez le à l'identique.'''<br><br>
 
Si les disques sda et sdb étaient partitionné de manière identique, et uniquement dans ce cas, vous pouvez utiliser la commande suivante :
<pre>sfdisk -d /dev/sda | sfdisk /dev/sdb</pre>


Changer le disque physique, puis partitionnez le à l'identique;
Vérifiez éventuellement que les deux disques ont effectivement le même partitionnement avec <code>fdisk -l</code>


Puis réajoutez le nouveau disque à l'array :
Une fois le (nouveau) disque sdb paritionné, vous pouvez ajouter la (nouvelle) partition sdb1 à la grappe raid :
<pre>mdadm --manage /dev/md0 --add /dev/sdb1</pre>
<pre>mdadm --manage /dev/md0 --add /dev/sdb1</pre>


Pensez à mettre à jour /etc/mdadm/mdadm.conf avec le contenu de <code>mdadm --examine --scan</code>
Désormais, votre raid va se resynchroniser. La sortie de <code>cat /proc/mdstat</code> devrait ressembler à cela :
<pre>
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
      24419868 blocks [2/1] [U_]
      [=>...................]  recovery =  9.9% (2422459/24419868) finish=2.9min speed=127415K/sec
</pre>
 
Et une fois la synchronisation terminée, vous devriez retrouver la sortie habituelle :
<pre>
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
      24419868 blocks [2/2] [UU]
</pre>
 
Enfin, si vous avez une partition de boot ou grub installé sur cette grappe, pensez à réinstaller grub sur sdb :
<pre>
grub-install /dev/sdb
</pre>
 
Vous n'aurez pas besoin de reconfigurer grub ou l'initramfs, l'ancienne configuration restera valide.


=Examiner les métadonnées=
=Examiner les métadonnées=
Ligne 122 : Ligne 155 :
=Stoper un raid=
=Stoper un raid=
<pre>mdadm --stop /dev/md0</pre>
<pre>mdadm --stop /dev/md0</pre>
Note : pour couper une grappe, il faut que les systèmes de fichier qui y sont présents soient démontés, et les éventuels volumes LVM désactivés (<code>vgchange -an</code> pour les désactiver tous par exemple)
=(re)démarrer un raid=
Spécifiquement :
<pre>mdadm --assemble /dev/md0</pre>
Tous les raids auto-détectés via les meta-données :
<pre>mdadm --assemble --scan</pre>
=Vérifier un raid=
soit :
<pre>echo check > /sys/block/md0/md/sync_action</pre>
soit :
<pre>/usr/share/mdadm/checkarray /dev/md0</pre>
=Renommer un array=
Prenons le retour de <code>mdadm --examine --scan</code> :
<pre>ARRAY /dev/md/1  metadata=1.2 UUID=49d12632:66f8e6c9:34cc256c:4831d2f5 name=hostname:1</pre>
Le champ <code>name</code> donne l'hostname de la machine sur laquelle l'array a été créé, et le numéro X d'array à utiliser (qui sera attribué en /dev/mdX).
Si vous avez créez un array sur une autre machine, vous pourriez avoir besoin de modifier proprement le nom de l'array. Pour cela, il faut pouvoir stopper l'array avant d'en changer le nom :
<pre>
mdadm --stop /dev/md1
mdadm --assemble /dev/md1 --name=newhostname:0 --update=name /dev/sda1 /dev/sdb1
mdadm --examine --scan
</pre>
Mettez à jour le fichier <code>/etc/mdadm/mdadm.conf</code> avec la nouvelle définition de l'array (avec les informations contenues dans <code>mdadm --examine --scan</code>. C'est important sinon votre array pourrait ne plus démarrer au boot. Dorénavant, votre array démarrera sous /dev/md0.
Pour finir, mettez à jour votre initramfs si l'array doit pouvoir booter :
<pre>update-initrams -u</pre>
=Supprimer les méta-données d'un ancien membre de raid=
Attention, à ne faire que si vous avez supprimé sdc1 de votre array et que vous acceptez de perdre les données stockées sur sdc1 :
<pre>mdadm --zero-superblock /dev/sdc1</pre>


=Voir l'architecture des disques et partition=
=Voir l'architecture des disques et partition=
<pre>lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT</pre>
<pre>lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT</pre>
4 203

modifications

Menu de navigation