Memperbarui
AWS telah mengaktifkan fitur ini di API EC2. Ini tersedia sebagai --virtualization-type
opsi untuk aws ec2 register-image
di awscli berbasis Boto baru.
Jawaban asli
Iya nih! Sayangnya, tidak ada cara langsung untuk melakukannya. Juga, beberapa instance PV mungkin memerlukan modifikasi kernel dan bootloader.
- Buat volume dari AMI PV yang ada. Jika itu adalah AMI PV Anda sendiri, Anda dapat membuat volume dari foto itu. Jika ini adalah AMI pihak ke-3, Anda harus meluncurkan instance dan mengambil snapshot.
- Luncurkan instance HVM dengan AMI apa pun.
- Hentikan instance HVM itu.
- Lepaskan volume root dari instance itu.
- Lampirkan volume PV sebagai volume root (/ dev / sda1 atau / dev / sda jika dipartisi) ke instance HVM.
- Jalankan
ec2-create-image
pada contoh HVM.
- Luncurkan instance lain dengan AMI HVM baru Anda.
Jika itu tidak berhasil, maka sebelum langkah 5, Anda harus melampirkan volume itu ke instance yang berjalan, mengatur chroot, dan menginstal kernel dan bootloader untuk distribusi Anda. Anda mungkin juga ingin menghapus log dan cache cloud-init apa pun.
aws ec2 register-image
dengan flag --virtualization-type pada snapshot dari gambar PV. Lihataws ec2 register-image help
detailnya.aws ec2 register-image
. Kemudian saya meluncurkan instance HVM baru dari gambar itu. Namun sistem tidak mau boot.Dalam kasus saya, saya harus melakukan konversi secara manual karena contoh yang saya buat menggunakan
aws ec2 register-image
tidak bisa boot. Solusi saya didasarkan pada posting ini di AWS EC2 Forum .Persiapan
SSH ke mesin PV Anda yang ingin Anda migrasikan dan terapkan semua pembaruan, lalu logout.
Buka Konsol AWS dan luncurkan instance HVM baru dengan memilih AMI basis yang sama tempat sistem PV dibuat (dalam kasus saya, Amazon AMI Linux 64-bit).
SSH ke instance baru ini dan terapkan semua pembaruan, lalu logout.
Pergi ke Konsol AWS dan hentikan instance PV. Ambil snapshot dari perangkat root dan buat volume baru (
SOURCE VOLUME
) dari snapshot ini.Hentikan instance HVM. Ambil snapshot dari perangkat root pada instance baru dan buat volume baru (
TARGET VOLUME
) dari snapshot ini.Menggunakan Konsol AWS:
SOURCE VOLUME
ke instance baru sebagai/dev/xvdf
.TARGET VOLUME
ke instance baru sebagai/dev/xvdg
.Proses Konversi
SSH ke instance baru dan dapatkan akses root:
Pasang drive sumber dan target.
Cadangkan
/lib/modules/*
(Jika kernel dari PV ami berbeda dari mesin HVM baru. Modul ini digunakan oleh beberapa layanan AWS.)Hapus semuanya kecuali
/boot
pada volume target:Hapus
/boot
pada volume sumber:Salin data volume sumber ke volume target dengan mempertahankan semua atribut:
Edit
/mnt/target/etc/fstab
untuk/
partisi, sehingga referensiTARGET VOLUME
saat dipasang di lokasi terakhirnya pada langkah (8). Baik menggunakan label atau hanya sesuatu:Kemudian kembalikan
/lib/modules/
yang didukung di Langkah 3. (Jika kernel dari PV ami berbeda dari mesin HVM yang baru.)Hentikan sistem dan lepaskan semua volume menggunakan konsol AWS. Lampirkan
TARGET VOLUME
pada instance baru sebagai/dev/xvda
.Mulai instance HVM Anda. Sekarang seharusnya duplikat yang tepat dari sistem PV Anda. Jika semuanya terlihat OK, Anda sekarang dapat menghapus instance PV Anda dan juga
SOURCE VOLUME
.sumber
rm -f /boot
dancp -a /mnt/source/boot /mnt/target
?TLDR:
Langkah-langkah terperinci:
Menjawab lebih lanjut berdasarkan tanggapan Jeff Strunk untuk menyederhanakan langkah-langkah dan memberikan sedikit lebih banyak detail pada gambar register EC2:
Buat Instance menggunakan PV Image. Buat / perbarui setiap perubahan yang Anda inginkan.
Buat Gambar dari contoh di atas.
Temukan id snapshot yang digunakan oleh AMI di atas di bawah EC2> Elastic Block Store> Snapshot di EC2 Console.
atau jika Anda memiliki pengaturan alat api ec2:
ec2-jelaskan-gambar ami-id_of_above_created_ami
dan temukan id snapshot untuk ami
.. Asumsi untuk langkah lebih lanjut: Kunci EC2 dan alat api Anda diatur dan siap digunakan:
Daftarkan AMM HVM baru menggunakan snapshot di atas: contoh:
dimana
Untuk informasi lebih lanjut:
sumber
Anda dapat melakukan ini dari dalam antarmuka web AWS. Arahkan ke snapshot , klik snapshot yang diinginkan yang ingin Anda konversi menjadi hvm dan klik pada tindakan lalu buat gambar . Pada menu dropdown di create image wizard pilih HVM .
sumber
Setelah mencoba semua saran di sini, tidak ada yang bekerja untuk saya, saya menemukan entri blog yang bagus tentang hal itu, di https://www.opswat.com/blog/aws-2015-why-you-need-switch- pv-hvm .
Elemen (detail) dari prosedur ini adalah:
Instal
grub
pada instance PV untuk dimigrasikan (instance source).Buat snapshot pencegahan tentang volume root pada instance sumber (volume sumber, SV).
Buat instance HVM sementara yang akan memigrasi volume.
Buat volume tujuan (DV), dan lampirkan ini dan SV ke instance sementara.
DV harus setidaknya sebesar SV.
Pasang SV sebagai
/dev/{sd,xvd}f
, dan DV sebagai/dev/{sd,xvd}g
.Partisi DV:
parted /dev/xvdg --script 'mklabel msdos mkpart primary 1M -1s print quit'
partprobe /dev/xvdg
udevadm settle
Ubah ukuran ke ukuran minimum SV FS, dan gunakan
dd
gambar itu ke DV.Bersihkan FS volume sumber:
e2fsck -f /dev/xvdf
Minimalkan hal yang sama:
resize2fs -M /dev/xvdf
Amati output dari resize2fs (mis.
Resizing the file system on /dev/xvdf to 269020 (4k) blocks
) Dan catat untuk langkah selanjutnya.Gandakan SV ke DV:
dd if=/dev/xvdf of=/dev/xvdg1 bs=<block size from previous step, here 4k> count=<use block count from last step, here 269020>
Perluas FS pada partisi baru:
resize2fs /dev/xvdg1
Instal
grub
ke dalam blok boot DVBuat sementara file perangkat di DV:
mount /dev/xvdg1 /mnt; cp -a /dev/xvdg /dev/xvdg1 /mnt/dev/
Instal file grub:
rm -f /mnt/boot/grub/*stage*
cp /mnt/usr/*/grub/*/*stage* /mnt/boot/grub/
rm -f /mnt/boot/grub/device.map
cat << ARNIE | chroot /mnt grub --batch
device (hd0) /dev/xvdg
root (hd0,0)
setup (hd0)
ARNIE
Setelah melakukan beberapa perubahan kecil pada volume tujuan, ambil volume, dan buat AMI darinya.
Rapikan file perangkat sementara:
rm -f /mnt/dev/xvdg /mnt/dev/xvdg1
Di
/mnt/boot/grub/grub.conf
, ubahroot (hd0)
menjadiroot (hd0,0)
, tambahkan (atau ganticonsole=*
)console=ttyS0
ke baris kernel, dan jika perlu gantiroot=*
denganroot=LABEL=/
di dalam baris kernelDalam
/mnt/etc/fstab
, pastikan bahwa baris FS root berisi referensi berlabel, misalnyaLABEL=/ / ext4 defaults,noatime 1 1
Beri label FS root baru dengan
e2label /dev/xvdg1 /
Lepas DV dari instance sementara, lepaskan SV dan DV dari instance sementara.
Jepret DV, dan dari jepret itu buat gambar AMI.
Luncurkan instance HVM dari HMI itu. Itu adalah contoh migrasi Anda.
sumber