我有一个EBS支持的Amazon EC2实例。我想在这个实例上更改根设备。你能告诉我最好的解决方法吗?
我只找到有关更改块设备的多个属性的文档,但它们似乎不包括将其设置为根设备。提前致谢。
答案 0 :(得分:163)
是的,这很简单:
/dev/sda1
这预先假定您的备用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进行此操作,则需要执行以下操作:
部署堆栈。这将重新创建您的实例,因此请确保您使用的是弹性IP地址或具有DNS访问权限。
您必须执行此解决方法的原因是,CF不允许您调整EC2 BlockDeviceMappings上的根卷大小,也不能调整根卷的SnapshotId。
答案 6 :(得分:0)
/dev/sda1