阿里云ECS Linux系统盘损伤自救方案

本文涉及的产品
系统运维管理,不限时长
简介: 实例被强制关机/强制重启后,Linux操作系统可能会出现启动异常。在上述情况下,您可以尝试使用本文的的自救方案,自行修复损伤的Linux实例。

适用的症状和原因

在某些情况下,Linux操作系统会出现启动异常,此时,在阿里云ECS控制台显示的实例状态可能是运行中,但实例内的应用不可访问,实例内的网络不可达,既无法ping通,也无法通过workbench或者ssh建立连接。如果您在阿里云ECS控制台通过vnc连接上去,可能会看到如下的错误提示:

unexpected inconsistency;RUN fsck MANUALLY

或者

Give root password for maintenance (or type CTRL-D to continue)

或者

Enter 'help' for a list of built-in commands.
(initramfs)

造成以上问题的原因包括但不限于:

  1. 实例被强制关机/强制重启,或者突然宕机并造成文件系统数据不一致。
  2. 卸载了数据盘,但未从/etc/fstab中删除对应的挂载信息。
  3. /etc/fstab文件丢失或损坏。
  4. initrd文件被损坏。
  5. 其他原因造成的文件系统损害。
    在上述情况下,您可以尝试使用本文的的自救方案,自行修复损伤的Linux实例。

自救方案概览

阿里云的运维编排服务OOS(https://www.aliyun.com/product/oos) ,是阿里云官方提供的免费的自动化运维平台,通过简单的YAML格式的模板,提供自动化任务的管理与执行。
本文的自救方案,包含了一个经过阿里云官方测试的OOS模板,从而提供了一键修复的自动化方案。具体使用办法参见后面的“使用步骤”。
此自救方案会先对问题实例打镜像备份,然后卸载问题实例的系统盘,挂载到一个新创建的临时实例上,执行检查和修复动作,在修复完成后,重新把系统盘挂载回原实例,并且尝试启动修复后的实例,最后,释放临时实例。
支持的操作系统

  • CentOS 7.2 64位,7.3 64位, 7.4 64位,7.5 64位,7.6 64位,7.7 64位,8.0 64位
  • Debian 9.6 64位,9.8 64位,9.9 64位,9.11 64位,8.9 64位,8.11 64位,
  • OpenSUSE 42.3 64位,15.1 64位
  • SUSE Linux Enterprise Server 12 SP4 64位, 12 SP2 64位。
  • Aliyun Linux 2.1903 64位
  • Ubuntu 16.04 64位,18.04 64位,

特别提示

• Linux系统启动失败的原因众多,此自救方案不能保证修复所有的系统启动失败的实例。
• 修复过程中,会创建临时实例并因此产生一定费用(一般小于1元RMB)。
• 此自救方案会修改系统的fstab和initrd文件,在修改之前,会自动对待修复实例打镜像备份,以方便您利用备份镜像恢复数据。保有镜像是收费的(参见快照的收费标准),在您确认实例修复成功之后,您可考虑删除镜像。

准备账号和权限

如果您使用主账号,可以跳过此节,直接查看使用步骤。
如果您使用RAM子账号或者角色,请确认该子账号或者角色拥有OOS、ROS、ECS、VPC的适当权限。有如下两种方式:
1,您可以给子账号或者角色授予系统权限: AliyunOOSFullAccess ,AliyunROSFullAccess , AliyunECSFullAccess , AliyunVPCFullAccess 的权限。详情参见RAM帮助文档https://help.aliyun.com/document_detail/93732.html
2,您也可以新建自定义策略,然后授权给子账户。参考的策略内容为
https://oos-debug.oss-cn-hangzhou.aliyuncs.com/rt_policy.json
操作步骤参见阿里云RAM的帮助文档
https://help.aliyun.com/document_detail/93733.html

使用步骤

  1. 首先登录到运维编排控制台 。选择问题实例所在的region地域。
  2. 单击我的模版>创建模版,并选取空白模版。
    Create.png
  3. 单击YAML,将ACS-ECS-RescueUnreachableInstance-Linux中模版内容粘贴到空白编辑栏,输入模版名称,单击创建模版。

Create2.png

  1. 在我的模版中,找到刚创建成功的模版,单击创建执行。
  2. 单击 下一步,设置参数 。
  3. 输入以下的参数。
    • unreachableInstanceId: 必填,待修复系统盘的实例ID。

• credentialType: 必填,修复完系统盘后,将系统盘挂回原实例时将设置的认证凭证,可选择KeyPairName(密钥对)或Password(自定义密码)方式。
• credentialValue: 必填,认证凭证值,如选择了密钥对方式则输入密钥对名称;如选择了自定义密码方式,则输入密码。
• imagePrefix: 选填,在修复前对待修复实例打镜像,打镜像时设置的镜像名称前缀,默认为OOSRescueBackup-。
• helperInstanceType: 选填,将创建临时实例的规格,默认为ecs.t5-lc1m2.large。
• 执行使用到的权限的来源:选择当前账号的已有权限。

Exe.png

  1. 单击 下一步,确认 ,单击 创建执行 。
  2. 您可在执行详情中查看OOS模版执行,可通过执行输出的参数rtCommandOutput查看修复脚本执行情况。
    此执行过程大约需要5-10分钟,请耐心等待。如果执行成功,您的实例应该已经被修复并且处于正常运行中了。

提醒

如果模版执行过程中被取消,或者模板执行中断,可能会造成实例的系统盘被卸载后没有挂载回去,此时,该实例状态会显示无系统盘,您可按如下步骤还原挂载,首先登录到ECS控制台,找到您修复的实例, 单击该实例的ID访问实例详情,单击本实例磁盘,单击挂载云盘,此时在页面上可以查看到源系统盘对应的ID,将此以d-bp为前缀的系统盘id复制并填写到目标光盘搜索栏中,尝试搜索该磁盘ID,根据搜索结果执行如下步骤。
• 若可以搜索到该ID,确认选择该磁盘ID, 登录凭证可选择 密钥对 或 自定义密码,该凭证将在您启动实例后通过root用户登录时使用。比如此处 登录凭证 选择的是自定义密码,则请在登录密码和确认密码中填写您要设置的密码,单击确定,单击执行挂载,若挂载成功则可以看到实例状态转变为已停止。
• 若无法搜索到该ID,返回查看刚刚创建的OOS执行,在untilStackReady任务中可找到输出参数helperInstanceId,复制对应参数值以i-为前缀的实例iD,然后在ECS控制台中搜索该实例id,找到后释放该临时实例,释放成功后,回到上述步骤:将以d-bp为前缀的系统盘id复制并填写到目标光盘搜索栏中,并按步骤继续挂载系统盘。

自救方案内部的实现逻辑

修复/etc/fstab

  1. 检查 /etc/fstab。如果/etc/fstab已经存在,则备份原文件。
  2. 修复/etc/fstab
    • 当/etc/fstab 不存在或者解析失败时,创建默认/etc/fstab。

• 当发现nofail没有设置时,设置nofail,防止启动失败。
• 当发现fsck选项打开时,将fsck选项关闭。

更新ramdisk

  • 检查/boot里面的ramdisk,如果存在,则备份原文件。
  • 重新构建 ramdisk 文件。
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
存储 弹性计算 安全
带你读《从基础到应用云上安全航行指南》——九大提升ECS实例操作系统安全性的技巧(1)
带你读《从基础到应用云上安全航行指南》——九大提升ECS实例操作系统安全性的技巧(1)
377 1
|
存储 运维 关系型数据库
Cloudreve 自建云盘实践,我说了没人能限得了我的容量和速度!
一、前言 二、Cloudreve 介绍 🔉 功能 ✨ 特性 📌 资料 三、环境准备 四、宝塔配置 1. 获取用户名和密码 2. 8888 端口授权 3. 登录宝塔后台 五、服务安装 1. 在宝塔终端查看服务内核 2. 下载和安装 3. 开放端口 5212 4. 登录服务 六、进程守护 1. Supervisor 配置 2. Supervisor 启动 七、配置域名 1. 解析域名 2. 反向代理 八、数据库切换 九、总结 十、系列推荐
2208 0
Cloudreve 自建云盘实践,我说了没人能限得了我的容量和速度!
|
4月前
|
存储 弹性计算 安全
带你读《从基础到应用云上安全航行指南》——九大提升ECS实例操作系统安全性的技巧(2)
带你读《从基础到应用云上安全航行指南》——九大提升ECS实例操作系统安全性的技巧(2)
700 1
带你读《从基础到应用云上安全航行指南》——九大提升ECS实例操作系统安全性的技巧(2)
|
4月前
|
弹性计算 运维 监控
带你读《从基础到应用云上安全航行指南》——九大提升ECS实例操作系统安全性的技巧(3)
带你读《从基础到应用云上安全航行指南》——九大提升ECS实例操作系统安全性的技巧(3)
367 1
|
4月前
|
弹性计算 Unix Linux
带你读《弹性计算技术指导及场景应用》——1. 单实例上运行Linux桌面多开解决方案(1)
带你读《弹性计算技术指导及场景应用》——1. 单实例上运行Linux桌面多开解决方案(1)
108 2
|
4月前
|
弹性计算 Linux 测试技术
带你读《弹性计算技术指导及场景应用》——1. 单实例上运行Linux桌面多开解决方案(2)
带你读《弹性计算技术指导及场景应用》——1. 单实例上运行Linux桌面多开解决方案(2)
107 0
|
监控 安全 Linux
Linux系统-磁盘无损扩容教程【宝塔面板适用】
随着业务的增大,磁盘空间是越用越多。直到不够用,需要扩容了。却发现在服务商升级磁盘以后,磁盘大小并未发生变化。该如何操作才能实现真正的扩容成功呢?
603 0
Linux系统-磁盘无损扩容教程【宝塔面板适用】
|
存储 关系型数据库 MySQL
如何在服务器上搭建个人云盘
以树莓派为例写如何搭建个人云盘
|
开发框架 固态存储 NoSQL
小白如何选择阿里云服务器地域、操作系统、硬盘、带宽等配置
本文主要讲述的是自定义购买过程中选择地域、操作系统、硬盘、带宽等配置的建议及注意事项,可供新手用户选购阿里云服务器时参考。
263 0
小白如何选择阿里云服务器地域、操作系统、硬盘、带宽等配置
|
弹性计算 Linux
关于ECS Linux系统查看系统网络占用的方法
1、可能查看某个进程的带宽占用需要明确知道PID、进程名字、发送速度、接收速度。 2、很遗憾,在Linux原生的软件中没有这样的一款,只能额外装,最符合以上的情况就只有nethogs。 3、nethogs可以指定网卡,但是不能指定PID,这就是一个缺陷。
213 1