服务器磁盘只读/故障排

目录

初步诊断

检查挂载状态

检查内核报错日志

交互式读写测试

进入目标目录

读取权限验证

创建目录测试(写权限初探)

文件写入深度测试

数据完整性验证

清理测试数据

结果判断与行动

高危故障(只读且伴硬件错误)

[严重故障(IO Hang/假死)](#严重故障(IO Hang/假死))

中高危故障(仅只读报错)


初步诊断

检查挂载状态

确认目标分区是否已被内核强制挂载为"只读"(ro)。

执行命令:

复制代码
mount
mount | grep <设备名>

注:请将 <设备名>替换为实际设备,如 sdb1, vda2 等。若不确定设备名,可先执行 *df -h*查看。

结果判读:

正常 :输出中包含 (rw,...),表示读写权限正常。

示例:/dev/sdb1 on /data type ext4 (rw,relatime,data=ordered)

异常 :输出中包含 (ro,...),表示内核已将该文件系统强制切换为只读模式。

示例:/dev/sdb1 on /data type ext4 (ro,relatime,data=ordered)

含义:通常由底层硬件错误、文件系统元数据损坏或 I/O 超时触发,是一种保护机制。

检查内核报错日志

查看内核环形缓冲区(dmesg),确认是否有硬件错误、文件系统错误或 I/O 超时导致只读。

复制代码
dmesg | tail -30 | grep -i "<设备名>|ext4|xfs|read-only|I/O error|Buffer I/O error|remounting"

注:若需查看更多历史日志,可将 tail -30**改为 tail -100*。*

重点关注关键词:

  • Buffer I/O error on device <设备名>:表明底层块设备读写失败。
  • EXT4-fs error 或 XFS Internal error:文件系统层面检测到元数据或数据结构损坏。
  • remounting filesystem read-only:内核主动将文件系统重新挂载为只读。
  • I/O timeout 或 hung task:可能暗示存储后端响应超时或假死(IO Hang)。

操作要求: 若发现上述错误,请完整记录错误信息(含时间戳、设备名、错误代码),作为后续故障定界依据。

交互式读写测试

此阶段涉及写操作。请务必确认已完成初步诊断,并评估对当前运行业务的影响。建议在业务低峰期操作。 假设目标挂载点为 <挂载点>(例如:/data 或 /mnt/disk1)。

进入目标目录

复制代码
cd <挂载点>

现象分析与应对:

正常:成功进入目录,命令提示符变更。

报错 No such file or directory:挂载点路径错误或未正确挂载。请立即执行 df -h 重新确认路径。

命令卡住(无响应):底层存储可能已发生 IO Hang(假死)。立即停止操作,不要尝试 Ctrl+C,直接跳转至文末"结果判断与行动"中的"严重故障"项。

读取权限验证

复制代码
ls -l

目的 :确认能否列出文件列表,验证基础读取能力。
正常:快速返回文件列表。

报错 :Permission denied(权限问题)或 Input/output error(磁盘故障)。

命令卡住:文件系统可能已完全挂死。参照上一步"命令卡住"处理。

创建目录测试(写权限初探)

复制代码
mkdir test_dir_$(date +%s)

注:使用时间戳避免文件名冲突。

正常 :无输出,直接返回命令提示符。可通过 ls -ld test_dir_* 确认目录已创建。

故障 - 只读 :报错 mkdir: cannot create directory '...': Read-only file system。结论:文件系统确认为只读。

故障 - IO Hang:命令长时间卡住(超过 10-30 秒),光标闪烁但无反应。结论:底层存储响应超时,疑似严重硬件故障。

文件写入深度测试

前提 :仅在上一步(创建目录)成功的情况下执行。

复制代码
echo "disk_write_test_ok_$(date +%s)" > test_file_$(date +%s).txt

正常:无输出,直接返回命令提示符。

故障 - 只读 :报错 bash: ...: Read-only file system。

故障 - I/O 错误 :报错 ...: Input/output error。含义:写入请求被底层设备拒绝。

故障 - IO Hang:命令卡住,无输出也无报错。含义:存储系统假死。

数据完整性验证

仅在上一步(文件写入)看似成功(无报错)的情况下执行。

复制代码
ls -l test_file_*.txt
cat test_file_*.txt

结论判读:

完全正常 :ls 显示文件,cat 正确显示内容 disk_write_test_ok_...。说明读写功能正常,之前告警可能是瞬时抖动。

文件存在但内容为空/乱码:写入过程发生截断或损坏,文件系统存在隐患。

文件不存在 :上一步的"无输出"是假象,实际写入失败。需结合 dmesg 再次确认。

清理测试数据

重要:测试完成后,务必清理产生的垃圾文件。

复制代码
rm -rf test_dir_* test_file_*.txt
ls -l | grep test_

结果判断与行动

根据上述测试结果,对照下表判断故障等级并采取行动:

高危故障(只读且伴硬件错误)

现象 :mount 显示 (ro,...) 且 dmesg 有 I/O error 或 remounting read-only。

行动 :立即通知运维/存储团队。准备数据备份方案(若能读取)。严禁重启,等待专业介入尝试修复文件系统或更换硬盘。

严重故障(IO Hang/假死)

现象 :cd、ls、mkdir 或 echo 命令卡住无响应。

行动 :最高优先级 ,表明存储子系统假死。立即上报,提供 dmesg 中 hung task 相关日志。评估是否需要隔离该节点,防止影响集群其他服务。通常需要云厂商或硬件供应商介入排查底层存储链路。

中高危故障(仅只读报错)

现象 :mkdir 或 echo 报错 Read-only file system,但命令未卡住。

行动 :文件系统已自我保护。尝试卸载后重新挂载(umount + mount),仅限非核心业务且有风险意识时操作。若重挂失败,需运行 fsck 修复(必须卸载后执行,生产环境需谨慎)。若频繁发生,建议更换磁盘。

相关推荐
zhikouai27 分钟前
把外部助手接进聊天软件的架构分层与参数配置
服务器·网络·php
荣合技术服务1 小时前
HPC 超算集群故障维修实录:找荣合科算维护后,模拟仿真计算又能跑了
运维·服务器·超算服务器·荣合科算
nice_lcj5201 小时前
Java Lambda 表达式入门:怎么写、怎么用、常用方法有哪些
java·开发语言·后端·面试
码农小河662 小时前
基于SSM+JSP+MySQL的在线医疗服务系统的设计与实现
java·开发语言·mysql
GeW2 小时前
高端化转型进入“补底层”阶段:Linux与数据库的再定位
linux
SL_staff3 小时前
从配置失效到逻辑复用:JVS-Logic 如何构建可治理的业务编排中枢
java·spring·产品
特立独行的猫A3 小时前
一份 Markdown 发十个平台:cspub 一稿多投
java·后端·python
silent3 小时前
龙芯3B6000M运行Yolov8+FastApi
linux·loongarch·loongnix·龙芯
文丑颜不良啊4 小时前
LeetCode1961~1980题目解析
java·leetcode
西西弗Sisyphus4 小时前
理解 Linux 动态库加载:LD_LIBRARY_PATH
linux