Du physique au virtuel avec « Mondo Rescue »

Mondo restaurationQuand on décide de virtualiser, se pose inévitablement le problème de la reprise des serveurs existants. La manière la plus naturelle d’envisager les choses consiste à se retrousser les manches et refaire une installation toute propre dans une machine virtuelle, après une bonne sauvegarde des données et de la conf, cela va de soi. Cette méthode présente le gros avantage de permettre de faire un peu de ménage, en prenant les choses calmement et sans pression.

Mais comme diraient mes amis « perlistes »… « perliens »… « perleurs »…bref… qui parlent Perl courrament  :

« There’s More Than One Way To Do It  » (TIMTOWTDI).

A l’extrême, une autre façon consiste à faire un bon « disk dump – dd » du disque vers un fichier « raw »   (ie par ex : # dd if=/dev/sda of=/chemin/fichier.raw). Ce fichier sera ensuite utilisé comme disque virtuel. Je n’ai jamais testé, mais je ne vois pas pourquoi ça ne fonctionnerait pas, à condition bien sûr, que le serveur d’origine n’intègre pas de matériels trop exotiques. Cependant, un des avantages de la virtualisation, lié à l’allocation dynamique de l’espace de stockage, est perdu. En effet, l’espace disque libre est « dumpé » et occupera de la place sur le serveur final. Paradoxal non ? Même si le procédé pourrait être amélioré en utilisant « partimage », pour gérer un peu mieux l’espace non occupé, il faut bien avouer que ce procédé demeure quelque peu « bourrin ».

Entre les deux, je vous propose d’explorer une piste nommée « Mondo ».

« Mondo Rescue »  est un utilitaire, sous licence GPL, qui permet de créer, sur des supports variés (CD, DVD, bande, montage réseau ou disque dur), une image complète ou partielle d’un système Linux.  A l’instar de Ignite sous HP-UX ou Ghost sous Windows.

Son premier atout, est qu’il s’installe sur le système et permet de créer l’archive à chaud. L’intégralité de la migration pourra se dérouler avec un serveur physique fonctionnel. Ce dernier sera arrêté au dernier moment, quand la machine virtuelle sera capable de prendre le relai.

Son deuxième atout est sa capacité à créer une image « iso » bootable et compressée, dont la fonction est de restaurer notre système en s’adaptant au nouveau matériel. A l’inverse de « dd » ou de « partimage », qui réalisent des copies physiques de blocs du système de fichier, Mondo re-crée le partitionnement mémorisé, y restaure les fichiers sauvegardés et en dernier lieu, réinstalle le « bootloader ».

Avant d’aller plus loin, j’attire votre attention, chers lecteurs, sur le fait que la solution « mondo » n’est pas fiable à 100%.  Il n’est pas rare, dans le cas de partitionnements un peu complexes (basés sur LVM entre autres), que ce dernier s’emmêle les pinceaux et donne envie irresistible de s’arracher les cheveux (pour peu qu’il nous en reste !). Je ne vais pas vous infliger le refrain « je ne suis pas responsable bla bla bla… », mais faites tout de même gaffe en production. Si je devais qualifier cette solution en quelques mots, je dirais qu’elle est performante mais reste assez artisanale. Ceci dit, si je prends la peine d’écrire ce billet, c’est qu’elle présente un intérêt (enfin, j’espère) et qu’elle peut tout de même rendre de fiers services.

 

Installation

 

Le site officiel fournit  les paquets pour de nombreuses distributions. Sous Debian, il est, en plus, possible d’utiliser les dépôts :

deb ftp://ftp.mondorescue.org/debian X.0 contrib

ou X est le numéro de version ( 4 pour Etch, 5 pour Lenny, 6 pour Squeeze).

Par exemple, pour l’installer sous Squeeze :

# echo « deb ftp://ftp.mondorescue.org/debian 6.0 contrib »  > /etc/apt/source.list.d/mondo.list

# apt-get update

# apt-get install mondo

 Note pour Squeeze : Mondo utilise les outils mkisofs pour la génération des images iso et cdrecord pour la gravure de CD. Ces outils ont été respectivement remplacés dans Squeeze, par  genisoimage et wodim. Il est possible de s’en sortir (pas très proprement), en créant des liens symboliques :

# ln -s /usr/bin/genisoimage /usr/bin/mkisofs
# ln -s /usr/bin/wodim /usr/bin/cdrecord


Il m’est arrivé de rencontrer quelques problèmes avec « Mindi » . Pour la création du boot de l’image iso, un ramdisk est utilisé, sur lequel on est parfois à l’étroit.  On peut l’augmenter en dé-commentant et en affectant une plus grande valeur au paramètre « EXTRA_SPACE » du  fichier de configuration de « Mindi »   (/etc/mindi/mindi.conf).

 

Utilisation

 

Il y a encore « More Than One Way » pour utiliser Mondo. La première se fait par une interface « curses », affichée par défaut, lors de l’exécution de mondoarchive sans paramètre.

Mondo Rescue

La deuxième est bien entendu en ligne de commande :

# mondoarchive -O -p nomarchive -i -I / -d /destination -E /destination -T /temporaire -S /Scratchdir -s taille

Un exemple :

# mondoarchive -O -p serveur1 -i -I / -d /home/joel/mondo -E /home/joel/mondo -s 10g

Les images iso porteront le nom « serveur1-x.iso » (x = numéro incrémentiel) est seront placées dans le répertoire « /home/joel/mondo« . Ce répertoire est exclu de l’archive  et les images ne feront pas plus de 10 Go.

Les autres options sont laissées par défaut.

Ensuite, c’est le moment, tant connu des informaticiens, de laisser bosser la machines et d’aller vaquer à d’autres occupations.

Quelques « occupations » plus tard, l’image générée peut être utilisée pour installer la machine virtuelle, en la transférant sur l’hyperviseur  et en l’utilisant comme CDRom virtuel par exemple.

Au boot et après une détection du nouveau matériel, l’interface propose diverses options, dont l’une est « Automatique » pour une réinstallation à l’identique, une autre, « Manuelle », permet, entre autre, d’aller trifouiller le partitionnement et l’adapter –  Très utile quand la taille de l’espace disque allouée à la VM diffère du disque original.

Les données restaurées et avant l’écriture du secteur d’amorçage, il est possible de prendre la main dans un chroot, afin de vérifier le bon montage des partitions, modifier si nécessaire les fichiers de configuration et si besoin regénérer le initramfs  pour qu’il prenne en compte le nouveau matériel.

Pour terminer, je vous propose d’illustrer cet article par un screencast. Il reprend la migration d’un serveur physique sous Debian Squeeze vers une machine virtuelle Proxmox VE / KVM ( précédent article).

 

Sources :

 

 

 

Laissez votre message après le bip...Biiiiip

Commentaires

Je ne connaissais pas du tout et je vais le tester rapidement afin de voir si cela peut me servir en exercice de PRA

Les éditeurs propose des outils de migration et de virtualisation sans égal. vu la compatibilité des lvm, voire des raid quand on applique cette solution sur des serveur il vaut mieux éviter à part pour s’amuser.

@Cruz

C’est un point de vue…

Le mien est différent, j’ai tendance à préférer des solutions ouvertes et transparentes et pour lesquelles on peut prendre le temps d’analyser et comprendre le fonctionnement. C’est vrai pour les solutions de virtualisation, mais aussi pour tout le reste bien sûr. Je suis bien plus en confiance avec ce type de solutions, que je peux prendre le temps de maitriser, plutôt qu’une mystérieuse boite noire, même si cette dernière fait très bien son travail.

Je ne dis pas qu’il faut écarter les solutions des « éditeurs » lors des choix de solutions techniques, mais je ne le ferais jamais sans avoir décortiqué les alternatives libres; Les critères d’ouverture et d’interopérabilité rentrent en compte dans mon choix, au même titre que d’autres critères techniques ou fonctionnels. Après, tout est une question de pondération. Mais je ne vais pas lancer un Xème débat libre vs propriétaire.

Si, personnellement, je reste assez réservé sur « Mondo », qui, je me répète, me parait artisanal mais néanmoins intéressant – je connais des admins qui l’utilisent sans aucun problème depuis de nombreuses années pour faire des images sauvegarde de serveurs en prod – je pense sincèrement que, quant à lui, « Proxmox » mérite largement d’être regardé avant de se jeter tête baissée sur du VMWare, Citrix ou Hyper-V.

+1

Ca me rappelle d’anciens souvenirs, quand j’ai installé mon premier serveur web sous Linux et Apache, on me disait : « tu es fou, les serveurs Microsoft iis font ça très bien ».

Excellent article et tuto !

Sinon, à la place de « perleurs », il y aurait :
Mongueurs de Perl : http://fr.wikipedia.org/wiki/Mongueurs_de_Perl

Bonjour jopa,
merci pour ce tutoriel,et en fait j’ai la distribution redhat du coup je recherche la méthode pour cette distribution là.

j’aurai besoin juste de la premiére étape deb ftp://ftp.mondorescue.org/debian X.0 contrib
et l’equivelent de etc/apt/sources.list
je n’ai jamais travaillé sur redhat c’est pour cela je connais que les commmandes debian
merci d’avance
je serai très reconnaissante

Laurine, voici un exemple (pour RHEL 6 64 bit) de contenu de fichier mondo.repo à mettre dans /etc/yum.repos.d ; ensuite tu devrais pouvoir installer mondorescue en exécutant : yum install mondo

[mondorescue]
name=mondorescue mondo mindi
baseurl=ftp://ftp.mondorescue.org/rhel/6/x86_64
enabled=1
gpgcheck=0

Laisser un commentaire

(requis)

(requis)


*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Anti-spam image