我可以更改Amazon EC2实例的根EBS设备吗?


107

我有一个EBS支持的Amazon EC2实例。我想更改此实例上的根设备。您能建议最好的方法吗?

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

Answers:


191

是的,这很简单:

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

前提是您的备用EBS卷当然是可引导的-它必须包含可引导的OS映像。


50
关键是“扎根”- /dev/sda1的确如此!
Aseem Kishore 2012年

6
谢谢,太好了。一个陷阱是,DNS / IP可以在发生这种情况时发生更改,因此请确保更新任何DNS /弹性IP等。我花了一段时间试图弄清楚为什么我不能再使用它了,这就是原因。
mrooney

13
/dev/sda没有/dev/sda1为我工作,也为我工作/dev/xvda
bhspencer 2015年

8
伙计,那太可怕了。/dev/sda-没用。/dev/sda1dev/sdf-正常工作,但实例无法启动。/dev/xvda工作了。
亚历克斯·福图纳

13
您应使用的名称是此命令的结果:aws ec2 describe-instances --instance-id i-XXXXXXX | grep -i rootDeviceName在我的情况下/dev/xvda
Neoecos,2016年

42

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


我认为在VPC中的机器本身可以使用/ dev / xv *格式的设备名称,因此您无需使用/ dev / sd *格式的名称。这是一个观察-我不是专家可以自信地说这句话。
Mayank Jaiswal

我有一个与该描述匹配的实例,该实例在分离并重新连接根设备后无法启动(“找不到根设备”)。我想尝试这个答案,但是如果我不附加它,/dev/sda1那么AWS会拒绝启动我的实例。我需要配置其他一些设置以使用备用根设备名称吗?
杰克·奥康纳

Linux的/ dev / sda1 / Windows的/ dev / xvda
Luis

whoopse,确保识别的分区,/ dev / sda上1/dev/sda是无效的,但是/dev/sda1是好的。
ThorSummoner

16

要在已接受的答案的注释线程中详细说明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以获取更多信息。


1
这是如此重要,我不明白为什么这个答案不那么常见。
ays0110

3

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

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

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

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


1

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

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

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

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


0

挂载卷时,它将获得带有数字的后缀,例如:/dev/sda挂载时,其挂载方式/dev/sda1, /dev/sda2取决于您创建的分区。当我们安装根设备本身时,它假定该设备已经被安装,因此我们需要给出/dev/sda1作为根设备安装卷的条件。注意:不应附加任何根卷。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.