Backup complet démarrable d'un disque debian

Tags: #<Tag:0x00007f63f418cb58>

Sous debian 9, j’ai besoin de copier l’ensemble des fichiers d’un disque sur un autre disque, et de rendre ce nouveau disque démarrable. Je précise qu’il s’agit de disques virtuels (VirtualBox, extensions .vdi/.vdmk).

La commande dd n’est pas possible dans mon cas car le nouveau disque est plus petit que l’ancien. En effet, j’ai créé bêtement un disque dynamique de 400 GB sur l’ancienne VM et je souhaite réduire ce disque à 100 GB sur la nouvelle machine.

J’ai essayé de longues heures de passer par les options de vboxmanage, mais aucune ne fonctionne convenablement.

Je me suis donc résolu à faire un backup complet des fichiers de la VM1 sur la VM2, puis de rendre la VM2 démarrable.

J’ai été surpris de constater que la documentation en ligne à ce sujet (en tout cas en anglais) est plutôt lacunaire. Après moults essais, je pense être parvenu à mes fins, mais je souhaiterais avoir l’avis d’utilisateurs plus avertis afin de comprendre si je fais tout juste et si je n’ai rien oublié au passage.

Voici le déroulement de la copie point par point

1. Création d’une nouvelle machine virtuelle (VM2) dans VirtualBox
Je n’installe rien, je me contente de créer une nouvelle machine avec un disque dur dynamique de 100 GB.

2. Copie de la VM1 sur le disque de la VM2
Dans VirtualBox, j’ajoute le disque de la VM1 dans les settings de la VM2. J’ajoute également un ISO Ubuntu en Live CD/DVD (pas d’ISO debian live sous la main).

Je lance la VM2 qui démarre avec l’ISO d’Ubuntu.

Une fois le live CD Ubuntu démarré, je lance Gparted, je crée une table de partition MSDOS sur le disque vierge de la VM2, dans laquelle je crée une partition ext4 et une partition SWAP.

Je monte les deux volumes, et je copie le disque de la VM1 sur la VM2 avec la commande suivante:

sudo rsync -aAXx /chemin_d_accès_a_la_VM1 /chemin_d_accès_a_la_VM2

Une fois que c’est fait, j’éteinds la machine.

3. Rendre la nouvelle machine démarrable
Je relance la VM2, toujours avec le live os Ubuntu, mais SANS le disque de la VM1
Il faut maintenant installer grub et mettre à jour le fichier /etc/fstab dans la VM2 pour la rendre démarrable. Commandes:

sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /sys /mnt/sys
sudo mount --bind /proc /mnt/proc
sudo chroot /mnt

Une fois “chrooté”, j’installe grub:

grub-install /dev/sda
update-grub

Puis je remplace les anciens UUID de la VM1 dans /etc/fstab par les nouveaux UUID de la VM2:

blkid
nano /etc/fstab

Je vérifie que les UUID dans /boot/grub/grub.cfg sont corrects

cat /boot/grub/grub.cfg

Si tout est correct, je redémarre la machine, cette fois sans le live cd.

Cela fonctionne, mais la machine patine pendant une trentaine de secondes au démarrage avec le message:

Begin: Waiting for suspend/resume device ...
Begin: Running /scripts/local-block ... done.

Pour éviter cela, il faut encore mettre à jour l’UUID du nouveau SWAP:

nano /etc/initramfs-tools/conf.d/resume
update-initramfs -u

Voilà! Apparemment, tout fonctionne… Mais je voudrais être sûr que j’ai bien fait tout juste, étant donné que je n’ai trouvé aucun tutoriel complet expliquant la marche à suivre de A à Z.

Bonjour

Je n’utilise pas VirtualBox, donc, je n’ai pas pu tester ce qui suit,
mais je pense qu’il devrait être possible,
dans un premier temps, ne serait-ce que par précaution au cas où ça se passe mal pour la suite,
de clôner la machine virtuelle

pour ensuite, en ligne de commande, réduire la taille de la machine virtuelle clônée
qui, dans l’exemple de ligne de commande suivante, utiliserait un fichier image nommé monClone.vdi

VBoxmanage modifyhd monClone.vdi --resize 100000  # Modifier la "taille" pour 100GB du disque de la machine virtuelle qui utilise monClone.vdi

Merci de ta réponse, oui le clonage de la VM est une étape nécessaire par prudence :wink:

Concernant vboxmanage modifyhd --resize, malheureusmeent cela ne fonctionne que pour augmenter, et non réduire un disque de taille dynamique…

Grrrr ! :smile:


Peut-être alors
en lançant d’abord cette ligne de commande :

vboxmanage modifyhd --compact monClone.vdi

et si la taille résultant du compactage le permet,
lancer la ligne de commande suivante :

vboxmanage modifyhd --resize 100000 monClone.vdi

