Aller au contenu principal

Restaurer une machine Linux entière

Ce que fait cette restauration​

L'image d'une machine Linux porte les fichiers de chaque système de fichiers local et un plan des disques. Le média de restauration refait donc la machine couche par couche, puis il remet les fichiers.

Le média refait, dans cet ordre :

  1. la table GPT de chaque disque, avec les identifiants du disque source ;
  2. les tableaux md (RAID logiciel), avec leurs UUID ;
  3. les volumes LUKS, avec une nouvelle phrase secrète ;
  4. les groupes de volumes LVM, avec leurs métadonnées ;
  5. les systèmes de fichiers et les zones d'échange, avec leurs UUID et leurs étiquettes.

Il monte ensuite ces systèmes de fichiers, restaure les fichiers, refait l'initramfs dans le système restauré, et écrit l'entrée de démarrage UEFI quand vous le demandez.

Les UUID ne changent pas. fstab, crypttab, mdadm.conf et le chargeur de démarrage retrouvent donc leurs volumes sans modification.

Prérequis​

  • Une image complète réussie de la machine Linux source. Voir Image complète d'une machine Linux.
  • Un média de restauration préparé, appairé et approuvé dans le portail. Voir Préparer le média de restauration.
  • Autant de disques fixes dans la machine cible que de disques dans l'image.
  • Chaque disque cible avec la même taille de secteur logique que son disque source.
  • Chaque disque cible assez grand :
    • un disque utilisé entier, sans table de partitions, demande tous les secteurs du disque source ;
    • un disque partitionné demande la place de ses partitions et de sa table GPT de secours. Un disque de remplacement de la même taille nominale, un peu plus petit, convient donc.
  • Tous les disques cibles peuvent être effacés.
remarque

Sur une machine Linux, aucun raccourci ne choisit la machine à l'avance. Ouvrez Restauration bare metal dans la barre du haut, tapez le code d'appairage, puis choisissez la machine après le code.

La fiche de la machine n'affiche pas le bouton Restaurer toute la machine. Le bouton de la ligne d'une sauvegarde d'image, dans l'onglet Activité, s'affiche, mais la page de restauration écrit alors « La machine du lien est introuvable, ou elle n'a pas d'image. Choisissez la machine après le code. » N'utilisez pas ce bouton pour une machine Linux.

Restaurer une machine à un seul disque​

  1. Préparez le média et démarrez la machine cible dessus. Voir Préparer le média de restauration.
  2. Dans le portail, ouvrez Restauration bare metal et tapez le code d'appairage.
  3. Choisissez la machine source Linux et son image.
  4. Choisissez le disque cible.
  5. Choisissez le mode Remplacer la machine source.
  6. Cochez la case, tapez votre code de vérification, puis cliquez Effacer le disque et restaurer.
  7. Sur l'écran du média, lisez le plan, puis tapez le nom du disque cible.
  8. Attendez la fin, retirez la clé USB, puis redémarrez la machine.

Le disque choisi dans le portail remplace le disque source qui porte la partition système EFI.

Restaurer une machine à plusieurs disques​

Le portail choisit un seul disque cible : celui du disque système. Le média demande les autres.

  1. Suivez les étapes 1 à 6 ci-dessus.

  2. Lisez la ligne du média :

    The backup has 3 disks. The portal chose sda for the system disk.
  3. Pour chaque autre disque source, le média écrit sa taille et la liste des disques encore libres :

    Source disk 1 (nvme1n1, 1.8 TiB). Disks of this machine:
    sdb 1.8 TiB WDC WD20EZBX serial WD-WX12A3456789
    sdc 3.6 TiB WDC WD40EZAZ serial WD-WX22B4567890
    Type the name of its target disk, or press Ctrl+C to stop:

    Le nom entre parenthèses est celui du disque sur la machine source. Les noms de la liste sont ceux de la machine cible.

  4. Tapez le nom d'un disque, puis Entrée.

  5. Répétez pour chaque disque source restant.

Le média refuse un nom et redemande dans ces trois cas :

Message du médiaCause
« … is not a fixed disk of this machine. »Le nom est inconnu, ou le disque est amovible.
« Disk … is already a target disk. »Ce disque est déjà pris par un autre disque source.
« Disk … is too small (…). »Le disque est plus petit que son disque source.

Le média accepte trois essais par disque. Après trois noms faux, il s'arrête et le portail écrit « Quelqu'un a arrêté la restauration sur l'écran du média. »

