服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

一次服务器非法重启后导致的故障排查记录

日期: 来源:程序员零距离收集编辑:JackTian

(给程序员零距离加星标,了解项目开发.)

大家好,我是杰哥。

前段时间遇到一个服务器问题:非法重启设备后,服务器进入救援模式,数据盘也不显示挂载是否成功。

说来这个问题,我觉得还挺奇葩。今天就来跟大家分享下整个过程以及我的处理方法。避免大家在今后的学习或工作中遇到跟我同样的问题。

一、问题背景

有一天,研发小伙伴跟我反馈有一台服务器连不上,一直卡在如下页面。

该页面是 Xshell 连接某一台服务器时,建立的连接,按Ctrl+Alt+]键切换到本地 Shell 终端。当我看到卡在该页面时,毫无犹豫的自己也尝试了起来,果然也是连不上。前一天还正常连接,第二天就出问题了?

还好服务器有配置远程管理地址,通过远程控制管理页面的方式启动 iKVM HTML5 和远程管理服务器,这样就能登到这台出故障的设备上查看服务器界面处于一种什么样的状态。

登到这台故障的服务器后,直接重启了服务器,然后 Xshell 再次尝试连接,是可以远程连接的。难道这就是传说中的重启治百病,如此简单粗暴?

当进入系统后,执行简单的命令都提示输入/输出错误。

过不久后,直接不建立连接了,彻底挂了。。。

再通过远程控制管理页面查看服务器当前状态,一看进入到救援模式了。

到该模式下后,

  • 输入journalctl -xb命令,可查看系统日志

  • 输入systemctl reboot命令,重启系统

  • 输入systemctl default^D命令,再次尝试进入默认模式

  • 输入 root 用户密码,则可以进入系统

根据日志报错提示:挂载文件系统可以纠正该问题。

二、解决方案

执行df -h命令,用于在 Linux 操作系统下显示文件系统的磁盘使用情况。

使用-h选项以KB以上的单位来显示,可读性高。

  • 第一列:Filesystem文件系统的名称

  • 第二列:Size文件系统的容量

  • 第三列:Used已用多少的磁盘空间

  • 第四列:Avail可用多少的磁盘空间

  • 第五列:Use%磁盘使用率

  • 第六列:Mounted On挂载点

根据上图结果来看,没有/dev/sdb1文件系统所挂载的/bigdata目录磁盘情况。

尝试将/dev/sdb1取消挂载,重新挂载,反复报不同的错误。



通过 RAID 卡管理界面查看状态也是 Online。

当如果重启设备,能看到如下界面,则说明正在初始化设备。

恰巧,这台故障的服务器有多块硬盘组成的 44T 的一个目录有存放 46% 的数据,在有数据的情况下,如何不格式化磁盘重新挂载呢?

取消挂载

umount /dev/sdb1

尝试修复

若不确定挂载点属于哪种文件类型时,可以执行:df -Th命令来判断。

如果挂载点为xfs 文件类型,可以执行:xfs_repair -L + 文件系统名称路径命令进行修复。

如果挂载点为fsck.ext2/3/4文件类型,可以执行:fsck.ext2/3/4文件类型 + 文件系统路径命令进行修复。

因为我这是xfs的文件类型,按xfs_repair命令来修复受损的 xfs 文件系统,执行如下命令进行修复/dev/sdb1

xfs_repair -L /dev/sdb1

执行修复是根据磁盘中的数据使用率来决定修复时长的,所以时间会较长,我采用放后台的形式执行的,执行完成后,查看还是否有进程存在,如有则说明未修复完,如没有则说明修复完成,然后再重新挂载。

mount /dev/sdb1 /bigdata


挂载完毕后,执行df -h命令来确定是否挂载成功。


到此,就恢复挂载完毕了。

上面案例是针对磁盘有数据时且不格式化的情况下恢复并挂载。

那么有小伙伴该问了,无存储数据的情况下,如何挂载磁盘,我这里也给大家整理出来一个详细的操作步骤:

第一步:

ll /dev/disk/by-path  # 查看需要挂的磁盘名称
fdisk -l              # 查看磁盘信息
lsblk                 # lsblk 命令默认情况下将以树状列出所有块设备,包括查看磁盘挂载信息

第二步:

parted /dev/sdb mklabel gpt            # 新建 /dev/sdb 的磁盘标签类型为 GPT
parted /dev/sdb mkpart primary 0 100%  # 将 /dev/sdb 整个空间分给同一个分区
ignore                                 # 忽略上述执行命令后的告警
mkfs.xfs -f /dev/sdb                   # 格式化分区

