Amazon EC2: cách chuyển đổi PV AMI hiện có thành HVM


82

Câu hỏi:

Làm cách nào để sử dụng các lớp AWS EC2 mới (r3, i2) với AMI hiện có của tôi mà không cần tạo lại toàn bộ thiết lập hệ thống?

Các lớp EC2 mới chỉ hỗ trợ ảo hóa dựa trên HVM nhưng tôi chỉ có hình ảnh PVM AMI.


3
Chỉ cần thử điều này với CentOS nhưng kết thúc trong tep 10 với lỗi sau: / dev / xvdf không có bất kỳ ổ đĩa BIOS tương ứng nào.
Tobias

Ngoài những gì @ROMANARMY đã nói, tôi nghĩ rằng câu trả lời nên được tách ra thành một câu trả lời thích hợp. Sau đó, bạn có thể chấp nhận nó để câu hỏi không hiển thị là chưa được trả lời. Xem stackoverflow.com/help/self-answer
Tim

@Tobias Zander bạn đã bao giờ làm việc này với CentOS chưa?
dhempler

1
@ dennis.hempler Chúng tôi không đầu tư rất nhiều thời gian và vừa tạo trường mới
Tobias

Câu trả lời:


77

Câu trả lời:

  1. Khởi động Linux HVM Ubuntu, bất kỳ phiên bản nào, mới

  2. Khởi động Ubuntu / với linux AMI / PVM hiện có của tôi và cài đặt các gói grub trên chúng: apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists

  3. Ngừng PVM linux

  4. Tách phân vùng root (/ dev / sda1) tại PVM linux

  5. Đính kèm phân vùng gốc PVM linux để chạy HVM linux ở đâu đó, ví dụ: / dev / sdf

  6. Trên HVM 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. thoát chroot: CTRL + D

  13. dừng HVM Linux

  14. tách / dev / sda1 gốc gốc VÀ tách / dev / sdf gốc PVM

  15. đính kèm gốc PVM vào HVM linux là / dev / sda1

  16. Khởi động HVM linux, voilà!

  17. Tạo một ảnh AMI mới từ HVM linux đang chạy, nó sẽ được ảo hóa HVM.


Hoạt động hoàn hảo ... khi tôi tạo phiên bản HVM trên cùng một vùng khả dụng giống như khối lượng PVM.
cloudurfin

2
Tôi nhận được cảnh báo sau khi chạy grub-install: 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.Sau đó, mọi thứ có vẻ tốt nhưng nó không khởi động hoặc cho tôi bất kỳ manh mối nào, tại sao nó không khởi động được.
Paulo Neves

3
Điều này làm việc hoàn hảo cho tôi, cảm ơn bạn rất nhiều! Tôi đã nhận được những cảnh báo grub đáng sợ mà Paulo Neves đã báo cáo ở trên, nhưng phiên bản mới của tôi vẫn khởi động tốt.
GaryO

Tôi có phiên bản AMI Linux PVM và tôi đang cố chuyển nó sang phiên bản HVM AMI Linux mới. Tôi đã cố gắng áp dụng các giải pháp của bạn nhưng tôi bị kẹt ở bước 10. Ai đó có thể vui lòng giải thích thêm về cách thực hiện việc này cho phiên bản AMI Linux mới thay vì Ubuntu không? Cảm ơn!
tolgamorf

1
Không thể truy cập phiên bản khi sử dụng loại phiên bản mới hơn (chẳng hạn như C5). Không có xvd*trên các trường hợp này, chỉ có nvme*quy ước đặt tên. Thay thế xvdbằng đúng nvmekhông hoạt động. :(
Alex

2

Câu trả lời từ @divyenduz hoạt động nhưng cần một số dọn dẹp và làm rõ cho AWS EC2 hiện đại (khoảng năm 2019). Quan trọng là, các lớp cá thể hiện đại dịch tên thiết bị theo cách khác.

Đây là các bước sửa đổi của tôi.

Để rõ ràng, các nút là:

  • Nút PVM ban đầu mà bạn muốn nâng cấp lên HVM là "PVM01"
  • Nút HVM mới mà bạn sẽ di chuyển đĩa gốc của PVM01 sang là "HVM01"

TRƯỚC KHI TIẾN HÀNH: Sao lưu Node gốc PVM01

  1. Cài đặt điều kiện tiên quyết trên Node PVM01

    • cài đặt gói grub trên PVM01

      apt-get install  grub-pc  grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
      
  2. Nút dừng PVM01

    • Tạo ảnh chụp nhanh / dev / sda1
    • HOẶC tạo AMI của toàn bộ nút
  3. Tạo ảnh chụp nhanh của khối lượng gốc ban đầu trên PVM01 và tạo khối lượng mới từ ảnh chụp nhanh này
    • Tạo snap của / dev / sda1 trên PVM01
    • Tạo vol từ snap này
    • Gắn nhãn từng tài nguyên cho phù hợp
      • Tag: Tên; Giá trị: pvm01: / dev / sda1: snapshot-for-convert-to-hvm: 2019-07-01
      • Vân vân
  4. create-instance: Phiên bản HVM Ubuntu mới "HVM01". Bất kỳ lớp cá thể nào cũng sẽ hoạt động; tuy nhiên, tên thiết bị có thể khác, hãy xem ghi chú, bên dưới
    • Tôi đã sử dụng HVM AMI ID ami-0a313d6098716f372 Bionic Ubuntu 18.04 và lớp phiên bản C5.XLARGE
  5. Đính kèm phân vùng gốc PVM01 (tập mới từ bước trước) vào HVM01 / dev / sdf mới

    • LƯU Ý : Các lớp phiên bản cũ hơn như C3 sẽ dịch tên ổ đĩa thành / dev / xvdf
    • LƯU Ý : Các lớp phiên bản mới hơn như C5 sẽ dịch tên ổ đĩa thành / dev / nvme1
      • Trên các lớp phiên bản mới hơn, tập gốc sẽ là / dev / nvme0 - ZERO
      • Trên các lớp phiên bản mới hơn , vol phụ, đính kèm sẽ là / dev / nvme1 - ONE
    • Ghi chú tên thiết bị âm lượng đính kèm

    ssh PVM01 sudo fdisk -l

  6. Trên 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. Thoát chroot bằng CTRL + D

  8. Ngừng HVM01
  9. Tách cả hai tập
    • detach / dev / nvme0 PVM01 root
      • LƯU Ý: Đây sẽ là / dev / sda1 trên lớp cá thể C3
    • detach / dev / $ {DEVNAME} (DEVNAME từ tập lệnh trên)
  10. đính kèm Khối lượng gốc PVM01 vào HVM01 dưới dạng / dev / sda1
    • Một lần nữa, tên / dev / sda1 có trong bảng điều khiển; tên này sẽ được dịch thành / dev / nvme0 hoặc / dev / xvda1 tùy thuộc vào mức độ hiện đại của lớp cá thể
  11. Khởi động HVM01
  12. TÙY CHỌN: Tạo hình ảnh AMI mới từ HVM01 hiện đang chạy, nó sẽ được ảo hóa HVM.

Giải pháp này đã làm việc cho tôi. Hãy nhớ tạo lại DEVNAMEbiến sau chrootlệnh.
Justin Lee,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.