web-dev-qa-db-fra.com

Amazon EC2: comment convertir une AMI PV existante en HVM

Question:

Comment utiliser les nouvelles classes AWS EC2 (r3, i2) avec mon AMI existante sans recréer la configuration système complète?

Les nouvelles classes EC2 ne prennent en charge que la virtualisation basée sur HVM, mais je n'ai que des images AMI PVM.

81
user3760692

Répondre:

  1. Démarrer un Linux Ubuntu HVM, toute version, nouvelle

  2. Démarrez Ubuntu/avec mon linux AMI/PVM existant et installez les paquets grub dessus: apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists

  3. Arrêtez PVM linux

  4. Détachez la partition racine (/ dev/sda1) sur PVM linux

  5. Associez une partition racine linux PVM à l'exécution de Linux HVM quelque part, par exemple:/dev/sdf

  6. Sur Linux Linux: mkdir -p /mnt/xvdf && mount /dev/xvdf /mnt/xvdf

  7. rsync -avzXA /boot/ /mnt/xvdf/boot/

  8. mount -o bind /dev /mnt/xvdf/dev && mount -o bind /dev/pts /mnt/xvdf/dev/pts && mount -o bind /proc /mnt/xvdf/proc && mount -o bind /sys /mnt/xvdf/sys

  9. chroot /mnt/xvdf

  10. grub-install --no-floppy --recheck --force /dev/xvdf

  11. update-grub2

  12. sortie chroot: CTRL + D

  13. arrêter HVM Linux

  14. détachez/dev/sda1 racine originale ET détachez/dev/sdf racine PVM

  15. attachez la racine PVM à linux HVM en tant que/dev/sda1

  16. Lancez Linux Linux, voilà!

  17. Créez une nouvelle image AMI à partir de Linux HVM en cours d’exécution, elle sera virtualisée par HVM.

76
divyenduz

La réponse de @divyenduz fonctionne, mais nécessite un nettoyage et une clarification pour AWS EC2 (vers 2019) moderne. Il est important de noter que les classes d'instance modernes traduisent différemment le nom du périphérique.

Voici mes étapes modifiées.

Pour plus de clarté, les nœuds sont:

  • Le noeud PVM d'origine que vous souhaitez mettre à niveau vers HVM est "PVM01"
  • Le nouveau noeud HVM vers lequel vous allez migrer le disque racine du PVM01 est "HVM01".

AVANT DE PROCÉDER: sauvegarder l’original Node PVM01

  1. Installez les conditions préalables sur Node PVM01

    • installer les paquets grub sur PVM01

      apt-get install  grub-pc  grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
      
  2. Arrêter le noeud PVM01

    • Créer un instantané de/dev/sda1
    • OU créer une AMI de tout le noeud
  3. Créer un instantané du volume racine d'origine sur PVM01 et créer un nouveau volume à partir de cet instantané
    • Créer un accrochage de/dev/sda1 sur PVM01
    • Créer un vol à partir de ce claquement
    • Marquez chaque ressource en conséquence
      • Tag: Nom; Valeur: pvm01:/dev/sda1: instantané pour une conversion en hvm: 2019-07-01
      • Etc
  4. create-instance: Nouvelle instance HVM Ubuntu "HVM01". Toute classe d'instance devrait fonctionner; Cependant, le nom de l'appareil peut être différent, voir les notes ci-dessous
    • J'ai utilisé Bionic Ubuntu 18.04 HVM AMI ID AMI-0a313d6098716f372 et la classe d'instance C5.XLARGE.
  5. Attachez la partition racine PVM01 (nouveau volume de l'étape précédente) au nouveau HVM01/dev/sdf

    • NOTE : Les anciennes classes d'instances telles que C3 traduiront le nom du volume en/dev/xvdf
    • NOTE : Les nouvelles classes d'instances telles que C5 traduiront le nom du volume en /dev/nvme1
      • Sur les classes d'instance les plus récentes, le root vol sera/dev/nvme0 - ZERO
      • Sur les nouvelles classes d'instances, le attaché, secondaire sera/dev/nvme1 - ONE
    • Notez le nom du périphérique de volume attaché.

    ssh PVM01 Sudo fdisk -l

  6. Sur HVM01:

    # For xvdf, e.g. on C3.XLARGE
    DEVNAME=xvdf1
    # For nvme, e.g. on C5.XLARGE
    DEVNAME=nvme1n1
    mkdir -p /mnt/${DEVNAME} && mount /dev/${DEVNAME} /mnt/${DEVNAME}
    rsync -avzXA /boot/ /mnt/${DEVNAME}/boot/
    mount -o bind /dev /mnt/${DEVNAME}/dev && mount -o bind /dev/pts /mnt/${DEVNAME}/dev/pts && mount -o bind /proc /mnt/${DEVNAME}/proc && mount -o bind /sys /mnt/${DEVNAME}/sys
    chroot /mnt/${DEVNAME}
    grub-install --no-floppy --recheck --force /dev/${DEVNAME}
    update-grub2
    
  7. Quitter chroot avec CTRL + D

  8. Arrêtez HVM01
  9. Détachez les deux volumes
    • détachez la racine/dev/nvme0 PVM01
      • NOTE: Ce serait/dev/sda1 sur une classe d'instance C3
    • détachez/dev/$ {DEVNAME} (DEVNAME du script ci-dessus)
  10. attachez le volume racine PVM01 à HVM01 en tant que /dev/sda1
    • Encore une fois, le nom/dev/sda1 est dans la console; ce nom sera traduit en/dev/nvme0 ou/dev/xvda1 en fonction de la modernité de la classe d'instance.
  11. Démarrer HVM01
  12. FACULTATIF: créez une nouvelle image AMI à partir du HVM01, actuellement en cours d’exécution, qui sera virtualisée HVM.
1
JDS