注意:格式化分区可能会执行慢些,需耐心等待。

第三步:

mkdir /bigdata            # 创建目录,自定义目录名
mount /dev/sdb /bigdata   # 将 sdb 挂载到 /bigdata 目录下

第四步:

blkid   # 查看 sdb 的 UUID 并复制

第五步:

vi /etc/fstab    # 参考已挂载的磁盘,将 sdb 的 UUID 和挂载目录关联上,保存后重启设备

注意:UUID 一定要写对,否则重启后无法正常进入系统。

第六步:

df -h   # 检查是否挂载成功

按照上述操作步骤执行,肯定能操作成功。如果你有更好的解决方案,也欢迎大家留言分享。

参考文献

xfs_repair命令详解 https://bbs.qunyingkeji.com/2052/

- END -

1、背负十年骂名的国产软件,终成世界之最
2、完全使用Linux替换Windows之后,我觉得自己非常愚蠢
3、字节一面:TCP 三次握手,问的好细!
4、这TM是要逼疯多少程序员...
5、这家公司只有1个人,年赚一个亿
6、最近又找到几款实用的油猴脚本,一起“开挂”吧~
7、最终,这个华为 App 还是关停了...
8、几个优秀的开源项目,看看你用过几个?


更多精彩等待你的发现
点分享
点点赞
点在看

相关阅读

  • 【了解一下】GPT分区

  • 本文包含四个部分:1.GPT磁盘分区的数据结构 2.初始化GPT磁盘,它有哪些变化3.查看受损的GPT磁盘4.删除一个分区,GPT硬盘有哪些变化GPT磁盘分区的数据结构GPT磁盘的特点1.GPT磁盘
  • 平航电子取证技术简报第十六期上线!

  • 2023年02月09日 | 星期四平航电子取证技术简报2023年第一期 | 总第十六期取证简报新年第一期正式上线,本期收录实战技术分享文章五篇,涉及安卓Frida动态插桩技术、刷单型色情
  • 超详细!Python中 pip 常用命令

  • 相信对于大多数熟悉Python的人来说,一定都听说并且使用过pip这个工具,但是对它的了解可能还不一定是非常的透彻,今天小编就来为大家介绍10个使用pip的小技巧,相信对大家以后管理
  • 推荐一个 yyds 开源项目任务管理工具

  • DooTask 是一款轻量级的开源在线项目任务管理工具,提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,文件管理等工具。功能特性可查看日历提醒事
  • SpringBoot 应用的新命令行界面:Just

  • 命令行工具 Just,无需任何配置即可自动加载有变动的源码、构建文件或 Docker 编排文件,提升 Spring Boot 应用构建时的 Java 开发体验,同时该项目也支持生成(原生)应用及(原生)Dock
  • 2023 年十佳 Linux 服务器发行版 | Linux 中国

  • 导读:由于具备多种优势,Linux 操作系统是各类服务器中的热门选择。                       本文字数:4388,阅读时长大约:7分钟由于具备多种优势,Linux 操作系统是各

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 一次服务器非法重启后导致的故障排查记录

  • (给程序员零距离加星标,了解项目开发.)大家好,我是杰哥。前段时间遇到一个服务器问题:非法重启设备后,服务器进入救援模式,数据盘也不显示挂载是否成功。说来这个问题,我觉得还挺奇
  • 微软中国团队让老外感受全家桶?

  • (给程序员零距离加星标,了解项目开发.)粉丝福利:小编会从今天留言中抽选幸运小伙伴赠送现金红包,感谢大家一直以来的支持!文末见喽!早前蓝点网提到微软电脑管家正式登陆微软商店,最
  • 我在Github上发现了一个好东西!

  • (给程序员零距离加星标,了解项目开发.)粉丝福利:小编会从今天留言中抽选幸运小伙伴赠送现金红包,感谢大家一直以来的支持!文末见喽!作为一个天天都在CRUD的程序员,你有没有想过,数据
  • 人麻了,腾讯会议部分功能开始收费...

  • (给程序员零距离加星标,了解项目开发.)怎么连接现实和数字世界?疫情之下,视频会议无疑是其重要通道之一。2020 年后,视频会议软件快速崛起,逐渐成为大多数打工人的刚需。其中,免费使
  • 漫画 | 编程语言三巨头的陨落

  • 粉丝福利:小编会从今天留言中抽选幸运小伙伴赠送现金红包,感谢大家一直以来的支持!文末见喽!对于一个小学生来说,就可以轻松地计算这样的算式 3+10*5但是对一个程序员来说,如果你