Table des matières

Supprimer un RAID logiciel pour récupérer ces disques

Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !

Introduction

Ce wiki prends la suite du wiki Raid logiciel crypté + LVM à l'installation de wheezy.

Je me suis basée sur la même machine virtuelle que celle qui a servie aux illustrations de ce dernier. J'ai changé les ports SATA des disques montés en raid /dev/sda et /dev/sdb (en port SATA0 et SATA1 avant modification), j'ai récupéré le disque virtuel sda (sur lequel une debian est fonctionnelle) d'une autre machine virtuelle sans raid. J'ai affecté le port SATA0 à ce disque ; le port SATA1 au premier disque du raid et le port SATA2 au deuxième disque du raid. Puis j'ai démarré le système.

Avec le disque d'une autre machine virtuelle, sans ce changement de numéro de port SATA, (lorsque ce disque ajouté à le port SATA2 ou plus), le système démarre sur le raid.
J'ai opté pour cette façon de booter en dehors du raid, parce que mon matériel n'est pas assez puissant pour que la machine virtuelle fonctionne correctement depuis le live cd/dvd bootable (système live très très lent).

J'ai testé aussi cette méthode de suppression du raid logiciel sur deux vieux disques physiques sur lesquels était installé un RAID1 + LVM avant installation. Là encore pour la suppression, j'ai ajouté un troisième disque dur, sur lequel j'ai installé un système, et j'ai supprimé depuis ce dernier système redémarré.
Cette fois, parce que depuis le live CD d'ubuntu (option “essayer ubuntu”), le raid n'était pas détecté par mdadm qui a eu beaucoup de mal à s'y installer.

Rappelez-vous après avoir sélectionné “configurer le raid logiciel” le message “Ces modifications sont irréversibles” était apparu :

Il est à noter que deux étapes sont inter-dépendantes :

A) stopper et supprimer le raid avec mdadm ;

B) détruire les anciennes partitions, en créer une nouvelle (au moins une) et formater la (ou les) nouvelle(s) partition(s).

Sans l'état B si l'on essaie de réinstaller tout le système en bootant sur une image iso, la détection du matériel aboutit à ceci :

Voyons comment récupérer ces deux disques montés en raid avec ces deux étapes dans le détail.

Installation

Pour supprimer le RAID, il faut démonter les partitions qui le constituent.

Voyons le retour de sfdisk -s : après suppression du raid les lignes /dev/md0 et /dev/md1 auront disparu.

sfdisk -s
retour de la commande
/dev/sda: 10485760
/dev/sdb: 10485760
/dev/md0:  682432
/dev/md1: 9792384
/dev/mapper/systeme-root:  1949696
/dev/mapper/systeme-swap:   974848
/dev/mapper/systeme-usr:  1949696
/dev/mapper/systeme-var:  1462272
/dev/mapper/systeme-tmp:   974848
/dev/mapper/systeme-home:  2478080
total : 41235776 blocs

Si le système “tourne” sur le raid (/dev/sda et /dev/sdb montés) on ne peut pas stopper, puis supprimer le raid :

mdadm -S /dev/md0
retour de la commande
mdadm: Cannot get exclusive access to /dev/md0: Perhaps a running process, mounted filesystem or active volume groupe?

Plusieurs solutions sont possibles :

A) suppression du raid avec mdadm + fdisque + mkfs

1) Vérifier les partitions.

Repérer vos partitions raid avec fdisk -l, les disques en raid sont /dev/sdb et /dev/sdc parce qu'il s'agit de la machine virtuelle sur laquelle j'ai ajouté un disque avec le système en /dev/sda, afin de pouvoir donner ici les retours des commandes en exemple

fdisk -l /dev/sdb
retour de la commande
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
 
255 têtes, 63 secteurs/piste, 1305 cylindres,\
 total 20971520 secteurs
 
Unités = secteurs de 1 * 512 = 512 octets
 
Taille de secteur (logique / physique) :\
 512 octets / 512 octets
 
taille d'E/S (minimale / optimale) :\
 512 octets / 512 octets
 
