题:
如何在现有AMI上使用新的AWS EC2类(r3,i2),而不重新创建整个系统设置?
新的EC2类仅支持基于HVM的虚拟化,但我只有PVM AMI映像。
如何在现有AMI上使用新的AWS EC2类(r3,i2),而不重新创建整个系统设置?
新的EC2类仅支持基于HVM的虚拟化,但我只有PVM AMI映像。
Answers:
启动新版本的Ubuntu HVM linux
使用现有的AMI / PVM linux启动Ubuntu /,并在其上安装grub软件包: apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
停止PVM Linux
在PVM Linux上分离根(/ dev / sda1)分区
将PVM linux根分区附加到某处正在运行的HVM linux,例如:/ dev / sdf
在HVM linux上: mkdir -p /mnt/xvdf && mount /dev/xvdf /mnt/xvdf
rsync -avzXA /boot/ /mnt/xvdf/boot/
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
chroot /mnt/xvdf
grub-install --no-floppy --recheck --force /dev/xvdf
update-grub2
退出chroot:CTRL + D
停止HVM Linux
分离/ dev / sda1原始根目录并分离/ dev / sdf PVM根目录
以/ dev / sda1将PVM根目录附加到HVM linux
启动HVM linux,瞧!
从正在运行的HVM linux创建一个新的AMI映像,它将被HVM虚拟化。
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.
然后,一切看起来不错,但是它无法启动,或者给我任何提示,为什么它无法启动。
xvd*
在这些实例上没有,只有nvme*
命名约定。xvd
用正确的代替nvme
不起作用。:(
@divyenduz的答案有效,但需要对现代(大约2019年)AWS EC2进行一些清理和澄清。重要的是,现代实例类对设备名称的翻译方式有所不同。
这是我修改的步骤。
为了清楚起见,节点为:
在继续之前:备份原始节点PVM01
在节点PVM01上安装必备组件
在PVM01上安装grub软件包
apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
停止节点PVM01
将PVM01根分区(上一步中的新卷)附加到新的HVM01 / dev / sdf
ssh PVM01须藤fdisk -l
在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
使用CTRL + D退出chroot
DEVNAME
在chroot
命令后重新创建变量。