Ca ne marche pas non plus :slight_smile:

Plus précisément, cela dépend du type de disque utilisé (.vdi ou .vdmk), j’ai dû d’abord cloner le disque, changer le format, le compacter… Puis à la fin cela ne marchait pas.

Comme contournement, tu peux booter sur le livecd sur deux machines virtuelles en réseau, et les cloner avec une solution réseau.
Il y a un cloneur de disque gnu qui fonctionne en réseau et interface cli, mais j’ai oublié le nom.
Et sinon, il y a des solutions élégantes en envoyant dd par un netcat (pas trop la peine de passer en ssh sur un réseau virtuel), genre: http://searchdatacenter.techtarget.com/tip/Linux-cloning-over-the-network-using-netcat
Et des recherches sur “copy disk over network linux” aussi.

C’est vrai que j’aurais dû demander plus de précision,
car on ne sait toujours pas s’il s’agit de vdi ou mdk

J’ai supposé qu’il s’agissait de type vdi dynamique,
mais il doit être possible de changer le type de fichier par conversion,
comme il m’est possible de le faire avec qemu-img (j’utilise qemu/kvm)

Bonjour,

Étant donné que le disque est en dynamique, celui-ci n’occupe pas les 400 Gio, du coup pourquoi le réduire ?
Je n’utilise plus VirtualBox, mais sinon l’idée de @mattotop est peut-être la plus simple. A titre perso., pour faire du clonage/sauvegarde de disque complet, j’utilise Clonezilla. Par contre je ne me souviens pas si il gère les disques plus petits (y a pas de raison que non).

Il n’occupe pas les 400 GB mais ça va venir assez vite, étant donné que le disque “gonfle” à chaque fois qu’il y a des écritures jusqu’à ce qu’il atteigne sa taille maximale. Il est déjà à 85 GB. On peut le compacter, mais c’est long et fastidieux (zerofree, vboxmanage --compact, cloner et changer le format du disque si nécessaire…)

Normalement ce type d’allocation permet de ne consommer sur le disque physique, que ce qui est réellement utilisé sur le disque virtuel. En gros si l’espace partitionné dans ton système virtuel est de seulement 100 Go sur 400, alors ton disque virtuel ne pourra jamais prendre plus de 100 Go sur ton disque physique. Arrêtez moi si je dis une bêtise !

Après il est vrai que je n’ai jamais utilisé VirtualBox en allocation dynamique, peut-être qu’il gère ça différemment que ses “concurrents”.

Bonjour

Pour en revenir à :

Je trouve que rien n’a été oublié,
et si le fichier image de la nouvelle machine virtuelle prend moins de place
et que la nouvelle machine virtuelle fonctionne…


J’essayais juste de trouver une autre méthode en espérant qu’elle puisse être plus simple à utiliser,
mais je n’ai pas trouvé de méthode équivalente à celle que j’utilise avec les images disques au format qcow2
applicable avec des images disques au format vdi en utilisant vboxmanage,
ou alors, c’est sans doute que ne connaissant pas bien VirtualBox, je n’ai pas su en trouver de plus simple.[quote=“sk4hrr, post:10, topic:75737”]
…Après il est vrai que je n’ai jamais utilisé VirtualBox en allocation dynamique, peut-être qu’il gère ça différemment que ses “concurrents”.
[/quote]
Un jour, il me faudra installer VirtualBox pour faire des essais,
je l’avais essayé, mais c’était il y a quelques années, juste pour tester par curiosité.

Alors en fait quand tu as un disque dynamique, il se remplit à chaque écriture, même si tu supprimes les fichiers par la suite. Par exemple si tu copies un fichier de 10 GB, la taille réelle du disque va augmenter de 10 GB, même si tu effaces ce fichier plus tard.

Merci, en fait vu que je n’ai pas trouvé de tutoriel complet et que ça m’a pris pas mal d’itérations, je voulais être sûr que tout est OK, desfois on a l’impression que ça marche jusqu’à ce qu’on se rende compte qu’on a oublié quelque chose… Pour l’instant tout fonctionne! Du coup si cela peut servir de guide pour d’autres, tant mieux!

On peut d’ailleurs appliquer la même recette à des machines physiques je pense.

salut
je ne sais pas s’il manque quelque chose mais tu viens de faire un tuto très utile.
Reviens nous dire si tu trouves des problèmes o udes améliorations.
merci

Merci, alors j’ai fait le test “en vrai” avec un disque dynamique de 400GB qui avait gonflé à 80GB, avec une taille réelle de fichiers de 30 GB environ. J’ai backupé le tout sur un nouveau disque dynamique de 100 GB avec la méthode décrite ci-dessus, ça marche niquel! Du coup je pense qu’on peut clore le sujet, si ce tutoriel peut servir à d’autres tant mieux!