目录
[严重故障(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 修复(必须卸载后执行,生产环境需谨慎)。若频繁发生,建议更换磁盘。