[How-To] Montage d'un disque anciennement en raid 1

Forum dédié à la distribution du même nom et que vous pourrez télécharger sur http://www.contribs.org. La nouvelle version de cette distribution se nomme SME Server

Modérateur: modos Ixus

[How-To] Montage d'un disque anciennement en raid 1

Messagepar G2L-- » 10 Jan 2007 01:14

Bonjour,

J'ai tellement galèré sur ce problème que je me fend d'un petit how-to.

Problème:
Suite à un crash hardware définitif de ma SME, je suis contraint de monter un nouveau serveur. En attendant le nouveau matériel, je voulais monter un des deux disques anciennement en raid 1 pour récupérer les données sur le réseau.

Ayant, une copie d'une SystemRescueCD (http://www.sysresccd.org/Main_Page) sous la main, je branche le disque sur un ordinateur de récup et boot le live-cd. En fait, n'importe quel live-cd gérant lvm2 fait l'affaire...
Code: Tout sélectionner
boot: fb1024 setkmap=fr dolvm2 dodhcp

Une fois dans la console, je récupère l'UUID de l'array:
(/dev/hda1 ne m'intéresse pas car cette partition ne contient pas mes données dans une installation classique SME raid 1)
Code: Tout sélectionner
$ mdadm --examine --scan /dev/hda2
ARRAY /dev/md/2  level=raid1 num-devices=2 UUID=aaaaaaaa:bbbbbbbb:cccccccc:dddddddd

Ce format de sortie étant très proche de la syntaxe du fichier /etc/mdadm.conf, je redirige la sortie vers ce fichier:
Code: Tout sélectionner
$ mdadm --examine --scan /dev/hda2 >> /etc/mdadm.conf

J'édite le fichier de manière à ce qu'il ressemble à ceci:
[Attention: il y bien 2 lignes et pas 3]
Code: Tout sélectionner
DEVICE /dev/hda2
ARRAY /dev/md2  level=raid1 num-devices=2 UUID=aaaaaaaa:bbbbbbbb:cccccccc:dddddddd devices=/dev/hda2,missing

Je crée les blocs manquants (si nécessaire):
Code: Tout sélectionner
$ mknod /dev/md0 b 9 0
$ mknod /dev/md1 b 9 1
$ mknod /dev/md2 b 9 2

Enfin, je peux démarrer le raid:
Code: Tout sélectionner
$ mdadm -A -s -R

On vérifie que tout va bien avec un:
Code: Tout sélectionner
$ cat /proc/mdstat

Maintenant qu'on en a fini avec le raid, on peut s'attaquer au LVM...
On commence par scanner les Physical Volume (PV) à la recherche du Volume Group "main":
Code: Tout sélectionner
$ pvscan

Si notre VG existe, on peut le "charger":
Code: Tout sélectionner
$ vgchange -ay main

Ouf, il ne reste plus qu'à monter le tout:
Code: Tout sélectionner
$ mkdir /mnt/raid
$ mount /dev/main/root

Et pour le plaisir
Code: Tout sélectionner
$ ls /mnt/main/root/home/e-smith/


Si tout ceci vous fait penser à une recette de sorcier, voilà un peu de littérature pour approfondir:
http://www.linuxjournal.com/article/8874
http://contribs.org/viewtopic.php?p=148172#148172

@+
Dernière édition par G2L-- le 12 Jan 2007 14:55, édité 2 fois au total.
G2L--
Second Maître
Second Maître
 
Messages: 26
Inscrit le: 17 Août 2004 18:13

Messagepar fraedhrim » 10 Jan 2007 10:30

Salut,

Merci bien pour ce tuto. Ca fait partie des questions que je me posais sur les remédiations aux sinistres avec la SME.

Si je peux me permettre d'élargir le champ de ce topic en un "Comment se sortir du brun ?" j'aurais une autre question.

Si mon hardware pète et que je dois monter mes disques sur un autre système comment faire repartir ?
Est-ce possible ?
Quelles seraient les limitations ?
J'imagine qu'un kudzu doit résoudre une partie des soucis mais comment arriver à ce stade et passer l'à mon avis inévitable "kernel panic" ?

Il doit y avoir des bouts de réponse un peu partout étant donné la généricité des questions mais ça serait chouette si on arrivait à synthétiser un truc dédié à la SME.
Merci pour les infos.

Fred
Avatar de l’utilisateur
fraedhrim
Amiral
Amiral
 
Messages: 1264
Inscrit le: 27 Jan 2004 01:00
Localisation: Nantes

Messagepar G2L-- » 10 Jan 2007 12:39

fraedhrim a écrit:Si mon hardware pète et que je dois monter mes disques sur un autre système comment faire repartir ?

Salut Fred,

Je suis quasi dans ce cas là en ce moment, à la seule différence que sur ma future SME, je passe à de nouveaux disques SATA (anciennement IDE).

Je compte commencer par installer une SME toute fraîche. Ensuite je brancherai un des deux anciens disques en plus, je le monterai sur base du tuto ci-dessus et enfin je pourrai copier les données et autres fichiers de config dans le nouveau système:
Code: Tout sélectionner
(Penser à faire un "cp -pR" afin de préserver les attributs des fichiers)
(*** UPDATE *** Encore mieux, utiliser [i]tar[/i] (cf post de Gaston))
/home/e-smith/files/
/home/e-smith/db/accounts
/etc/e-smith/templates-custom/
/etc/e-smith/templates-user-custom/
/etc/group
/etc/gshadow
/etc/passwd
/etc/shadow
/etc/samba/smbpasswd
/etc/samba/secrets.tdb
/etc/smbpasswd
/etc/sudoers
/etc/ssh/
/opt/
/root/

Et j'irai brûler un cierge avant le reboot...
Code: Tout sélectionner
signal-event post-upgrade; signal-event reboot


@+

Update Ca fonctionne mais ... lire la suite des posts ...
Dernière édition par G2L-- le 13 Jan 2007 19:09, édité 2 fois au total.
G2L--
Second Maître
Second Maître
 
Messages: 26
Inscrit le: 17 Août 2004 18:13

Messagepar fraedhrim » 10 Jan 2007 13:47

Ah ouais carrément !? :shock:

Ca marche ça ? Ca doit $%#&! de partout à la copie non ?
Avatar de l’utilisateur
fraedhrim
Amiral
Amiral
 
Messages: 1264
Inscrit le: 27 Jan 2004 01:00
Localisation: Nantes

Messagepar Muzo » 10 Jan 2007 18:22

Magnifique How To à mettre dans le Newbie Kit SME7 ca ;)
/Muzo
"La vie n'est pas un combat, mais une passion à défendre!" MASS HYSTERIA - Knowledge is power
Avatar de l’utilisateur
Muzo
Amiral
Amiral
 
Messages: 5236
Inscrit le: 07 Mai 2003 00:00
Localisation: BNF! Je me culturise.

Messagepar Gaston » 11 Jan 2007 01:54

=D> =D> =D>
juste une remarque, lors de la copie des templates-custom, dans le cas ou tu changes de version de serveur entre les deux, je les mettrai de côté et ne les réintègrerait qu'au fur et à mesure en testant la compatibilité.
Côté copie je passerait par un (cd /mnt/disk ; tar cf - xxx yyy zzz) | tar xf - , plutôt qu'un cp.
Je n'ai plus les raisons sous la main (hors les liens hard qui seront ainsi préservés), histoire d'habitude certainement ;)

Encore =D> pour le how-to

G.
Avatar de l’utilisateur
Gaston
Amiral
Amiral
 
Messages: 1367
Inscrit le: 06 Oct 2003 00:00
Localisation: Saint Maur, 94 FR

Messagepar G2L-- » 12 Jan 2007 14:49

Bonjour,

Ca y est, mon nouveau serveur est enfin en service !!! Mais, je reviens un peu sur la belle théorie de mon précedent post...

En fait, brancher mon ancien disque sur le nouveau serveur fraichement installé pose un sérieux problème... On se retouve en effet avec 2 Volume Group du même nom "main". Et bien entendu, impossible de monter l'ancien VG "main" du vieux disque en même temps que le VG "main" du nouveau serveur :?

Bref, j'en ai été quitte pour copier mes données sur un autre disque avant de les copier sur le nouveau système.

Problème ouvert à discussion :wink:

@+
G2L--
Second Maître
Second Maître
 
Messages: 26
Inscrit le: 17 Août 2004 18:13

Messagepar Gaston » 13 Jan 2007 01:35

Bonsoir,
Ouallou c'est chaud, mais ça se fait 8-[

[DISCLAMER]
:!: ceci est une procédure qui suppose que l'on sache où l'on met les pieds :!:
:!: En particulier le fait que l'on peut DETRUIRE aussi bien le disque que l'on veut récupérer que le disque du système sur lequel on travaille :!:
[/DISCLAMER]

La procédure suivante a pour but de remonter un VG d'une SME7.x sur une autre SME7.x
Cette opération ne peut se faire directement car il y a deux sources de conflits : l'ID des métadevices de RAID et le nom des VG.

Les étapes à suivre :
    Détecter les caractèristiques du périphérique RAID source
    Redémarer le périphérique RAID avec un incrément de MétaDevice
    Récupérer la descritpion de l'entête du VG source
    Créer la description de l'entête du VG sur le système destination

Détection des caractéristiques du device RAID ( /dev/sdc est le device disque qui contient les données à récupérer)
Code: Tout sélectionner
[root@ixus ~]# mdadm --examine --scan /dev/sdc2
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=e8cd2148:6e9e3fb7:12e3c7d8:d5e2d146
   devices=/dev/sdc2
[root@ixus ~]#

Les données récupérées sont incluses dans le fichier de configuration /etc/mdadm.conf et le device RAID activé.
Notez le remplacement de /dev/md2 par /dev/md3 , et que la ligne ARRAY finit par "sdc2,missing"
Code: Tout sélectionner
[root@ixus ~]# cat >> /etc/mdadm.conf
DEVICE /dev/sdc2
ARRAY /dev/md3 level=raid1 num-devices=2 UUID=e8cd2148:6e9e3fb7:12e3c7d8:d5e2d146 devices=/dev/sdc2,missing
[root@ixus ~]#
[root@ixus ~]# mdadm -A --scan /dev/md3
mdadm: only specify super-minor once, super-minor=2 ignored.
mdadm: only specify super-minor once, super-minor=1 ignored.
mdadm: /dev/md3 has been started with 1 drive (out of 2).
[root@ixus ~]#

Il faut maintenant récupérer l'entête du VG source :
Code: Tout sélectionner
[root@ixus ~]# dd if=/dev/md3 bs=512 count=255 skip=1 of=/tmp/header_md3
255+0 records in
255+0 records out
[root@ixus ~]#

Le fichier résultat est un mélange de données binaires et textes. LVM gère cet espace disque comme un buffer circulaire : on retrouve donc plusieurs fois les données de configuration sur le disque (man lvm.conf pour les détails) avec des timestamps différents.

Récupérer l'ensemble des informations les plus récentes décrivant le VG:
Code: Tout sélectionner
main { ...
        physical_volumes { ...
                pv0 { ...
        }
        logical_volumes { ...
                root { ...
                        segment1 { ...
                                stripes = [ ...
                        }
                }
                swap { ...
                        segment1 { ...
                                stripes = [ ...
                        }
                }
        }
}

(je n'ai laissé que les labels ...)
Comparez la structure des données avec celle décrite dans /etc/lvm/backup/main, assurez vous du respect de la syntaxe.

Changer le label main en main_1 (par exemple, il n'est pas nécessaire de renommer les LVOLs, leur nom complet est en effet "VGName/LvolName"),
On peut maintenant créer la description de l'entête du VG dans la configuration LVM
Code: Tout sélectionner
[root@ixus ~]# vgcfgrestore -f /tmp/header_md3 main_1
  Restored volume group main_1
[root@ixus ~]#
[root@ixus ~]# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "main_1" using metadata type lvm2
  Found volume group "main" using metadata type lvm2
[root@ixus ~]#
[root@ixus ~]# vgchange -a y main_1
  2 logical volume(s) in volume group "main_1" now active
[root@ixus ~]#
[root@ixus ~]# mount /dev/main_1/root /mnt

8)
Cette méthode est librement inspirée de l'article de Richard Bullington-McGuire dans le Linux Journal

Encore une fois, ce genre d'opération peut présenter des risques qu'il est nécessaire d'évaluer avant de se lancer dans l'aventure.

G.
Encore merci à G2L-- pour avoir lancé le fil :D
Avatar de l’utilisateur
Gaston
Amiral
Amiral
 
Messages: 1367
Inscrit le: 06 Oct 2003 00:00
Localisation: Saint Maur, 94 FR

Messagepar G2L-- » 13 Jan 2007 19:01

Pfuu :shock: Ca vole de plus en plus haut...

Merci pour ta réponse Gaston, ta solution est très élégante !!

[DISCLAMER]
:!: La suite n'est pas une procédure mais une pure spéculation de ma part :wink:
[/DISCLAMER]

Néanmoins, je te suis bien jusqu'au "montage" du Raid mais, n'est-il pas possible de renommer plus simplement l'ancien VG avec vgrename?
Code: Tout sélectionner
vgrename  [-A/--autobackup  y/n]  [-d/--debug]  [-h/-?/--help] [-t/--test] [-v/--verbose] OldVolumeGroupPath/-Name  NewVolumeGroupPath/-Name

Ca n'ira pas si le VG de la nouvelle installation est actif (je vais renommer le mauvais VG) mais, si je démarre un PC avec un live-cd, en ne branchant que mon ancien disque, est-ce c'est jouable?
Code: Tout sélectionner
vgrename main main_1

Et je redémarre le tout normalement avec tous les disques ce fois-ci.

Ca tient la route ?

@+

G2L--
G2L--
Second Maître
Second Maître
 
Messages: 26
Inscrit le: 17 Août 2004 18:13

Messagepar Gaston » 14 Jan 2007 01:03

Bonsoir,
G2L-- a écrit:Ca n'ira pas si le VG de la nouvelle installation est actif (je vais renommer le mauvais VG) mais, si je démarre un PC avec un live-cd, en ne branchant que mon ancien disque, est-ce c'est jouable?
Code: Tout sélectionner
vgrename main main_1

Et je redémarre le tout normalement avec tous les disques ce fois-ci.

Ca tient la route ?

Ca devrait, mais il faut s'assurer que l'on est à même de sauvegarder la conf LVM dans le header du disque.
J'ai pas spécialement envie d'essayer (en plus je sait pas, là, maintenant comment faire :-k ).
Ma logique est :
"on est en phase de crise avec des données que l'on doit récupérer. Toute action d'écriture sur un disque est une chance de plus de bousiller les données dessus, alors si on peut éviter ..."

G.
Avatar de l’utilisateur
Gaston
Amiral
Amiral
 
Messages: 1367
Inscrit le: 06 Oct 2003 00:00
Localisation: Saint Maur, 94 FR


Retour vers E-Smith / SME Server

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 0 invité(s)