Donner une nouvelle phrase secrète LUKS​

Les en-têtes LUKS et les clés ne sont pas dans la sauvegarde. Le média refait donc les volumes chiffrés avec une phrase secrète que vous choisissez.

  1. Lisez les lignes du média :

    The backup has encrypted volumes (LUKS). Their keys are not in the backup.
    Choose a new passphrase. It opens the restored disks at each start.
    New passphrase:
  2. Tapez la nouvelle phrase secrète, puis Entrée. L'écran n'affiche rien pendant la saisie.

  3. Tapez-la une deuxième fois, puis Entrée.

Le média accepte trois essais. Il redemande quand la phrase est vide, ou quand les deux saisies sont différentes.

Cette phrase secrète ouvre tous les volumes chiffrés de la machine restaurée. Notez-la avant de continuer.

Le média écrit ensuite cette remarque : « The encrypted volumes have the new passphrase. A key file in /etc/crypttab no longer opens them: change crypttab after the first start. » Si la machine source ouvrait un volume avec un fichier de clé, corrigez /etc/crypttab après le premier démarrage.

Confirmer le plan sur l'écran du média​

Le média affiche le plan complet, puis demande la seconde confirmation :

Source system: Debian GNU/Linux 12 (bookworm)
Target disks:
sda 476.9 GiB Samsung SSD 860 EVO 500GB (source disk 0)
sdb 1.8 TiB WDC WD20EZBX (source disk 1)
Filesystems:
/boot/efi vfat 12.4 MiB used
/ ext4 18.6 GiB used
/srv xfs 412.1 GiB used
Encrypted volumes: 1, with the new passphrase
Data to write: 431.1 GiB

ALL DATA ON DISKS sda, sdb WILL BE ERASED.
Type the disk names (sda sdb) to start the restore, or press Ctrl+C to stop:

Tapez les noms de tous les disques cibles, dans l'ordre affiché, séparés par une espace. Le média écrit ensuite « Restore started. Do not turn off the machine. »

attention

Le portail n'affiche pas d'avancement chiffré pendant une restauration Linux. Il garde le message Confirmez sur l'écran du média jusqu'à la fin. Suivez la restauration sur l'écran du média.

À la fin, le média écrit ses remarques, puis :

Restore finished. The disk is written and synced.
Remove the USB key, then press Enter to restart the machine.

Le portail écrit « La restauration est terminée » et « Retirez la clé USB et redémarrez la machine. »

L'initramfs et le démarrage​

L'initramfs​

Le média refait l'initramfs dans le système restauré, pour que la machine démarre avec un autre matériel. Il cherche l'outil de la distribution dans le système restauré, dans cet ordre : update-initramfs, puis dracut.

Quand aucun outil n'est présent, le média écrit « No initramfs tool was found in the restored system: the initramfs is the one of the source machine. » La machine démarre alors avec l'initramfs de la machine source. Sur un matériel différent, elle peut ne pas trouver ses disques.

L'entrée de démarrage UEFI​

Les fichiers du chargeur de démarrage sont restaurés sur la partition système EFI, comme sur la machine source. GRUB retrouve ses systèmes de fichiers par leur UUID, qui n'a pas changé.

L'entrée de démarrage du firmware, elle, est propre à la machine. Le média ne l'écrit pas par défaut : la console du média lance la commande sans option.

CasCe qui se passe
Même machineLe firmware garde son entrée de démarrage. La machine redémarre sans réglage.
Autre machineLe firmware n'a pas d'entrée. Choisissez le disque dans son menu de démarrage, ou écrivez l'entrée.

Pour écrire l'entrée, lancez la commande à la main avec l'option --efi-boot-entry. Voir la référence de la commande. Cette option demande un démarrage du média en mode UEFI. Le média prend alors le chargeur de la distribution sur la partition système EFI : d'abord shim pour Secure Boot, puis GRUB. L'étiquette de l'entrée est le nom du système source.

Avec l'option --efi-boot-entry, quand la partition système EFI ne porte que le chargeur de secours, le média n'écrit pas d'entrée. Il écrit la remarque « No UEFI boot entry was written: the firmware starts \EFI\BOOT\BOOTX64.EFI. »

Dans tous les cas, la partition système EFI doit porter au moins un chargeur. Sans aucun chargeur, la restauration échoue avec la cause boot_repair_failed.

Restaurer en mode clone​

Le mode Cloner sert quand la machine source fonctionne encore.

  1. À l'étape 3. Où de l'approbation, choisissez le mode Cloner.
  2. Approuvez, puis confirmez sur l'écran du média.
  3. Après le premier démarrage, enrôlez la machine restaurée avec un nouveau jeton d'enrôlement. Voir Jeton d'enrôlement.

Le média retire le fichier d'identité de l'agent /etc/baastide/agent.conf du système restauré. Il écrit la remarque « Clone mode: the BaaStide agent identity was removed from the restored system. Enroll the restored machine again. »

attention

N'utilisez pas le mode Remplacer la machine source quand la machine source fonctionne encore. Deux machines prendraient la même identité d'agent.

Après la restauration​

Le portail affiche le bloc Après la restauration avec les vérifications à faire :

PointCe qu'il faut faire
RéseauVérifiez le nom de la carte réseau. Sur un autre matériel, le nom change.
LUKSTapez la nouvelle phrase secrète au démarrage.
ServicesVérifiez que les services démarrent.

Pour l'agent :

  • mode Remplacer la machine source : l'agent démarre sur la machine restaurée et se connecte au portail. La prochaine sauvegarde a lieu comme d'habitude ;
  • mode Cloner : la machine restaurée n'a pas d'identité d'agent. Enrôlez-la de nouveau.

Quand la machine source utilisait SELinux, le média écrit « SELinux labels are made again at the first start: the system restarts once by itself. » Laissez ce premier redémarrage se faire.

Corrigez /etc/crypttab quand un volume chiffré s'ouvrait avec un fichier de clé.

Quand la restauration échoue​

Le portail écrit « La restauration a échoué », la cause et l'étape suivante.

CauseCe qu'elle veut dire sur une machine Linux
disk_not_foundUn disque cible n'a pas été trouvé, ou le chemin n'est pas un disque.
disk_too_smallUn disque cible est trop petit pour son disque source.
layout_unsupportedLe plan des disques de l'image n'est pas restaurable, ou une taille de secteur ne correspond pas.
repo_read_failedLe média n'a pas pu lire les fichiers dans le dépôt.
write_failedLe média n'a pas pu écrire sur un disque, refaire une couche, monter un système de fichiers, ou le démonter à la fin.
boot_repair_failedLe média n'a pas pu refaire l'initramfs, ou écrire l'entrée de démarrage UEFI.
aborted_on_mediaLa restauration a été arrêtée sur l'écran du média.
otherUne erreur sans code. Lisez le message sur l'écran du média. Il manque peut-être un outil sur le média.

Les trois premières causes arrivent avant la première écriture : les disques ne sont pas changés. Pour les autres, le portail ajoute « Le disque cible peut être incomplet. »

Une restauration interrompue laisse des disques incomplets. Redémarrez la machine sur la clé USB et restaurez de nouveau.

Limites et précautions​

  • Le média ne restaure que les dispositions de disques que la sauvegarde accepte. Voir Dispositions de disques acceptées.
  • La taille de secteur logique de chaque disque cible doit être la même que celle de son disque source.
  • Les disques cibles doivent rester libres. Le média n'assemble et n'active jamais un tableau RAID ni un volume LVM tout seul. La console refuse de démarrer la restauration quand un tableau RAID ou un volume LVM est déjà actif.
  • Le média n'accepte pas un disque amovible comme disque cible d'un disque non système.
  • Les en-têtes LUKS et les clés ne sont pas dans la sauvegarde. La nouvelle phrase secrète est la seule qui ouvre les volumes restaurés. Notez-la.
  • Le portail ne montre pas d'avancement chiffré pendant une restauration Linux.
  • Le média n'écrit pas d'entrée de démarrage UEFI par défaut.
  • La réussite de la commande ne prouve pas que la machine démarre. Vérifiez le démarrage de la machine restaurée.
  • Les fichiers que la sauvegarde laisse de côté ne reviennent pas : /tmp, /var/tmp, les fichiers d'échange et les partages réseau montés. Le système refait ce qu'il lui faut au démarrage.
  • Un fichier que le média ne restaure pas fait échouer la restauration, avec la cause write_failed. La machine restaurée ne doit pas être incomplète.
  • Le média garde sa clé d'appairage en mémoire seule. Quand le processus redémarre, il faut un nouveau code d'appairage.

Référence​