我有一个支持 EBS 的 Amazon EC2实例。我想在这个实例上更改根设备。你能告诉我最好的解决办法吗?
我只找到关于更改块设备的几个属性的文档,但它们似乎并不包括将其设置为根设备。
是的,非常简单:
/dev/sda1
当然,这需要假设您的替代 EBS 卷是可引导的——它必须包含可引导的 OS 映像。
我没有足够的代表来添加评论到选定的答案,但我想指出的是,对我来说,/dev/sda1不工作(不附加作为根) ,但使用 /dev/xvda工作(附加作为根)。该实例是使用 HVM 的较新的 t2.micro 实例之一。
/dev/xvda
为了详细说明 Diomidis Spinellis 在接受答案的评论线程中的评论,检查您试图切换为新根设备的设备的文件系统标签非常重要。在对自己的服务器迁移进行故障排除时,我必须在实例启动之前执行以下操作:
使用 e2label命令更改为新的根设备创建的 ext2/ext3/ext4文件系统上的标签。
e2label
首先,检查当前根设备的文件系统标签。
$ sudo e2label /dev/xvda1 cloudimg-rootfs
将新设备设置为具有相同的文件系统标签。
$ sudo e2label /dev/xvdg 'cloudimg-rootfs'
In my case, the label was cloudimg-rootfs. Sometimes it will simply be /.
cloudimg-rootfs
/
了解 e2label 是如何工作的非常重要; 在您的机器上检查 man e2label或访问 http://linux.die.net/man/8/e2label以获得更多信息。
man e2label
这就是奥斯建议的解决方案 可以在停止根卷后将其从原始实例中分离出来。根卷附加在/dev/sda1上。分离后,请将其连接到新实例。卷附加之后,您可能必须从操作系统挂载它。挂载之后,您应该会看到其中的数据。
After you've done adding the new key, you can detach it and attach to the original instance at /dev/sda1.
我建议在进行任何更改之前创建根卷的快照。
在尝试任何解决方案之前,只需在不重要的实例或现场实例中进行尝试
当您的卷被挂载时,它将获得一个带有数字的后缀,例如: 当 /dev/sda被挂载时,它将根据您所创建的分区以 /dev/sda1, /dev/sda2的形式挂载。 当我们安装 root 设备本身时,它假设设备已经安装,因此我们需要给出 /dev/sda1来安装卷作为 root 设备。 注意: 不应该有任何根卷附加。
/dev/sda
/dev/sda1, /dev/sda2
Follow these steps: 1)转到卷,从 Action 中选择附加卷。 2)选择你的实例 3)如果要以 root 用户身份安装,请将设备名称命名为 /dev/sda1 4)开始你的实例。
If you are wanting to do this via CloudFormation you will need to do the following:
部署你的堆栈。这将重新创建您的实例,因此请确保您使用的是 Elastic IP 地址或具有 DNS 访问权限。
之所以必须这样做,是因为 CF 不允许您调整 EC2 BlockDeviceMappings 上的根卷大小,或者调整根卷的 SnapshoId。
上周 AWS 宣布了一种新的方法,可以用更少的停机时间和 Without Stop and Start EC2实例替换 Root 卷。请看下面的链接。 替换根卷