服务器磁盘故障排查实战:SMART健康检测与RAID阵列日志诊断

服务器磁盘故障排查是Linux系统管理的高频任务。磁盘故障不会突然发生,而是通过越来越明显的信号逐步暴露:I/O错误、文件系统只读、RAID降级、SMART告警。等业务报错才处理,往往已经涉及数据损坏。排查重点放在主动检测:SMART健康状态、RAID阵列日志、I/O错误计数,这三件事做扎实,大部分磁盘故障能在数据损坏之前被发现。

SMART硬盘健康检测:读懂硬盘的自我健康报告

SMART是硬盘内置的自检机制,记录通电时间、重映射扇区、pending扇区、CRC错误等关键指标。smartctl是Linux下查看SMART数据的标准工具,属于smartmontools软件包。

# 查看单块盘的SMART健康概况
sudo smartctl -H /dev/sda
# 查看详细属性表
sudo smartctl -a /dev/sda
# 查看SMART历史错误日志
sudo smartctl -l error /dev/sda

SMART属性里值得重点盯的是这几项:Reallocated_Sector_Ct(重映射扇区数)、Current_Pending_Sector(等待重映射的扇区数)、Offline_Uncorrectable(离线无法修复扇区)、UDMA_CRC_Error(接口传输错误)。重映射扇区为0是正常,持续增长就说明盘片有坏道,故障概率明显升高。CRC错误常见于线缆接触不良,可以先更换SATA线再观察。pending扇区超过8个,一般建议直接备份数据、准备换盘。

sudo smartctl -a /dev/sda | grep -E "Reallocated|Pending|CRC|Power_On"

并非所有盘都支持读取SMART属性,但数据中心级SATA/SAS盘基本可以。SSD的SMART指标含义与HDD不同,重点看磨损均衡计数、剩余可写寿命这类指标,需要对照厂商手册解读。

RAID阵列日志诊断:降级与重建的完整记录

硬件RAID的故障线索记录在阵列控制器日志里,同时反映在操作系统的块设备状态上。软件RAID(mdadm)信息更直接,读/proc/mdstat和mdadm –detail的输出即可。

# 查看软raid状态
cat /proc/mdstat
sudo mdadm --detail /dev/md0

# 关键字段:
# State: clean, degraded   -> 降级,有盘掉线
# Failed Devices: 1        -> 故障盘数量
# Working Devices: 5       -> 正常盘数量

降级状态说明阵列少了一块盘但还能工作。此时应立即确认是哪一块盘(方括号里标出),先备份数据再做换盘操作,避免在数据无副本时直接动手。重建过程中I/O压力大,确认盘位后在线更换,mdadm会自动开始重建。

# 查看各盘在阵列中的槽位
sudo mdadm --misc --detail /dev/md0 | grep -i slot

硬件RAID(如LSI MegaRAID、HPE SmartArray)要使用厂商工具:storcli或megacli的PdList、LDList能看到物理盘和虚拟盘状态,状态字段出现Degraded、Failed、PredictiveFailure即对应故障盘位。PredictiveFailure是控制器根据SMART提前报的预警,此时盘还没死,但应列入换盘计划。

服务器故障排查流程:从业务现象倒推到磁盘

业务侧通常表现为慢、无响应、丢数据。定位步骤:先用iostat确认是哪块盘在出问题,再用系统日志找驱动错误,最后对照SMART与RAID状态确认根因。

# 实时查看各盘I/O
iostat -dx 1

# 常见异常值:
# await 长期高于200ms           -> 盘I/O异常
# 特定盘 util持续100%           -> 该盘成为瓶颈

# 系统日志里的磁盘错误
sudo dmesg | grep -iE "I/O error|reset|status"
sudo journalctl -k | grep -iE "sd[a-z]" | tail -50

dmesg里出现status与I/O error组合,基本可以确定盘有问题。结合smartctl -l error的过往错误记录,可以判断是瞬时可恢复错误还是持续的物理故障。持续错误但SMART无异常,考虑线缆、背板、HBA卡固件问题,这几类容易被误判成磁盘故障。

更换磁盘的完整流程与校验

换盘不是简单拔插,标准流程如下:

  • 确认故障盘对应的物理槽位,拔盘前在阵列管理界面先把盘标记为Fault或下线
  • 换入新盘,先做SMART长测试确认新盘无坏块
  • 阵列自动或手动发起重建,重建期间持续监控重建进度与阵列状态
  • 重建完成后做一致性检查,读一遍阵列确认数据链路干净
# 软raid:确认重建进度
sudo mdadm --detail /dev/md0 | grep "Rebuild Status"
# 主动对阵列做校验
echo check > /sys/block/md0/md/sync_action
watch cat /proc/mdstat

重建完成后,SMART的Pending扇区可能还有残留,需要再跑一次长测确认数据链路。整体流程结束后,把SMART基线、阵列状态、更换时间记录到运维台账,用于后续趋势判断。定期巡检配合阈值告警,比等系统日志报错更靠谱。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/fu-wu-qi-ci-pan-gu-zhang-pai-cha-shi-zhan-smart-jian-kang/

(0)
小编小编
上一篇 55分钟前
下一篇 54分钟前

相关推荐