首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >亚马逊EC2:如何将现有的PV转换为HVM

亚马逊EC2:如何将现有的PV转换为HVM
EN

Stack Overflow用户
提问于 2014-06-20 15:26:16
回答 2查看 27.2K关注 0票数 83

问题:

如何在不重新创建整个系统设置的情况下对现有的AMI使用新的AWS EC2类(r3、i2)?

新的EC2类只支持基于HVM的虚拟化,但我只有PVM映像。

EN

回答 2

Stack Overflow用户

发布于 2014-10-09 11:02:38

答案:

  1. 启动Ubuntu HVM linux,任何版本,新的
  2. 使用我现有的AMI / PVM启动一个Ubuntu /,并在它们上安装grub包:apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
  3. 停止PVM linux
  4. 在PVM中分离根分区(/dev/sda1 1)
  5. 将PVM linux根分区附加到运行HVM linux的某处,例如: /dev/sdf
  6. 在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. 出口色度: CTRL+D
  13. 停止HVM Linux
  14. 分离/dev/sdf 1原始根和detach /dev/sdf PVM根
  15. 将PVM根目录附加到HVM作为/dev/sda1 1
  16. 启动HVM linux,哇!
  17. 从运行的HVM linux中创建一个新的AMI映像,它将被虚拟化。
票数 77
EN

Stack Overflow用户

发布于 2019-07-01 20:14:25

@divyenduz的答案是可行的,但对于现代(大约2019年)的AWS EC2,需要进行一些清理和澄清。重要的是,现代实例类以不同的方式转换设备名称。

这是我修改过的步骤。

为了清晰起见,节点是:

  • 要升级到HVM的原始PVM节点是"PVM01“。
  • 要将HVM 01的根磁盘迁移到"HVM01“的新HVM节点。

继续之前的:备份原始节点PVM01

  1. 在Node PVM01上安装先决条件

代码语言:javascript
代码运行次数:0
运行
复制
- install grub packages on PVM01

apt-获取安装grub-pc grub-pc-bin grub-旧式-EC2 grub-gfx负载-列表

  1. 停止节点PVM01

代码语言:javascript
代码运行次数:0
运行
复制
- Create snapshot of /dev/sda1
- OR create AMI of entire node

  1. 在PVM01上创建原始根卷的快照,并从此快照创建新卷
    • 在PVM01上创建/dev/sda1 1的快照
    • 从这个快照创建第一卷
    • 为每个资源加上相应的 标签
      • 标签:名称;值: pvm01:/dev/sda1:snapshot-for-conversion-to-hvm:2019-07-01

  1. 创建实例:新的Ubuntu实例"HVM01“。任何实例类都应该工作;但是,设备名称可能有所不同,请参见下面的注释
    • 我使用了仿生Ubuntu 18.04 HVM AMI ID ami-0a313d6098716f372和实例类C5.XLARGE

  1. 将PVM01根分区(从上一步开始的新卷)附加到新的HVM01 /dev/sdf

代码语言:javascript
代码运行次数:0
运行
复制
- **NOTE**: Older instance classes such as C3 will translate the volume name to /dev/xvdf
- **NOTE**: Newer instance classes such as C5 will translate the volume name to /dev/nvme1  
    - On newer instance classes, the **root vol** will be /dev/nvme0 -- ZERO
    - On newer instance classes, the **attached, secondary vol** will be /dev/nvme1 -- ONE

代码语言:javascript
代码运行次数:0
运行
复制
- Make a note of the attached volume device name

ssh PVM01 sudo fdisk -l

  1. 在HVM01上:用于xvdf,例如在C3.XLARGE DEVNAME=xvdf1 #上用于nvme例如,在C5.XLARGE上,DEVNAME=nvme1n1 mkdir -p /mnt/${DEVNAME} &&挂载/dev/${DEVNAME} /mnt/${DEVNAME} rsync -avzXA /-avzXA/ /mnt/$ {DEVNAME}/ -o bind /dev /mnt/${DEVNAME}/dev /mnt/${DEVNAME}/dev &&挂载-o bind /dev/pts /mnt/${DEVNAME}/dev/pts &&挂载-o bind /proc /mnt/${DEVNAME}/proc &&挂载-o bind /sys /mnt/${DEVNAME}/sys chroot /mnt/${DEVNAME} grub-安装-无软盘-重新检查-强制/dev/${DEVNAME}更新-污垢2
  2. 用CTRL+D输出色度
  3. 停止HVM01
  4. 分离两个卷
    • /dev/nvme0 0 PVM01根
      • 注意:这是C3实例类上的/dev/sda1 1

代码语言:javascript
代码运行次数:0
运行
复制
- detach /dev/${DEVNAME} (DEVNAME from above script)

  1. 将PVM01根卷附加到HVM01作为/dev/sda1 1
    • 同样,/dev/sda1 1名称在控制台中;根据实例类的现代化程度,这个名称将被转换为/dev/ name 0或/dev/xvda1 1。

  1. 启动HVM01
  2. 可选:从正在运行的HVM01创建一个新的AMI映像,它将被虚拟化。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24330721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档