Amazon EC2: Mevcut bir PV AMI'yi HVM'ye dönüştürme


82

Soru:

Yeni AWS EC2 sınıflarını (r3, i2) mevcut AMI ile tüm sistem kurulumunu yeniden oluşturmadan nasıl kullanmalıyım?

Yeni EC2 sınıfları yalnızca HVM tabanlı sanallaştırmayı destekliyor ancak bende yalnızca PVM AMI görüntüleri var.


3
Bunu CentOS ile denedim, ancak ins tep 10'da aşağıdaki hatayla sonuçlandı: / dev / xvdf'de karşılık gelen BIOS sürücüsü yok.
Tobias

@ROMANARMY'nin söylediğine ilaveten, cevabın uygun bir cevaba bölünmesi gerektiğini düşünüyorum . Ardından, sorunun yanıtlanmamış olarak görünmemesi için bunu kabul edebilirsiniz. Bkz stackoverflow.com/help/self-answer
Tim

@Tobias Zander, bunu CentOS ile çalışırken hiç yaptın mı?
dhempler

1
@ dennis.hempler Çok fazla zaman harcamadık ve yeni örnekler oluşturduk
Tobias

Yanıtlar:


77

Cevap:

  1. Herhangi bir sürüm, yeni bir Ubuntu HVM linux başlatın

  2. Mevcut AMI / PVM linux'umla bir Ubuntu / başlatın ve bunlara grub paketleri kurun: apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists

  3. PVM linux'u durdurun

  4. PVM linux'ta kök (/ dev / sda1) bölümünü ayırın

  5. PVM linux kök bölümünü HVM linux'u bir yerde çalıştırmaya ekleyin, örneğin: / dev / sdf

  6. HVM linux üzerinde: 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. chroot'tan çık: CTRL + D

  13. HVM Linux'u durdur

  14. detach / dev / sda1 orijinal kök VE ayır / dev / sdf PVM kökü

  15. PVM kökünü HVM linux'a / dev / sda1 olarak ekleyin

  16. HVM linux'u başlatın, işte!

  17. Çalışan HVM linux'tan yeni bir AMI görüntüsü oluşturun, HVM sanallaştırılacaktır.


Mükemmel bir şekilde çalıştı ... HVM örneğini PVM birimiyle tam olarak aynı kullanılabilirlik bölgesinde oluşturduğumda.
cloudurfin

2
Grub-install komutunu çalıştırırken şu uyarıyı alıyorum: warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged.. /usr/sbin/grub-bios-setup: error: will not proceed with blocklists.O zaman, her şey iyi görünüyor ama önyükleme yapmıyor veya bana neden önyüklemediği konusunda herhangi bir ipucu vermiyor.
Paulo Neves

3
Bu benim için mükemmel çalıştı, çok teşekkür ederim! Paulo Neves'in yukarıda bildirdiği korkunç grup uyarılarını aldım, ancak yeni örneğim yine de iyi bir şekilde başlatıldı.
GaryO

Bir AMI Linux PVM örneğim var ve onu yeni bir HVM AMI Linux örneğine taşımaya çalışıyorum. Çözümlerinizi uygulamaya çalıştım ancak 10. adıma takılı kaldım. Birisi Ubuntu yerine yeni bir AMI Linux örneği için bunun nasıl yapılacağını açıklayabilir mi? Teşekkürler!
tolgamorf

1
Daha yeni bir bulut sunucusu türü (C5 gibi) kullanılırken bulut sunucusuna erişilemez. Hiçbir yoktur xvd*sadece orada, bu örnekler üzerinde nvme*adlandırma kuralları. xvdDoğru ile değiştirmek nvmeişe yaramıyor. :(
Alex

2

@Divyenduz'un cevabı işe yarıyor ancak modern (yaklaşık 2019) AWS EC2 için biraz temizlik ve açıklama gerekiyor. Daha da önemlisi, modern örnek sınıfları, cihaz adını farklı şekilde çevirir.

İşte benim değiştirilmiş adımlarım.

Netlik sağlamak için düğümler:

  • HVM'ye yükseltmek istediğiniz orijinal PVM düğümü "PVM01" dir
  • PVM01'in kök diskini taşıyacağınız yeni HVM düğümü "HVM01" dir

DEVAM ETMEDEN ÖNCE: Orijinal Düğüm PVM01'i Yedekleyin

  1. Düğüm PVM01'e ön koşulları yükleyin

    • PVM01'e grup paketleri kurun

      apt-get install  grub-pc  grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
      
  2. PVM01 düğümünü durdur

    • / Dev / sda1 anlık görüntüsünü oluştur
    • VEYA tüm düğümün AMI'sini oluşturun
  3. PVM01'de orijinal kök birimin anlık görüntüsünü oluşturun ve bu anlık görüntüden yeni birim oluşturun
    • PVM01'de / dev / sda1'in ekini oluşturun
    • Bu çırpıda vol oluştur
    • Her kaynağı uygun şekilde etiketleyin
      • Etiket adı; Değer: pvm01: / dev / sda1: hvm'ye dönüştürme için anlık görüntü: 2019-07-01
      • Vb
  4. örnek oluştur: Yeni Ubuntu HVM örneği "HVM01". Herhangi bir örnek sınıfı çalışmalıdır; ancak cihaz adı farklı olabilir, aşağıdaki notlara bakın
    • Bionic Ubuntu 18.04 HVM AMI ID ami-0a313d6098716f372 ve örnek sınıfı C5.XLARGE kullandım
  5. PVM01 kök bölümünü (önceki adımdan yeni birim) yeni HVM01 / dev / sdf'ye ekleyin

    • NOT : C3 gibi eski örnek sınıfları, birim adını / dev / xvdf'ye çevirir.
    • NOT : C5 gibi daha yeni örnek sınıfları, birim adını / dev / nvme1'e çevirir
      • Daha yeni örnek sınıflarında, kök vol / dev / nvme0 - SIFIR olacaktır
      • Daha yeni örnek sınıflarında, eklenen ikincil cilt / dev / nvme1 - ONE olacaktır
    • Ekli birim aygıt adını not edin

    ssh PVM01 sudo fdisk -l

  6. HVM01'de:

    # 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. CTRL + D ile chroot'tan çıkın

  8. HVM01'i durdur
  9. Her iki birimi de ayırın
    • detach / dev / nvme0 PVM01 kökü
      • NOT: Bu, C3 örnek sınıfında / dev / sda1 olur
    • detach / dev / $ {DEVNAME} (yukarıdaki komut dosyasından DEVNAME)
  10. PVM01 kök birimini HVM01'e / dev / sda1 olarak ekleyin
    • Bir kez daha, / dev / sda1 adı konsolda; bu ad, örnek sınıfının ne kadar modern olduğuna bağlı olarak / dev / nvme0 veya / dev / xvda1'e çevrilecektir
  11. HVM01'i başlatın
  12. İSTEĞE BAĞLI: Şu anda çalışan HVM01'den yeni bir AMI görüntüsü oluşturun, HVM sanallaştırılacaktır.

Bu çözüm benim için çalıştı. Komuttan sonra DEVNAMEdeğişkeni yeniden oluşturmayı unutmayın chroot.
Justin Lee
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.