CentOS 7.2服务器IO异常求助:XFS报错与磁盘故障排查
CentOS 7.2服务器磁盘I/O故障排查与修复求助
问题背景
我们的服务器运行CentOS 7.2,今日出现异常故障,具体现象如下:
- SSH连接时报错:
-bash: /share/home/MGI/.bash_profile: Input/output error - 登录后提示符变为
-bash-4.2$(无法加载用户环境配置文件) - 执行
ls命令失败,提示ls: cannot open directory .: Input/output error - 使用
vi编辑文件提示Permission denied,但cd、pwd命令可正常使用
初步怀疑磁盘损坏,执行mount命令输出如下:
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) devtmpfs on /dev type devtmpfs (rw,nosuid,size=32831312k,nr_inodes=8207828,mode=755) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755) tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755) cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd) pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime) cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu) cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb) cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event) cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls) cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer) cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio) configfs on /sys/kernel/config type configfs (rw,relatime) /dev/md126p2 on / type ext4 (rw,relatime,data=ordered) mqueue on /dev/mqueue type mqueue (rw,relatime) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime) debugfs on /sys/kernel/debug type debugfs (rw,relatime) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=35,pgrp=1,timeout=300,minproto=5,maxproto=5,direct) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) nfsd on /proc/fs/nfsd type nfsd (rw,relatime) /dev/mapper/mpatha1 on /share type xfs (rw,relatime,attr2,inode64,noquota) /dev/md126p1 on /boot type ext4 (rw,relatime,data=ordered) fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime) tmpfs on /run/user/1038 type tmpfs (rw,nosuid,nodev,relatime,size=6569364k,mode=700,uid=1038,gid=1039) tmpfs on /run/user/1016 type tmpfs (rw,nosuid,nodev,relatime,size=6569364k,mode=700,uid=1016,gid=1016) tmpfs on /run/user/1008 type tmpfs (rw,nosuid,nodev,relatime,size=6569364k,mode=700,uid=1008,gid=1008) tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=6569364k,mode=700) gvfsd-fuse on /run/user/0/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0) tmpfs on /run/user/1019 type tmpfs (rw,nosuid,nodev,relatime,size=6569364k,mode=700,uid=1019,gid=1020)
同时dmesg输出中频繁出现以下错误:
XFS (dm-1): xfs_log_force: error -5 returned. scsi 11:0:0:0: alua: rtpg failed with 8000002
请求指点如何排查真实故障原因并进行修复!
故障排查与修复建议
先给你梳理下核心线索:从dmesg报错和挂载信息来看,问题大概率出在/share挂载的XFS文件系统对应的存储设备上——dm-1就是/dev/mapper/mpatha1的映射设备,而用户目录/share/home/MGI正好在这个分区,这也解释了为什么加载配置文件、读取目录都会报I/O错误。下面分步骤给你排查方案:
第一步:确认存储设备的健康状态
检查多路径设备状态
因为用到了mpatha1多路径设备,先执行multipath -ll查看路径状态,是否有链路失效、设备离线的情况。rtpg failed是ALUA(不对称逻辑单元访问)相关错误,说明存储路径的状态查询或切换出了问题,可能是存储端、链路或主机配置的问题。验证SCSI设备可用性
用lsscsi找到报错里的11:0:0:0对应物理设备名(比如/dev/sdb),然后执行:sg_turs /dev/sdX:测试设备是否响应sg_vpd -p 0x83 /dev/sdX:查看设备VPD页面,确认设备是否在线
检查磁盘健康信息
- 如果是本地磁盘,执行
smartctl -a /dev/sdX查看SMART数据,确认是否有坏道、健康状态异常; - 如果是SAN存储,立即联系存储管理员检查存储端LUN状态、控制器负载、链路连通性。
- 如果是本地磁盘,执行
第二步:修复XFS文件系统(注意备份优先)
xfs_log_force: error -5说明XFS日志写入失败,文件系统已损坏。绝对不要在挂载状态下直接修复,否则可能加重数据丢失:
- 尝试卸载分区:
umount /share,如果提示设备忙,用fuser -mv /share找到占用进程,尝试终止;如果还是无法卸载,建议进入单用户模式或用CentOS救援启动盘启动。 - 只读检查文件系统:
xfs_repair -n /dev/mapper/mpatha1,先确认损坏程度和可修复性。 - 执行修复:如果只读检查无严重问题,执行
xfs_repair /dev/mapper/mpatha1。修复前务必备份重要数据——如果还能只读挂载,可执行mount -o ro /dev/mapper/mpatha1 /mnt后拷贝数据到其他存储。
第三步:排查ALUA相关故障
scsi 11:0:0:0: alua: rtpg failed的常见原因及解决:
- 存储端配置问题:联系存储管理员检查LUN的ALUA属性是否正常,存储控制器是否有故障;
- 主机多路径配置:检查
/etc/multipath.conf中的ALUA参数,尝试重启多路径服务:systemctl restart multipathd,再观察dmesg是否还有报错; - 链路故障:检查光纤线、HBA卡、交换机端口状态,可尝试更换链路或端口测试。
应急恢复方案(业务优先)
如果业务紧急,可先临时恢复服务:
- 备份
/share分区的重要数据到正常存储(比如本地根分区或其他服务器);若无法挂载,可用ddrescue镜像整个分区,再在其他机器挂载镜像恢复数据。 - 修改
/etc/passwd中用户的家目录路径到根分区(比如/home/MGI),让用户可以正常登录,先保证业务运行,再逐步排查存储故障。
内容的提问来源于stack exchange,提问作者jsjie
相关产品推荐
相关产品推荐

