Comment déplacer ma partition racine LVM 250 Go vers un nouveau disque dur de 120 Go?

18

J'ai la situation suivante:

Mon installation actuelle d'Ubuntu (12.04) fonctionne à partir d'un disque dur externe (250 Go) parce que j'étais trop paresseux pour acheter un nouveau disque dur interne. Maintenant, j'ai un nouveau interne (120 Go) et je veux tout déplacer vers l'intérieur. Installer Ubuntu nouveau est hors de discussion car il est péronalisé.

Heureusement (je l'espère), la partition racine est partitionnée avec LVM, j'espère donc pouvoir déplacer la partition vers le plus petit disque dur interne.

Est-ce possible? Et où trouver de l'aide?

EDIT: Cette question est déjà assez ancienne et pourrait être obsolète. J'ai ajouté la version d'Ubuntu qui était utilisée à l'époque.

NotANormalNerd
la source
question connexe - les réponses ci-dessus ne sont pas assez claires ...
MeSo2
les deux réponses ci-dessus ne sont pas assez claires pour moi. Donc, a commencé un nouveau post.
MeSo2

Réponses:

39

Comme vous vous en doutez, c'est extrêmement élégant à faire en utilisant LVM.

Réduisez l'installation existante pour qu'elle s'adapte au plus petit disque.

Installez physiquement le nouveau disque dur, formatez-le et pvcreateutilisez-le vgextendpour l'ajouter au même vg que votre partition racine

Utilisez pvmovepour déplacer de manière transparente toutes les données de l'ancienne partition

Utilisez vgreducepour supprimer votre disque dur externe de votre vg. Débranchez l'ancien disque / dev / sdOLD.

Dans l'exemple ci-dessous:

  • /dev/sdOLD représente l'ancienne partition à remplacer
  • /dev/sdNEW signifie que la nouvelle partition prendra sa place.
  • vgX représente le groupe de volumes

Exemple: bien sûr, vous devez être sûr à 100% que vous utilisez les bons appareils. De plus, il est essentiel de supprimer les sauvegardes complètes et à jour du système.

pvcreate /dev/sdNEW
vgextend vgX /dev/sdNEW
pvmove /dev/sdOLD
vgreduce vgX /dev/sdOLD

Utilisez update-grubet grub-installpour rendre votre nouveau disque racine amorçable

Terminé.

Floyd
la source
Cela aurait été bien si vous aviez fourni des exemples concrets.
isaaclw
12
Ah, c'est bien de voter contre un message accepté valide contenant des informations utiles. Je n'ai intentionnellement PAS donné d'exemple concret, car le danger est que quelqu'un copie-colle sans réfléchir et détruise ses données. Si vous faites quoi que ce soit avec lvm, vous devriez être en mesure de vous repérer avec les pointeurs que je donne.
Floyd
2
A également travaillé sur Cento7. Les étapes fournies ici m'ont suffi pour apprendre un peu et google un peu. Spot-on
terary
centos: utilisez grub2-mkconfig -o "$ (readlink -e /etc/grub2.cfg)" ... d'ici
terary
21

Tout d'abord, si vous avez utilisé l'intégralité du disque de 250 Go pour votre installation actuelle, vous devrez le réduire pour l'adapter au disque de 120 Go. Vous ne pouvez réduire un système de fichiers ext4 que lorsqu'il est démonté, vous devrez donc démarrer à partir d'un système live Ubuntu (CD ou USB) ou d'un système live de maintenance spécialisé tel que GParted live . Vous pouvez utiliser resize2fsou GParted pour redimensionner le système de fichiers existant.

Une fois que vous avez réduit le ou les systèmes de fichiers de votre installation existante pour qu'ils tiennent sur le nouveau disque, vous pouvez effectuer le reste du déplacement avec le système de fichiers monté si vous le souhaitez. Si le système de fichiers existant tient sur le nouveau disque, vous pouvez effectuer le transfert sans démonter quoi que ce soit ni redémarrer.

Dans la description suivante, je vais vous montrer comment passer du volume /dev/sdb1physique au volume physique /dev/sda1, avec un groupe de volumes existant appelé oldvg. Assurez-vous d'ajuster les lettres du disque et les numéros de partition en fonction de votre système.

Pour effectuer un transfert en direct:

  1. Partitionner le nouveau disque, en utilisant l'outil de partitionnement de votre choix ( cfdisk, fdisk, parted, ...). Voir, par exemple, comment ajouter un disque dur supplémentaire?
  2. Créez un volume physique sur le nouveau disque: pvcreate /dev/sda1
  3. Ajoutez ce volume physique au groupe de volumes existant contenant le ou les volumes logiques que vous souhaitez déplacer: vgextend oldvg /dev/sda1
  4. Déplacez les volumes logiques d'un volume physique vers un autre: pvmove /dev/sdb1 /dev/sda1
  5. Divisez le groupe de volumes existant en deux: vgsplit oldvg newvg /dev/sda1

Une autre méthode consiste à faire du ou des volumes logiques existants un volume miroir avec lvconvert --mirror, à configurer un miroir sur le nouveau disque, puis à diviser les miroirs avec lvconvert --splitmirrors. De cette façon, vous vous retrouvez avec deux copies de vos données, et après la séparation, chaque copie mène sa propre vie.

Après avoir fait la copie, vous devrez rendre le nouveau disque amorçable. Montez le système de fichiers pour cela. En supposant qu'il soit monté /mnt, exécutez ces commandes en tant que root:

chroot /mnt
# if the name of the volume group has changed, edit /etc/fstab
update-grub
grub-install /dev/sda

Vous pouvez également utiliser Clonezilla . Il s'agit d'un puissant outil de manipulation et de clonage de disque, et je pense qu'il couvre votre situation, mais je n'en ai aucune expérience.

Gilles 'SO- arrête d'être méchant'
la source
1
Comment une réponse qui dit essentiellement pvadd, pvmove, pvremoveest acceptée par-dessus CELA me dépasse ...
ish
Beaucoup trop compliqué et pas ce dont il a besoin
Floyd