Identifiant de disque : 0x000a6acc
 
Périphérique Amorçage Début Fin Blocs Id. Système
 
/dev/sdb1 * 2048 1368063 683008 fd\
 RAID Linux autodétecté
 
/dev/sdb2 1368064 20969471 9800704 fd\
 RAID Linux autodétecté

PUIS

fdisk -l /dev/sdc
retour de la commande
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
255 têtes, 63 secteurs/piste, 1305 cylindres,\
 total 20971520 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) :\
 512 octets / 512 octets
taille d'E/S (minimale / optimale) :\
 512 octets / 512 octets
Identifiant de disque : 0x00071fa4
Périphérique Amorçage Début Fin Blocs Id. Système
/dev/sdc1 * 2048 1368063 683008 fd\
 RAID Linux autodétecté
/dev/sdc2 1368064 20969471 9800704 fd\
 RAID Linux autodétecté
sfdisk -s
retour de la commande
/dev/sda:   8388608
/dev/sdb:  10485760
/dev/sdc:  10485760
/dev/md0:    682432
/dev/md1:   9792384
/dev/mapper/systeme-swap:    974848
/dev/mapper/systeme-root:   1949696
/dev/mapper/systeme-usr:   1949696
/dev/mapper/systeme-var:   1462272
/dev/mapper/systeme-tmp:    974848
/dev/mapper/systeme-home:   2478080
total : 49624384 blocs 

2) les commandes mdadm à lancer

mdadm -S /dev/md0
retour de la commande
mdadm: stopped /dev/md0

#PUIS

mdadm -S /dev/md1
retour de la commande
mdadm: stopped /dev/md1
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdc1
mdadm --zero-superblock /dev/sdc2

⇒ le retour du prompt indique que tout s'est bien passé.

Le retour de la commande sfdisk -s ne contient plus /dev/md0 et /md1.

Mais les commandes fdisk -l /dev/sdb puis fdisk -l /dev/sdc, renvoient encore :

retour de la commande
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 têtes, 63 secteurs/piste, 1305 cylindres,\
 total 20971520 secteurs
[...]
Périphérique Amorçage  Début         Fin      Blocs    Id. Système
/dev/sdb1  *  2048    1368063   683008  fd  RAID Linux autodétecté
/dev/sdb2     1368064 20969471  9800704 fd  RAID Linux autodétecté
root@hypathie-VirtualBox:/home/hypathie# fdisk -l /dev/sdc
 
[...]
Périphérique Amorçage  Début    Fin   Blocs  Id. Système
/dev/sdc1  *  2048  1368063  683008  fd  RAID Linux autodétecté
/dev/sdc2  1368064  20969471 9800704 fd  RAID Linux autodétecté

Après avoir stoppé le raid et lancé les commandes de suppression du raid (mdadm –zero-superblock /dev/sdxx), il est maintenant possible de supprimer ces partitions et d'en créer une nouvelle en ext4 par exemple avec gparted, ce qui n'était pas possible avant.

Il peut arriver qu'après avoir stoppé et supprimé /dev/md0 (commandes mdadm -S /dev/md0 puis mdadm –zero-superblock /dev/sdb1 et mdadm –zero-superblock /dev/sdb2), que ces commandes ne soient pas fonctionnelles sur /dev/md1.

Cela m'est arrivé (trois fois sur quatre essais sur MV, jamais sur les disques physiques (trois essais).

Bien que le système soit démarré sur /dev/sda
et que les commandes umount /dev/sdb1 ; umount /dev/sdb2 ; umount /dev/sdc1 ; umount /dev/sdc2 indiquent des partitions non montées,
on peut avoir :

mdadm -S /dev/md0
retour de la commande
mdadm: stopped /dev/md0
mdadm --zero-superblock /dev/sdb1
retour du prompt

Mais

mdadm -S /dev/md1
retour de la commande
mdadm: Cannot get exclusive access to /dev/md1\
:Perhaps a running process, mounted filesystem\
 or active volume group?
