我在 Amazon Elastic Cloud Compute (EC2) 上使用的是 Amazon Linux 半虚拟化 (PV) Amazon 系统映像 (AMI),如何才能迁移到 Amazon Linux 硬件虚拟机 (HVM) AMI?

我们强烈建议您迁移到 HVM 实例,以便提高安全性、获得新功能并提升性能。有关 PV 和 HVM AMI 的更多信息,请参阅 Linux AMI 虚拟化类型

就安全性而言,操作系统的保护不足以解决 CVE-2017-5754 中 PV 实例的进程到进程问题,具体如 AWS 安全公告 AWS-2018-013 中所述。虽然 AWS 管理程序会对 PV 实例进行保护,以防出现任何实例到实例问题,但我们强烈建议关注进程孤立 (例如,处理不可信数据、运行不可信代码或托管不可信用户) 的 PV 实例用户迁移到 HVM 实例类型,以便更长期地保障安全。

要将数据从 PV 实例迁移到 HVM 实例,请按照以下步骤之一进行操作:

  • (强烈建议) 分别将数据和应用程序从 PV 实例复制和移动到新的 HVM 实例。
  • 将 PV 实例转换为 HVM 实例。

(强烈建议) 分别将数据和应用程序从 PV 实例复制和移动到新的 HVM 实例

1.    从 HVM AMI 启动新实例

2.    按照以下方法之一将数据从 PV 实例复制到新的 HVM 实例:

  • 运行 rsync、scp 或 drbd 等 Linux 实用程序,以在这两种实例之间安全复制数据。
  • 将 PV 实例数据复制到 EBS 卷并分离该卷。然后,连接该卷到新的 HVM 实例。

3.    在 HVM AMI 上安装并配置应用程序。

将 PV 实例转换为 HVM 实例

如果将数据从 PV 实例复制到新的 HVM 实例并不能满足您的需求,可以按照以下步骤将 PV 实例转换为 HVM 实例:

注意:以下操作步骤是一般指南。请确保根据您的具体配置需要对这些步骤进行修改。

1.    停止 PV 实例
注意:我们建议您在测试 PV 实例上执行此步骤。要创建测试实例,请先为您的 PV 实例创建映像。之后,从映像启动新的 PV 实例。

2.    为 PV 实例的根卷创建快照

3.    将 PV 实例的根卷快照还原为新 EBS 卷。该卷必须在 PV 实例所在的可用区中还原。

4.    从 Amazon Linux HVM AMI 启动新实例。该实例必须在 PV 实例所在的可用区中启动。

5.    选择从 PV 实例的根快照还原的 EBS 卷。然后,以 /dev/xvdf 的形式连接该卷到新的 HVM 实例。

6.    创新新的空白 EBS 卷,其大小与从 PV 实例的根快照还原的卷相同。将新的空白 EBS 卷以 /dev/xvdg 的形式连接到 HVM 实例。
注意:执行此步骤后,新的 HVM 实例将包含三个卷。

7.    使用 SSH 连接到新的 HVM 实例
注意:您必须具有根用户权限才能继续执行后续步骤。

8.    运行以下命令以显示卷:

# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 8G 0 disk
xvdg 202:96 0 8G 0 disk

注意:xvda 是 HVM 实例的根卷。xvdf 是从 PV 实例的根快照还原的卷。xvdg 是新的空白卷。

9.    运行以下命令以在 xvdg (新卷) 上创建新分区。

# parted /dev/xvdg --script 'mklabel msdos mkpart primary 1M -1s print quit'
# partprobe /dev/xvdg
# udevadm settle

注意:这些命令将创建 xvdg1

10.   运行以下命令以检查 xvdf (PV 根卷) 的大小并将原始文件系统的大小降到最小。要想加快该过程,请勿在下一步中复制可用磁盘空间。

# e2fsck -f /dev/xvdf ; resize2fs -M /dev/xvdf

11.   运行以下命令以将 xvdf (PV 根卷) 复制到 xvdg1 (新卷):

# dd if=/dev/xvdf of=/dev/xvdg1 bs=$(blockdev --getbsz /dev/xvdf) conv=sparse count=$(dumpe2fs /dev/xvdf | grep "Block count:" | cut -d : -f2 | tr -d "\\ ")

12.   运行以下命令以将 xvdg1 (新卷) 的大小调整到其最大大小:

# e2fsck -f /dev/xvdg1 && resize2fs /dev/xvdg1

13.   运行以下命令以准备好将 xvdg1 (新卷) 转换为 HVM 实例的根卷:

# mount /dev/xvdg1 /mnt/ && mount -o bind /dev/ /mnt/dev && mount -o bind /sys /mnt/sys && mount -o bind /proc /mnt/proc

14.   运行以下命令以将 xvdg1 (新卷) 转换为 HVM 实例的根卷:

# chroot /mnt/

15.   运行以下命令以在新根卷上重新安装 GRUB 引导程序:

# yum reinstall grub -y
# rm -f /boot/grub/*stage* /boot/grub/device.map
# grub-install /dev/xvdg

16.   “grub-install”命令返回以下消息。此消息在预料之中 - 将其忽略并继续执行下一步。

Probing devices to guess BIOS drives. This may take a long time.
Unknown partition table signature
/dev/xvdg does not have any corresponding BIOS drive.

17.   运行以下命令以更新 GRUB 引导程序配置。

# cat <<EOF | grub --batch
device (hd0) /dev/xvdg
root (hd0,0)
setup (hd0)
EOF
# sed -i 's/root\ (hd0)/root (hd0,0)/g' /etc/grub.conf
# sed -i 's/root\ (hd0)/root (hd0,0)/g' /boot/grub/menu.lst
# sed -i 's/console=hvc0/console=ttyS0/g' /etc/grub.conf
# sed -i 's/console=hvc0/console=ttyS0/g' /boot/grub/menu.lst

18.   运行以下命令以退出“chroot”函数:

# exit

19.   运行以下命令以关闭实例:

# halt

20.   将您之前连接到 HVM 实例的三个卷分离出来

21.   选择您之前以 /dev/xvdg 形式连接的卷 (新卷)。以 /dev/xvda 形式重新连接此卷到 HVM 实例。

22.   启动 HVM 实例。

新的 HVM 实例是源 PV 实例的精确副本。确认 HVM 实例正常工作后,可以终止源 PV 实例。您也可以删除以下两个临时卷:HVM 实例的原始根卷以及从 PV 实例的根快照还原的卷。


此页面对您有帮助吗? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2018 年 2 月 19 日