Transférer son système Debian chiffré sur un stockage plus grand (HDD / SSD)

Le jour arrive où pousser les murs ne suffit plus. S'annonce alors le chantier du remplacement du stockage de son ordi (SSD ou disque dur) par quelque-chose de plus spacieux.

On a alors deux approches possibles :

  1. Soit mettre en place physiquement le nouveau disque dans l'ordi, puis installer le système (exemple : Debian) de zéro, avant de recopier les fichiers nécessaires depuis l'ancien stockage.
  2. Soit cloner l'ancien stockage à l'identique sur le nouveau pour retrouver ses petits directement. C'est cette deuxième approche qui nous intéresse.

Honnêtement, la procédure (s'agissant d'une installation chiffrée) comporte de nombreuses étapes et peut faire faire un peu peur, d'autant que je ne connais pas de bonne ressource francophone sur le sujet. D'où ce tuto 🙂.

On considère les conditions suivantes :

NB: on utilisera le terme « stockage » de manière générique pour désigner soit un disque dur (HDD) soit un SSD.

🧰 Préparation :

Niveau matériel, il faut :

  • un ordi (fixe ou portable) : celui dont on remplace le stockage
  • si ordi portable : un boîtier SATA USB externe (Il est possible de démonter un disque dur externe existant pour cet usage, sinon compter 10/20€).
  • une clef USB ≥ 4 Gio

Prévoir un peu de temps, compter une ou deux heures pour les manips et surtout une tranche de plusieurs heures (ex: une nuit) pour la recopie des données pendant laquelle l'ordi sera inutilisable et les données inaccessibles.

📝 Procédure

Voici un aperçu des étapes :

  1. Créer une clef USB bootable
  2. Installer le nouveau stockage physiquement dans l'ordi
  3. Démarrer sur la clef USB bootable
  4. Recopier l'ancien stockage sur le nouveau
  5. Premier test
  6. Utiliser tout l'espace de stockage

C'est parti ? Alors quand tu entendras la petite musique, tourne la page…

🎵

Étape 0 − Sauvegardes

Fais des sauvegardes de tes données importantes. Normalement cette procédure ne détruit pas de données, mais comme les ordis ça ne marche jamais… 😁

Étape 1 - Préparer une clef USB bootable

Depuis le système habituel

Une clef bootable nous permettra d'accéder aux deux stockages (ancien et nouveau) « de l'extérieur », afin de pouvoir en faire une copie « inerte » plutôt que de copier un système en cours de fonctionnement.

Créons une clef bootable :

⚠ La clef USB utilisée sera totalement effacée

  1. Télécharger un fichier .iso de Ubuntu Desktop (ou tout autre système live)
  2. Ouvrir l'application Disques (de l'environnement Gnome)
  3. Brancher la clef, elle devrait apparaître dans la colonne de gauche de l'interface
  4. Cliquer dessus puis choisir dans le menu «Restaurer l'image disque» et choisir le fichier .iso précédemment téléchargé (l'avertissement sur la taille de l'image peut être ignoré). L'entrée «_Restaurer l'image disque_» est dans le menu burger en haut à droite
  5. Valider… et se préparer une boisson plus ou moins sophistiquée selon la vélocité du matériel.

Étape 2 − Brancher physiquement le nouveau stockage dans l'ordi

Ordinateur éteint :

  1. Débrancher l'ancien stockage de l'intérieur de l'ordi et le remplacer par le nouveau stockage. Ça peut demander d'accéder plus ou moins aux entrailles de l'ordi. Astuce : si c'est un ordi portable, chercher « replace hard drive » avec le modèle de l'ordi, tu tomberas probablement sur des vidéos explicatives adaptées.

  2. Brancher l'ancien stockage à l'intérieur du boîtier USB

Étape 3 - Démarrer sur la clef bootable