mdadm --zero-superblock /dev/sdb2
retour de la commande
mdadm: Couldn't open /dev/sdb2 for write - not zeroing

Et après cela:

sfdisk -s
retour de la commande
/dev/sda:   8388608
/dev/sdb:  10485760
/dev/sdc:  10485760
/dev/md1:   9792384
/dev/mapper/systeme-swap:    974848
/dev/mapper/systeme-root:   1949696
/dev/mapper/systeme-usr:   1949696
/dev/mapper/systeme-var:   1462272
/dev/mapper/systeme-tmp:    974848
/dev/mapper/systeme-home:   2478080
total : 48941952 blocs 

Je n'en ai pas d'explication FIXME
Mais il a été à chaque fois possible de poursuivre la suppression du raid avec gparted ou dd + mkfs, et de récupérer les disques pour d'autres installations,
en faisant d'abord par prudence :

mdadm --manage /dev/md1 --fail /dev/sdb2
retour de la commande
mdadm: set /dev/sdb2 faulty in /dev/md1
root@debian-pour-supp-raid:/home/hypathie
mdadm --manage /dev/md1 --remove /dev/sdb2
retour de la commande
mdadm: hot removed /dev/sdb2 from /dev/md1

3) purger les disques avec dd + fdisque + mkfs

Méthode testée uniquement sur machine virtuelle

3.1) effacer complètement le disque

dd if=/dev/zero of=/dev/sdb
retour de la commande
dd: écriture vers « /dev/sdb »: Aucun espace disponible sur le périphérique
20971521+0 enregistrements lus
20971520+0 enregistrements écrits
10737418240 octets (11 GB) copiés, 844,774 s, 12,7 MB/s
Commande dangereuse ne vous trompez pas de disque !

C'est assez long : soyez patient.

3.2) Créer une partition sur tout le disque /dev/sdb

fdisk /dev/sdb
commande interactive
Le périphérique ne contient pas une table de partitions DOS ou Sun, SGI, OSF valable
Création d'une nouvelle étiquette DOS avec id de disque 0x6c6d8b8e.
Les modifications restent en mémoire jusqu'à ce que vous les écriviez.
Après quoi, bien sûr, le contenu précédent sera irrécupérable.
 
Avertissement : indicateur 0x0000 incorrect dans la table de partitions 4, sera corrigé par w (écriture)
 
Commande (m pour l'aide): n
Type de partition :
   p   primaire (0 primaire(s), 0 étendue(s), 4 libre(s))
  e   étendue
Sélection (p par défaut) : p
Numéro de partition (1-4, par défaut 1): 1
Premier secteur (2048-20971519, par défaut 2048):
Utilisation de la valeur par défaut 2048
Dernier secteur, +secteurs or +taille{K,M,G} (2048-20971519, par défaut 20971519):
Utilisation de la valeur par défaut 20971519
 
Commande (m pour l'aide): t
Partition sélectionnée 1
 
Code Hexa (taper L pour lister les codes): 83
 
Commande (m pour l'aide): w
La table de partitions a été altérée.
 
Appel de ioctl() pour relire la table de partitions.
Synchronisation des disques.

3.3) Formater en ext4 (par exemple)

mkfs.ext4 /dev/sdb
commande interactive
mke2fs 1.42.5 (29-Jul-2012)
/dev/sdb est le périphérique en intégralité, pas seulement une partition !
Procéder malgré tout ? (o,n)

Avec o #retour du prompt

Il est possible maintenant de récupérer ses disques pour y installer à nouveau un OS. En tout cas de façon certaine pour une VM

B) Suppression des partitions et formatage des disques avec gparted

Après avoir utilisé les commandes de mdadm pour stopper et supprimer /dev/md0 et/ou /dev/md1 (voir la note important plus haut paragraphe A n°2)
il est possible de supprimer ses partitions, re-partitionner, et formater ses disques avec gparted pour une autre installation.

Méthode testée sur disques physiques et sur machine virtuelle
apt-get install gparted

Et voilà, vous pouvez maintenant réutiliser les disques pour y installer un système !

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !