Remplacement de hardware, migration de VM, ...


La méthode permet un remplacement de hardware (ou pseudo hardware) avec une coupure de services très courte, de l’ordre de quelques secondes, dans les cas suivants :
- machine physique vers une autre machine physique,
- machine physique vers une autre machine virtuelle,
- machine virtuelle vers une autre machine virtuelle,
- changement d’hébergeur,
- changement de disque dur,
- ...

La méthode décrite utilise des systèmes GNU/Linux Debian, mais peut être adaptée aux autres distributions.

1) Installer une nouvelle machine avec un partitionnement adéquat et éventuellement des volumes logiques.

2) Exécuter une première fois le code rsync ci-dessous :

rsync -azv --numeric-ids $SOURCE:/ / \
       --exclude='/dev/*' \
       --exclude='/etc/lvm*' \
       --exclude='/etc/mtab' \
       --exclude='/etc/fstab' \
       --exclude='/boot/*' \
       --exclude='/proc/*' \
       --exclude='/sys/*' \
       --exclude='/etc/udev/rules.d/*' \
       --exclude='/etc/hostname' \
       --exclude='/etc/hosts' \
       --exclude='/etc/network/interfaces' \
       --exclude='/etc/network/interfaces.d/*' \
       --exclude='/etc/ssh/*' \
       --exclude='/root/.ssh' \
       --exclude='/etc/mdadm/mdadm.conf'



3) Stopper tous les processus sur la machine source.

4) Stopper tous les processus sur la machine nouvelle.

5) Exécuter à nouveau un script de synchronisation des données ci-dessous. Attention, celui-ci détruit les données sur la machine nouvelle, il faut donc l’adapter avec soin :

rsync -azv --delete --numeric-ids $SOURCE:/ / \
       --exclude='/dev/*' \
       --exclude='/etc/lvm*' \
       --exclude='/etc/mtab' \
       --exclude='/etc/fstab' \
       --exclude='/boot/*' \
       --exclude='/proc/*' \
       --exclude='/sys/*' \
       --exclude='/etc/udev/rules.d/*' \
       --exclude='/etc/hostname' \
       --exclude='/etc/hosts' \
       --exclude='/etc/network/interfaces' \
       --exclude='/etc/network/interfaces.d/*' \
       --exclude='/etc/ssh/*' \
       --exclude='/root/.ssh' \
       --exclude='/etc/mdadm/mdadm.conf'



Si besoin, récupération des fichiers de la source :

rsync $SOURCE:/etc/fstab   /root/
rsync $SOURCE:/etc/hostname   /root/
rsync $SOURCE:/etc/network/interfaces     /root/
rsync $SOURCE:/etc/network/interfaces.d/* /root/
rsync -a $SOURCE:/root/.ssh/* /root/.ssh-save
rsync -a $SOURCE:/etc/ssh/* /etc/ssh-save



6) Installations complémentaires

Faire une mise à jour :

apt-get update
apt-get dist-upgrade

Dans le cas d’une migration d’une machine paravirtualisée, l’installation du noyau est nécessaire :

apt-get install linux-image-amd64

Si on a besoin de lvm2 :

apt-get install lvm2

Chargement des modules noyau : installer / mettre à jour l’image initramfs sur tous les noyaux :

apt-get install initramfs-tools
update-initramfs -u -k all

Installer le bootloader sur le device choisi, dans ce cas sur /dev/vda :

apt-get install grub2
update-grub
grub-install /dev/vda

Modifier l’IP sur la machine source ou bien simplement l’éteindre :

# ip a del $SOURCE/24 dev eth0 ; ip a add $AUTRE_IP_LIBRE/24 dev eth0 ; ip r add default via 192.168.42.0 dev eth0

Rebooter la machine nouvelle.