当前位置:网站首页 >  百科

服务器存储故障零门槛排查实操指南 从告警到修复全步骤详解

时间:2026年06月01日 17:44:20 来源:易频IT社区

前置准备:排查前必做的安全操作

所有操作前先完成以下准备,避免故障扩大,所有示例中的/dev/sdb1、/mnt/data请替换为自身环境对应的块设备和挂载点:

  • 备份核心元数据:执行命令备份当前存储状态 ``` df -h > /tmp/df_backup.txt lsblk > /tmp/lsblk_backup.txt cp /etc/fstab /tmp/fstab_backup.txt ```
  • 安装RAID排查工具(仅带LSI RAID卡的服务器需要): ``` CentOS/RHEL 7/8/9 curl -s https://raw.githubusercontent.com/thomas-krenn/storcli/master/install.sh | bash Ubuntu/Debian wget -q https://docs.broadcom.com/docs-and-downloads/raid-controllers/raid-controllers-common-files/1.23.02_StorCLI.zip && unzip 1.23.02_StorCLI.zip && dpkg -i ./storcli_1.23.02_all.deb ```

第一步:故障层级快速定位(1分钟完成)

1.1 硬件层告警排查

物理机直接查看服务器前面板硬盘指示灯,红灯常亮/闪烁代表对应插槽硬盘物理故障;云服务器直接登录厂商控制台,查看云盘/本地盘的健康状态告警,有官方告警直接提工单更换存储介质。

1.2 链路层异常排查

执行命令查看系统内核日志,判断是否存在链路或硬件IO错误: ``` dmesg | grep -iE "sas|ata|scsi|io error|medium error" ``` 返回结果包含reset link、I/O error、medium error字样,即可判定为硬件链路或磁盘本身故障。

1.3 文件系统层排查

  • 执行df -i查看inode使用率,100%代表inode耗尽,即使磁盘有剩余空间也无法写入数据
  • 执行mount | grep /mnt/data查看挂载状态,返回ro代表分区变为只读模式,属于文件系统异常
  • 执行df -h查看磁盘使用率,100%代表空间耗尽

第二步:分场景故障精准修复实操

2.1 硬盘物理故障修复

带RAID组的服务器先执行命令查看RAID状态: ``` storcli /c0 show all | grep -i "state" ``` 返回Degraded代表RAID组降级,执行以下命令找到故障盘插槽号: ``` storcli /c0/eall/sall show | grep -i failed ``` 记录故障盘的Enclosure ID和Slot ID,支持热插拔的服务器直接拔出故障盘插入同规格新盘,自动重建无需额外操作,手动重建命令为: ``` 替换xxx为对应Enclosure ID和Slot ID storcli /c0/exxx/sxxx start rebuild ``` 无RAID的单盘服务器直接更换新盘后,执行mkfs.ext4 /dev/sdb1格式化后重新挂载即可,所有换盘操作前必须尽可能备份现有可读数据

2.2 inode耗尽故障修复

服务器存储故障零门槛排查实操指南 从告警到修复全步骤详解

逐层定位占用inode过高的目录: ``` 从根目录开始排查,逐层进入子目录重复执行 for i in /; do echo $i; find $i | wc -l; done ``` 一般为大量小文件(如临时缓存、分片日志)占用,批量删除7天以上的无用小文件: ``` 替换为对应高占用目录路径 find /path/to/large/inode/dir -type f -mtime +7 -delete ``` 如果业务本身需要存储大量小文件,备份数据后重新格式化分区指定更大inode配额: ``` 每8KB分配1个inode,默认值为16KB,可按需调整 mkfs.ext4 -i 8192 /dev/sdb1 ``` 格式化操作会清空全部分区数据,必须提前完成全量备份

2.3 文件系统只读故障修复

首先终止占用分区的进程,卸载分区: ``` 替换为对应挂载点 fuser -km /mnt/data umount /dev/sdb1 ``` 执行文件系统修复: ``` fsck.ext4 -y /dev/sdb1 ``` fsck操作存在极低概率丢失数据,操作前必须备份分区元数据,修复完成后重新挂载并验证: ``` mount /dev/sdb1 /mnt/data touch /mnt/data/test.txt && rm /mnt/data/test.txt ``` 无报错即为修复完成。

2.4 LVM逻辑卷空间不足修复

插入新盘后创建物理卷,加入现有卷组: ``` 替换为新盘设备名 pvcreate /dev/sdc 替换为自身卷组名,可通过vgs命令查看 vgextend centos /dev/sdc ``` 扩展逻辑卷并扩容文件系统: ``` 替换为自身逻辑卷路径,可通过lvs命令查看 lvextend -l +100%FREE /dev/mapper/centos-root xfs文件系统用以下命令 xfs_growfs /dev/mapper/centos-root ext4文件系统用以下命令 resize2fs /dev/mapper/centos-root ```

第三步:修复后验证与兜底预案

3.1 修复验证步骤

  • 执行df -h && df -i确认空间、inode使用率正常
  • 执行mount | grep /mnt/data确认挂载状态为rw读写模式
  • 执行读写压测验证功能:dd if=/dev/zero of=/mnt/data/test bs=1M count=100 && dd if=/mnt/data/test of=/dev/null,无报错即为正常,测试完成后删除test文件
  • RAID组执行storcli /c0 show all | grep -i rebuild查看重建进度,状态变为Optimal即为完全恢复

3.2 数据丢失兜底预案

如果修复过程中出现数据无法读取的情况,第一时间只读挂载分区避免二次写入: ``` mount -o ro /dev/sdb1 /mnt/tmp ``` 安装ddrescue工具克隆源盘数据到新盘后再做修复操作: ``` yum install -y ddrescue /dev/sdd1为新的空分区,容量不小于源盘 ddrescue /dev/sdb1 /dev/sdd1 /tmp/rescue.log ```

日常巡检预防建议

  • 每周执行一次dmesg | grep -i error排查潜在IO错误
  • 每周检查磁盘和inode使用率,使用率超过80%及时扩容
  • 带RAID的服务器每月检查一次RAID状态,避免多盘故障导致数据丢失
  • 重要存储数据开启定时快照,备份数据异地存储

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图