Ordinateur éteint :

  1. Brancher la clef bootable à l'ordi
  2. Démarrer l'ordi sur la clef : soit ça démarre tout seul, soit tu peux t'aider de ce guide.
  3. Se laisser guider et choisir « Essayer ubuntu » : on ne souhaite pas l'installer.

On se retrouve face à un environnement de bureau aux couleurs d'Ubuntu qui va nous servir à effectuer nos manipulations sur nos deux stockages.

Étape 4 − Recopier l'ancien stockage sur le nouveau

Depuis la clef bootable :

Nous jonglons entre plusieurs stockages : la clef USB, l'ancien stockage et le nouveau stockage. Chacun de ces stockages est identifié par un chemin du type /dev/sdx ; le dernier caractère (ici x) variant selon le stockage concerné. Essayons de ne pas nous mélanger les pinceaux 😏…

  1. Débrancher le boîtier USB contenant l'ancien stockage (si il est branché)
  2. Ouvrir l'application Disques, puis :
    • Prendre en note le chemin du nouveau stockage, en se fiant à la marque, modèle, et capacité. Si l'identifiant affiché se termine par un nombre (ex : /dev/sdx1), omettre ce nombre final2
    • Brancher le boîtier USB contenant l'ancien stockage à l'ordi
    • Noter également le chemin de l'ancien stockage, lui aussi de la forme /dev/sdx (facile, c'est celui qui vient d'apparaître dans la liste)
  3. Fermer Disques puis ouvrir l'application Terminal
  4. On va utiliser une commande nommée dd pour cloner l'ancien stockage sur le nouveau, voici la commande à saisir dans le terminal :

    $ sudo dd if=/dev/sdx of=/dev/sdy
    
    • if signifie input file (fichier d'entrée) : on remplace /dev/sdx par le chemin de l'ancien stockage
    • of signifie output file (fichier de sortie) : on remplace /dev/sdy par le chemin du nouveau stockage

Cette fois-ci, c'est un peu plus long, disons le temps d'une sieste… Voire une nuit complète si le matériel est un peu âgé ou le stockage spacieux.

Étape 5 - Premier test

À ce stade on peut faire un premier test pour s'assurer que la copie s'est bien déroulée.

  1. Éteindre l'ordi,
  2. Débrancher la clef,
  3. Débrancher l'ancien stockage (nous n'en avons plus besoin, mais le temps de finir, ça peut nous faire une sauvegarde en cas de pépin)
  4. Allumer l'ordi.

Tu devrais retrouver face à ton système habituel. Problème ? Notre nouvel espace de stockage est bloqué à la même taille que l'ancien stockage.

Ça fonctionne ? 🥳 Pour poursuivre, démarre à nouveau sur la clef USB.

🎵

Étape 6 - Utiliser tout l'espace de stockage

Nous allons « étendre » le stockage pour qu'il occupe tout l'espace disponible du nouveau stockage. S'agissant d'un stockage chiffré, la procédure possède de nombreuses étapes, mais avec un peu de rigueur on va s'en sortir.

Nous allons redimensionner successivement :

  • la partition primaire
  • la partition logique
  • le volume chiffré LUKS de la partition logique
  • le volume group LVM
  • le logical volume LVM
  • le système de fichiers ext4

Ouf !

S'assurer :

  • qu'on est bien démarrés sur la clef bootable
  • que l'ancien stockage est débranché
  • ne pas déchiffrer le disque si c'est demandé

🎵

Redimensionner partition primaire, partition logique et volume chiffré :

NB : il n'y a pas toujours une partition logique, auquel cas ne s'occuper que de la partition primaire.

  1. Ouvrir l'application gparted, Vue arborescente des partitions, /dev/sda2 contient /dev/sda5

    • Identifier notre nouveau stockage (ici /dev/sda), sa partition primaire (celle qui contient l'autre, ici /dev/sda2) et la partition logique (ici /dev/sda5). La première partition (ici /dev/sda1) qui est plus petite ne nous intéresse pas3.

    • Redimensionner la partition primaire (clic droitRedimensionner/Déplacer) au maximum de taille possible

    • Redimensionner la partition logique au maximum de taille possible
    • gparted s'occupe de redimensionner le volume chiffré au passage sans que nous n'ayons à nous en occuper (merci gégé)
    • Appliquer les modifications, puis quitter gparted
    • Déchiffrer le volume chiffré (clic droitOuvrir le chiffrement), puis l'inspecter pour repérer le chemin qui doit commencer par /dev/mapper (ici /dev/mapper/sda5_crypt) ; le noter.

Redimensionner Le Physical-Volume et Volume-Group LVM

  1. Dans l'application Terminal,

    • Redimensionner le physical volume LVM à l'aide de la commande suivante (remplacer /dev/mapper/XXX par la valeur précédemment notée) :

      $ sudo pvresize /dev/mapper/XXX
      
    • Déverrouiller le volume-group4 :

      $ sudo pvchange -x y /dev/mapper/XXX
      
    • Lister les volume-groups LVM ; repérer et noter le chemin du volume-group qui contient « vg-root » (c'est lui que l'on veut redimensionner) dans la liste fournie par la commande suivante

      $ find /dev/mapper
      /dev/mapper/
      /dev/mapper/mint--vg-swap_1
      /dev/mapper/mint--vg-root
      /dev/mapper/sda5_crypt
      

    (Par ex, ici je prends en note /dev/mapper/mint--vg-root)

    • Redimensionner le volume-group pour qu'il utilise tout l'espace :
      $ sudo lvresize -l +100%FREE /dev/XXXX-vg-root
      

Redimensionner le système de fichiers :

  1. Faire d'abord une vérification de la partition (patientez le temps d'un SMS, lacunaire ou enflammé, selon ton matériel)

    $ sudo e2fsck -f -y /dev/mapper/XXXX--vg-rootmint--vg-root
    
  2. Redimensionner le système de fichiers ext4 (dernière étape !)

    $ sudo resize2fs -p /dev/mapper/XXXX--vg-root
    

C'est fini, redémarrer, retirer la clef… 🤞 🤞…

C'est fini 🥳 🥳 !

👏 Conclusion

Ouf ! Je trouve ça dommage que ça soit si complexe pour un cas qui me semble assez commun et qui se place dans un cadre où l'on a fait des choix d'installation assez standards.

J'espère que ce tuto aura pu aider quelques personnes (en plus de mon moi du futur) . N'hésitez pas à me faire part de vos commentaires/relectures astuces. Je suis notamment preneur de méthodes pour simplifier cette procédure (si il y a des outils/astuces à côté desquelles je serait passé).

Je regrette un peu de ne pas rentrer plus dans les détails pour aider la personne lectrice à mieux comprendre ce qu'elle fait. Si vous avez des ressources qui vulgarisent efficacement le sandwich LVM/luks/ext4, je suis preneur :-)

🔗 Références


  1. pour les détails techniques cette option crée un /boot non chiffré (partition primaire) puis une partition logique contenant un volume chiffré avec LUKS. Sur ce volume chiffré est créé un physical volume LVM qui est réparti entre deux volume-groups (VG) LVM, abritant respectivement le système racine (/) formaté en ext4 et une partition d'échange (swap). 

  2. il s'agit du numéro de partition qui ne nous intéresse pas puisqu'on veut copier le disque dans son intégralité. 

  3. C'est le /boot, qui contient uniquement le noyau et les fichiers non chiffrés nécessaires au début du démarrage de l'ordi, ça n'est pas ici que l'on veut rajouter de l'espace. 

  4. il l'est parfois déjà, mais c'est sans danger de le faire quand même) 

  5. La procédure a été testée avec Debian Buster et Linux Mint 19, mais est probablement la même avec Ubuntu, d'autres version de Debian… etc… etc