我可以更改我的亚马逊EC2实例的根EBS设备吗?

时间:2011-06-16 19:46:25

标签: amazon-ec2 amazon-web-services

我有一个EBS支持的Amazon EC2实例。我想在这个实例上更改根设备。你能告诉我最好的解决方法吗?

我只找到有关更改块设备的多个属性的文档,但它们似乎不包括将其设置为根设备。提前致谢。

7 个答案:

答案 0 :(得分:163)

是的,这很简单:

  1. 停止实例。
  2. 分离根EBS卷。
  3. 将备用EBS卷作为根目录附加: /dev/sda1
  4. 启动实例。
  5. 这预先假定您的备用EBS卷是可引导的 - 当然 - 它必须包含可引导的操作系统映像。

答案 1 :(得分:39)

我没有足够的代表为所选答案添加评论,但我想指出,对我来说,/dev/sda1无法正常工作(没有以root身份附加),而是使用/dev/xvda工作(以root身份附加)。该实例是使用HVM的较新的t2.micro之一。

答案 2 :(得分:14)

要在接受的答案的评论主题中详细说明Diomidis Spinellis的评论,检查您尝试切换的设备的文件系统标签是非常重要的。新的根设备。在对我自己的服务器迁移进行故障排除时,我必须在我的实例启动之前执行以下操作:

使用e2label命令更改您为新根设备创建的ext2 / ext3 / ext4文件系统上的标签。

首先,检查当前根设备的文件系统标签。

$ sudo e2label /dev/xvda1
cloudimg-rootfs

将新设备设置为具有相同的文件系统标签。

$ sudo e2label /dev/xvdg 'cloudimg-rootfs'

就我而言,标签是cloudimg-rootfs。有时它只是/

了解e2label的工作原理非常重要;检查您计算机上的man e2label或访问http://linux.die.net/man/8/e2label以获取更多信息。

答案 3 :(得分:2)

这是aws建议的解决方案 停止后,您可以从原始实例中分离根卷。根卷附加在/ dev / sda1。分离后,请将其附加到新实例。连接卷后,您可能必须从操作系统安装它。安装完成后,您应该看到其中的数据。

添加新密钥后,您可以将其分离并附加到/ dev / sda1上的原始实例。

我建议在进行任何更改之前创建根卷的快照。

在尝试任何解决方案之前,只需尝试不重要的实例或定点实例

答案 4 :(得分:0)

在挂载卷时,它将获得带有数字的后缀,例如:在挂载/dev/sda时,根据您所创建的分区,其挂载为/dev/sda1, /dev/sda2。 当我们安装根设备本身时,它假定该设备已经被安装,因此我们需要提供/dev/sda1来将卷安装为根设备。 注意:不应附加任何根卷。

请按照下列步骤操作: 1)转到您的卷,从“操作”中选择“附加卷”。 2)选择您的实例 3)要以root用户身份挂载,请将设备名称命名为/dev/sda1 4)启动您的实例。

答案 5 :(得分:0)

如果您想通过CloudFormation进行此操作,则需要执行以下操作:

  1. 从现有根卷创建快照(通过控制台或CLI)
  2. 从此快照中创建新的AMI-在此处增加根卷的大小,请确保选择正确的虚拟化时间(半虚拟或HVM)。
  3. 在您的AWS :: EC2 :: Instance资源上,将ImageId参数设置为刚创建的新AMI

部署堆栈。这将重新创建您的实例,因此请确保您使用的是弹性IP地址或具有DNS访问权限。

您必须执行此解决方法的原因是,CF不允许您调整EC2 BlockDeviceMappings上的根卷大小,也不能调整根卷的SnapshotId。

答案 6 :(得分:0)

  1. 停止 EC2 实例。
  2. 在导航面板上,点击“Elastic Block Store”下的“”。
  3. 选择现有卷,点击“操作”和“分离卷”。完成确认。
  4. 选择新卷,点击“操作”>>“附加卷
    • 附加卷对话框中,
    • 实例:输入实例 ID
    • 设备:输入/dev/sda1