硬盘坏通常不是瞬间整盘消失,而是先出现可读数的劣化信号,监控这些信号能提前换盘,把数据风险压在故障发生之前。独立服务器与裸金属可以直接读盘的健康自检数据;云服务器用的是虚拟化云盘,读不到底层盘片,要换用控制台指标来判断。
## 症状与定位
典型症状是 IO 延迟升高、写吞吐突然下降、系统日志里冒出块设备报错。独立服务器上用 smartctl -H /dev/sda 先看整体自检结果,再 smartctl -a 看明细,重点三个属性:Reallocated_Sector_Ct 重映射扇区数、Current_Pending_Sector 待定扇区数、UDMA_CRC_Error_Count 接口校验错。重映射与待定扇区从零开始增长,就是盘片在出坏块的直接证据;CRC 错误持续涨则更可能是线缆与接口问题,先换线再判盘。
云服务器侧没有 SMART 可读,判断依据换成控制台的 IO 指标:磁盘读写延迟的长期曲线、突发限流触发频率、与前一周同期的对比。云盘延迟持续抬升且非业务增长所致,提工单让服务商从底层核实,必要时更换云盘或迁移实例。
## 更换时机与预防
读到硬性坏块增长就该进更换流程,不要等彻底掉盘:先确认最近一次备份完整可用,再把业务切到备机或新盘,原盘降级为只读留存,最后才下线。数据库这类强一致服务,切换前先停写并核对记录数,顺序错了好盘也能演出坏盘的效果。
预防侧做两件事:巡检脚本定期抓三个关键属性的原始值,与上次比对,增量超零就告警;给业务盘的 IO 延迟与空间水位设监控阈值。判读时看增速比看绝对值更有意义:一块用了几年的盘存量几十个重映射扇区但长期不涨,风险可控;一块新盘短期内连涨,即使数值还小也要尽快换。盘的健康是会走下坡的消耗品,监控的意义不是让它不坏,而是让它坏在你能从容处理的时候。