繁体   English   中英

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

[英]Can I change the root EBS device of my amazon EC2 instance?

我有一个 EBS 支持的 Amazon EC2 实例。 我想更改此实例上的根设备。 能请教go这方面的最佳途径吗?

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

是的,这很容易:

  1. 停止实例。
  2. 分离根 EBS 卷。
  3. 将备用 EBS 卷附加为根: /dev/sda1
  4. 启动实例。

当然,这前提是您的备用 EBS 卷是可引导的——它必须包含可引导的操作系统映像。

我没有足够的代表来为所选答案添加评论,但我确实想指出, /dev/sda1不起作用(未以 root 身份附加),但使用/dev/xvda起作用(作为根附加)。 该实例是使用 HVM 的较新的 t2.micro 实例之一。

要详细说明 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了解更多信息。

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

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

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

在尝试任何解决方案之前,只需在不重要的实例或现场实例中进行尝试

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

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

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

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

当你的卷被挂载时,它会得到一个带有数字的后缀,例如:当/dev/sda被挂载时,它被挂载为/dev/sda1, /dev/sda2这取决于你所做的分区。 当我们安装根设备本身时,它假定设备已经安装,因此我们需要提供/dev/sda1以将卷安装为根设备。 注意:不应附加任何根卷。

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

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

上周 AWS 宣布了一种新方法,可以用更少的停机时间和无需停止和启动 EC2 实例来替换根卷。 请看下面的链接。 EC2 替换根卷

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM