Migrations via Rsync
Utilisation de SysrescueCD pour les migrations
Introduction
Ce tutoriel étape par étape peut être utilisé pour migrer un serveur physique ou une machine virtuelle vers une autre machine ou VM.
Cela peut être bénéfique pour les scénarios suivants :
- OS obsolète
- Hyperviseurs incompatibles (OpenStack/ESX)
Prérequis
- Disques durs/volumes au moins de même taille
- Besoin de la version de l'OS source
rsync
sur la source- Une adresse IP libre pour le
rsync
de SysrescueCD
Configuration de SysrescueCD
Sur SysrescueCD :
loadkeys fr # ou setkmap fr
passwd # Définir un mot de passe fort
systemctl stop iptables
Trouvez le nom de votre interface réseau :
ip a
Configurez l'interface réseau avec une IP libre, en remplaçant nom_interface
par le nom trouvé précédemment (ex: ens32, eth0, etc.) :
ip addr add 192.168.1.XX/24 dev nom_interface
ip route add default via 192.168.1.1
# Vous devrez peut-être exécuter les commandes réseau deux fois
# Vous devrez peut-être attendre 2 minutes
Une fois connecté en SSH :
fdisk /dev/sda # Créer une nouvelle partition (n,p,enter,enter,enter,w)
mkfs.ext4 -j /dev/sda1
mount /dev/sda1 /mnt
Sur le serveur source
Vous avez deux options pour lancer le script rsync
sur la source afin d'éviter les déconnexions : screen
ou byobu
.
Option 1 : Utiliser screen
screen -S migration # Lancer une nouvelle session screen nommée "migration"
# Lancez votre script rsync ici
Pour détacher la session, appuyez sur Ctrl+a
puis d
.
Pour la récupérer plus tard :
screen -r migration
Option 2 : Utiliser byobu
byobu -S migration # Lancer une nouvelle session byobu nommée "migration"
# Lancez votre script rsync ici
Pour détacher la session, appuyez sur Ctrl+a
puis d
.
Pour la récupérer plus tard :
byobu -r migration
N'oubliez pas de quitter votre session une fois terminé.
Créez un script à usage unique pour synchroniser la majorité des fichiers et configurations du serveur.
Personnalisez ce script selon vos besoins :
#!/bin/bash
rsync -av --dry-run \
--bwlimit="10m" \
--exclude="/etc/lvm/*" \
--exclude="/proc/*" \
--exclude="/tmp/*" \
--exclude="/sys/*" \
--exclude="/dev/*" \
--exclude="/mnt/*" \
--exclude="/run/*" \
--exclude="/etc/udev/rules.d/*" \
--exclude="/lost+found" \
--exclude="/usr/lost+found" \
--exclude="/var/lost+found" \
--exclude="/var/www/lost+found" \
/ root@192.168.1.XX:/mnt/
Configuration de la VM
Une fois rsync
terminé, rebootez SysrescueCD puis montez et chroot
dans votre système par SSH :
mount /dev/sda1 /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
chroot /mnt /bin/bash
Récupérez l'UUID de la partition racine (/dev/sda1
) :
blkid /dev/sda1
Éditez le fichier /etc/fstab
et commentez les anciens montages qui ne sont plus nécessaires.
Ajoutez la ligne suivante pour monter /dev/sda1
en tant que partition racine, en remplaçant <UUID>
par l'UUID récupéré précédemment :
UUID=<UUID> / ext4 defaults 0 1
Si le serveur source utilise LVM, supprimez la configuration LVM et les paquets associés :
apt-get remove lvm2
rm -rf /etc/lvm
Mettez à jour Grub si nécessaire (par exemple si vous utilisez extlinux) :
# Mise à jour Grub basique
grub-install -v --force /dev/sda
update-grub
# Sur VM extlinux ou grub corrompu
# Si pas de commande grub-install : apt install grub2 et sélectionner /dev/sda
cd /boot ; rm -Rf extlinux ; rm *cloud*
apt-get install linux-image-amd64
update-initramfs -c -k all
grub-install -v --force /dev/sda
update-grub
Mettez à jour votre réseau :
vim /etc/network/interfaces # Éditer l'interface, vous pouvez garder eth0
grep -iR 10.160.XXX.XXX /etc
sed -i 's/10\.160\.XXX\.XXX/192\.168\.1\.XX/g' votre_fichier
Si vous utilisez Plesk, mettez à jour l'IP dans la base de données avec un script Plesk :
/opt/psa/bin/reconfigurator mapfile
# Éditer mapfile :
# eth0 10.168.X.X 255.255.255.0 -> eth0 192.168.1.X 255.255.255.0
# Reconfigurer :
/opt/psa/bin/reconfigurator mapfile
plesk repair all -y # Peut être très long, ne pas faire sans problèmes
Installez/supprimez des packages si besoin :
apt-get install open-vm-tools
apt-get install shorewall # Ne pas utiliser avec Plesk
apt-get remove cloud-init
Avant de redémarrer, prenez un snapshot de la VM pour éviter de refaire la configuration IP en cas d'échec.
Essayez votre VM :
exit
umount /mnt/{proc,sys,dev}
umount /mnt
reboot
Dernière synchronisation
Exécutez un rsync
final avant de finaliser la migration.
Modifiez le script selon vos besoins.
Évitez de synchroniser l'intégralité pour ne pas écraser vos modifications.
Utilisez l'option --delete
pour garder les données à jour.
Arrêtez tous les services (mysql, etc.) avant d'exécuter en tant que root
(éditer /etc/sshd_config
).
Exemples de scripts rsync
:
#!/bin/bash
rsync -avz --delete /var/qmail/ root@192.168.1.XX:/var/qmail/
#!/bin/bash
rsync -avz --delete /var/lib/mysql/ root@192.168.1.XX:/var/lib/mysql/
#!/bin/bash
rsync -avz --delete --exclude="/var/www/vhosts/system" /var/www/vhosts/ root@192.168.1.XX:/var/www/vhosts/
#!/bin/bash
rsync -avz --delete /var/lib/psa/dumps/ root@192.168.1.XX:/var/lib/psa/dumps/
Informations supplémentaires
Créer un swapfile si besoin :
fallocate -l 1G /.swapfile # OU dd if=/dev/zero of=/.swapfile bs=1M count=10240
chmod 600 /.swapfile
mkswap /.swapfile
swapon /.swapfile
swapon -s
echo "/.swapfile none swap sw 0 0" >> /etc/fstab
En cas d'erreur "PTY allocation request failed" durant SSH :
mount devpts /dev/pts -t devpts
# Puis redémarrez votre connexion SSH
Quelques considérations finales :
-
Vérifiez bien tous les services critiques après la migration (web, mail, DNS, bases de données, etc.).
-
Mettez à jour la surveillance et les sauvegardes pour prendre en compte la nouvelle VM.
-
Documentez la migration, en notant l'ancien et le nouvel environnement, les étapes réalisées, les problèmes rencontrés et leur résolution.
-
Planifiez l'arrêt de l'ancien serveur après vous être assuré que la migration est un succès.
Ce guide vous fournit un cadre général pour réaliser des migrations de serveurs Linux avec SysrescueCD et rsync.
Les détails peuvent varier selon vos versions d'OS et vos besoins spécifiques.
N'hésitez pas à l'adapter en fonction de votre contexte.
Réalisez toujours des tests approfondis avant de finaliser la migration et prévoyez un plan de retour arrière.
Une bonne préparation, une exécution minutieuse et de la patience vous permettront de réaliser des migrations réussies, en minimisant les interruptions de service.
Avec ce document détaillé, vous avez en main les informations clés pour migrer efficacement vos serveurs Linux d'un environnement à l'autre en utilisant les outils SysrescueCD et rsync.