我有一台在 AWS Micro 实例上运行的服务器。由于它默认具有 EBS 存储,因此在终止时不会有丢失数据的风险。我可以跳过微实例的 AMI 创建吗?
答案1
您无需创建 AMI,除非您想要启动与您正在运行的实例完全相同的其他实例,例如启动提供相同内容的 Web 服务器集群。在这种情况下,您可以通过创建新实例、分离为其创建的 EBS 卷并附加要恢复的卷来还原服务器。
您说得对,EBS 存储意味着存储设备将在实例终止后继续存在。
答案2
当 EBS 存储是根卷(即 EBS 支持的微型实例)时,默认情况下不会持久保存 - 您必须明确将其设置为如此。如果您启动许多 AMI,当它们终止时,根 EBS 卷将被删除。(使用 ec2-modify-instance-attributes 设置 DeleteOnTermination 标志或使用 AWS 控制台)
仅当您手动创建 EBS 卷然后将其附加到实例时,EBS 存储才会默认保留。
至于从微型实例迁移到小型实例,您不需要 AMI(尽管您可以使用)。有两种常见方法。
- 使用 ec2-modify-instance-attributes 更改实例类型(您需要停止实例,运行命令,然后启动实例)
- 或者停止(而不是终止)(微型)实例,分离 EBS 卷,启动一个新的(小型),停止新的(小型)实例,分离现有的 EBS 并将旧的 EBS 附加到新的(小型)实例,启动小型实例。
答案3
如前所述,默认情况下,EBS 支持的实例的根 EBS 卷设置为在终止时删除。如果要避免这种情况,您必须使用:
ec2-modify-instance-attribute --region <region> device=vol-id:false <instanceid>
举例来说,首先检查你的实例的块设备的状态:
$ ec2-describe-instance-attribute --region us-west-1 i-365ed96f -b
BLOCKDEVICE /dev/sda1 vol-0aa8ac24 2012-11-04T22:46:15.000Z true
最后一列是“deleteOnTermination”,当前设置为 true(默认值)。您可以使用以下命令将其更改为 false:
$ ec2-modify-instance-attribute --region us-west-1 -b /dev/sda1=vol-0aa8ac24:false i-365ed96f
BLOCKDEVICE /dev/sda1 vol-0aa8ac24 false