1.案例现象
发现有一台服务器上不能查看 /data 目录了
#执行 ls 命令报错
ls -l /data/
ls: 正在读取目录/data/: 输入/输出错误
总用量 0
2.定位问题
IO 错误,第一时间想到的应该是文件系统或者磁盘出现了故障
我们看一下/data 目录挂载到了哪块系统分区上
df -Th
发现 /data目录挂载到了 /dev/sda 分区上
我们查看系统日志,看看有没有报错
tailf /var/log/messages
Sep 19 13:04:56 systemd: Stopped target Local File System
Sep 19 13:04:56 Unmounting /data ...
Sep 19 13:04:56 umount: /data: target is busy.
Sep 19 13:04:56 systemd: Failed unmounting /data.
通过系统日志可以发现
- /data 出现了故障,系统想要卸载掉 /data
- 但是系统卸载失败了,因为这时候有进程正在对这个目录进行操作
我们使用 lsof 命令来查看是哪些进程正在使用 /data目录
lsof | grep data
通过输出发现,有nginx进程正在对 /data 目录进行操作
我们杀掉这些进程,打算手动卸载,执行 umount 命令
umount -t /data
卸载失败,发现系统识别不到 /dev/sda 分区
一般系统识别不到分区文件,主要有两点原因:
- 硬件故障(主板、硬盘等)
- 硬盘松了,需要重新插拔一下
3.解决问题
后面找到机房的同事进行排查之后发现是服务器的主板出现了故障,导致识别不到硬盘
更换主板即可