当您因为文件损坏无法通过SSH或VNC方式启动ECS实例时,您可以卸载该实例的系统盘,并作为数据盘挂载到其他ECS实例进行修复。
背景信息
本文中A实例指需要卸载系统盘的异常ECS实例,B实例指其他可以正常远程登录的ECS实例。
步骤一:创建快照
建议您为A实例的系统盘创建快照,提高容错能力。创建快照的前提条件和背景信息,请参见创建一个云盘快照。
登录ECS管理控制台。
在左侧导航栏,选择实例与镜像 > 实例。
在顶部菜单栏左上角处,选择地域。
在实例页面,找到A实例,单击A实例的实例ID。
在实例详情页面,单击云盘页签。
找到待创建快照的云盘,在操作列单击创建快照。
在创建云盘快照页面,根据界面参数设置快照参数。参数说明,请参见创建一个云盘快照。
在实例详情页面,单击快照页签,查看快照任务。
当快照任务进度为100%时,表示快照创建成功。
步骤二:卸载A实例的系统盘
快照创建完成后,请停止A实例,然后卸载A实例的系统盘,操作步骤如下:
卸载系统盘的前提条件和背景信息请参见卸载或挂载系统盘。
停止A实例。
具体操作,请参见停止实例。
在A实例的实例详情页面,单击云盘页签。
找到目标云盘,在操作列中选择 > 卸载。
说明如果您在弹窗中取消勾选云盘随实例释放,则源实例被释放后,系统盘将作为数据盘被保留下来,以按量付费方式计费。
查看A实例系统盘卸载结果:
返回实例列表页面,ECS实例显示无系统盘,并被绑定了一个标签,标签的值为云盘ID。
绑定的实例标签和云盘标签帮助您快速查找资源,其格式参见下表:
标签键
标签键说明
标签值
acs:ecs:sourceSystemDiskId
实例的系统盘
云盘ID
acs:ecs:sourceInstanceId
系统盘所属的实例
实例ID
acs:ecs:diskDeleteProtection
云盘已开启释放保护,不支持手动释放
true
acs:ecs:diskPayType
云盘计费方式
和卸载前保持一致
Prepaid:包年包月
AfterPay:按量付费
步骤三:挂载A实例的系统盘到B实例作为数据盘
卸载A实例的系统盘后,需要挂载A实例的系统盘到B实例作为数据盘,操作步骤如下:
挂载数据盘的前提条件和背景信息,请参见挂载数据盘。
登录ECS管理控制台。
在B实例的实例详情页面,单击云盘页签。
通过SSH或VNC登录到B实例。
具体操作,请参见连接方式概述。
执行以下命令,将A实例的系统盘作为数据盘挂载到B实例。
mount <数据盘分区> <挂载点>
<数据盘分区>:在B实例上执行
lsblk
和blkid
命令,可以发现相比挂载云盘前新增了A实例系统盘中的分区和文件系统。例如新增的/dev/vdb1是A实例系统盘中的根文件系统,则数据盘分区可设置为/dev/vdb1。说明A实例的系统盘作为数据盘被挂载到B实例后,B实例将读取该云盘已有的分区,并将该云盘排在B实例已有的云盘之后作为数据盘挂载到B实例。
<挂载点>:您需要准备一个目录作为A实例系统盘中的文件系统的挂载点,可以设置为系统中已有的目录(例如:/mnt),也可以设置为在/tmp或其他临时目录下新建的目录。
重要该目录应当是空目录,并且没有其他的文件系统挂载到该目录上。
以数据盘分区为/dev/vdb1,挂载点为
/mnt
为例,命令如下:mount /dev/vdb1 /mnt
步骤四:进行对应的操作
您可以在B实例中进行对应操作来修复数据盘,修复完毕,再执行exit
命令退出chroot的环境,操作步骤如下:
通过SSH或VNC登录到B实例。
具体操作,请参见连接方式概述。
执行以下命令,将根目录切换到
/mnt
目录。chroot /mnt
说明若
chroot
命令执行失败,通常是系统盘的Bash环境已经被破坏。在B实例上的chroot环境中,对数据盘中的内容进行对应的操作以修复其中存在的问题。
具体的问题现象、问题原因和修复方法请参照对应的修复文档。
执行
exit
命令,退出chroot的环境。
步骤五:恢复A实例的系统盘
如果您在B实例上完成对应的操作后想要恢复A实例的系统盘,您可以先在B实例上卸载数据盘(即A实例的系统盘),然后将该云盘挂载回A实例,操作步骤如下: