阿里云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)

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

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

使用步骤

首先登录到运维编排控制台 。选择问题实例所在的region地域。
单击我的模版>创建模版,并选取空白模版。
Create

单击YAML,将ACS-ECS-RescueUnreachableInstance-Linux中模版内容粘贴到空白编辑栏,输入模版名称,单击创建模版。
Create2

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

Exe

单击 下一步,确认 ,单击 创建执行 。
您可在执行详情中查看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

  • 检查 /etc/fstab。如果/etc/fstab已经存在,则备份原文件。
  • 修复/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
目录
相关文章
|
15天前
|
弹性计算 Linux 数据库
阿里云国际版如何迁移Linux云服务器系统盘中的数据
阿里云国际版如何迁移Linux云服务器系统盘中的数据
|
18天前
|
存储 Linux
服务器数据恢复—Linux操作系统网站服务器数据恢复案例
服务器数据恢复环境: 一台linux操作系统网站服务器,该服务器上部署了几十个网站,使用一块SATA硬盘。 服务器故障&原因: 服务器在工作过程中突然宕机。管理员尝试重新启动服务器失败,于是将服务器上的硬盘拆下检测,发现很多坏扇区。联系当地的一家数据恢复公司处理,但是没有成功。
|
1月前
|
存储 数据挖掘 Linux
服务器数据恢复—Linux操作系统网站服务器数据恢复案例
服务器数据恢复环境: 一台linux操作系统服务器上跑了几十个网站,服务器上只有一块SATA硬盘。 服务器故障: 服务器突然宕机,尝试再次启动失败。将硬盘拆下检测,发现存在坏扇区
|
1月前
|
弹性计算 固态存储 NoSQL
阿里云服务器系统盘和数据盘ESSD Entry、ESSD AutoPL和ESSD云盘区别、性能和价格整理
阿里云服务器系统盘有ESSD Entry、ESSD云盘及ESSD AutoPL三种选择,各自在性能和适用场景上有所不同。ESSD Entry云盘性价比高,适合开发与测试业务;ESSD AutoPL云盘实现容量与性能解耦,支持自定义预配置性能,适用于时延敏感或IO密集型场景;ESSD云盘则提供多种性能级别,适用于大型OLTP数据库和NoSQL数据库等。详情及价格参见阿里云官网。
136 8
|
1月前
|
存储 弹性计算
阿里云服务器系统盘存储空间不够用怎么办?
当阿里云服务器系统盘空间不足时,您可以通过系统盘扩容或挂载数据盘解决。系统盘扩容无需重启服务器,详细步骤见系统盘扩容教程。挂载数据盘需预先购买,并确保与服务器位于同一地域和可用区,最多可挂载64块,详情见挂载数据盘教程
324 6
|
2月前
|
关系型数据库 MySQL Linux
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?
|
2月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
2月前
|
安全 Ubuntu 网络协议
在Linux中,如何配置DHCP服务器?
在Linux中,如何配置DHCP服务器?
|
2月前
|
域名解析 网络协议 Linux
在Linux中,如何配置DNS服务器?
在Linux中,如何配置DNS服务器?
|
2月前
|
缓存 Linux 调度
Linux服务器如何查看CPU占用率、内存占用、带宽占用
Linux服务器如何查看CPU占用率、内存占用、带宽占用
638 0