我启动了EC2竞价型实例,并且未选中EBS根卷的“终止时删除”选项。我选择了Ubuntu 14.04 64位HVM AMI。

在某个时候,该实例由于最高价格而终止,而EBS数量仍按预期滞后。现在,最终,当重新启动竞价型实例时,它将创建一个全新的EBS根卷。旧的EBS根卷仍然在那里。

实际上,为了测试目的,我通过手动终止竞价型实例并启动一个新实例来模拟上述事件,但是我认为实际使用的结果是相同的。

因此,现在如何才能将旧的EBS卷重新安装为当前的根卷?

我尝试了http://linux.die.net/man/8/pivot_root的示例,并进行了一些修改以解决明显的错误:

# manually attach old EBS to /dev/sdf in the AWS console, then do:
sudo su -
mkdir /new-root
mkdir /new-root/old-root
mount /dev/xvdf1 /new-root
cd /new-root
pivot_root . old-root
exec chroot . sh <dev/console >dev/console 2>&1
umount /old-root

终端卡在exec chroot命令上,该实例将不接受新的ssh连接。

我真的很想让这个工作正常进行,因为它提供了一种便捷的机制,可以节省按需开发,测试和面向批处理的EC2实例的按需价格,而无需重新架构整个应用程序部署,也无需承担任何费用。预留实例。

我想念什么?

最佳答案

答案是将pivot_root调用放置在初始(临时)EBS根卷上的/sbin/init内部。

以下是一些脚本,这些脚本可以自动启动新竞价型实例并修改第一个(临时)EBS卷上的/sbin/init以从第二个(持久)EBS卷进行链式加载系统:

https://github.com/atramos/ec2-spotter

关于linux - AWS EC2 : How to remount previous EBS volume using pivot_root?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32108767/

10-11 10:21