2011-06-16 440 views
79

我有一个EBS支持的Amazon EC2实例。我想在此实例上更改根设备。你可以请建议最好的方式去做这件事?我可以更改我的amazon EC2实例的根EBS设备吗?

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

回答

143

是的,它的死很容易:

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

这假设您的备用EBS卷是可启动的,当然 - 它必须包含可启动的OS映像。

+1

这个答案刚刚救了我的一天! – 2011-09-08 00:46:09

+0

如果我分离根EBS卷,则该实例会终止! – 2012-08-10 03:56:19

+0

AWS API(控制台使用的)不会让您从正在运行的实例中分离出根EBS卷 - 但我不确定Force Detach是否遵守相同的规则 - 您是否错误地执行了此操作?或者,您的实例可能不是EBS支持的,在这种情况下,此问题/答案不适用 - 如果您尝试从非EBS支持的VM分离启动卷,我不知道会发生什么情况。 – 2012-08-10 08:58:46

34

我没有足够的代表给选定的答案添加评论,但我想指出,对我而言,/dev/sda1没有工作(没有作为根连接),但使用/dev/xvda工作(附加为根)。该实例是使用HVM的最新t2.micro实例之一。

+0

我认为VPC中的机器,格式为/ dev/xv *的设备名称本身可以工作,您不需要以格式/ dev/sd *提供名称。这是一个观察 - 我不是专家,有信心说这个。 – 2015-04-10 10:45:05

+0

我有一个匹配此描述的实例,在分离并重新连接根设备后无法引导(“无法找到根设备”)。我想尝试这个答案,但是如果我不把它作为'/ dev/sda1'附加,那么AWS拒绝启动我的实例。我需要配置其他一些设置才能使用备用根设备名称吗? – 2015-10-02 18:43:34

+0

/dev/sda1 for Linux/dev/xvda for Windows – Luis 2015-10-13 23:48:54

12

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

+0

这非常重要,我不明白为什么这个答案不是更常见的。 – ays0110 2016-08-26 07:40:53

相关问题