linux存储设备性能衰退是缓慢渐进过程,需综合smart健康指标(如percentage used>85%、available spare低于阈值、reallocated_sector_ct非零)、i/o行为(iostat显示await>20ms、%util持续过高)、trim启用状态及调度器配置来精准识别老化与故障风险。

Linux 存储设备性能衰退,往往不是突然宕机,而是缓慢、渐进的过程。真正危险的不是“不能用”,而是“还能用但越来越慢、越来越不可靠”。识别老化与故障磁盘,关键在于跳出“是否能挂载”的表层判断,转向健康度、响应行为和错误模式的综合分析。
看 SMART 健康指标,别只信“PASSED”
SMART 是最直接的硬件健康窗口,但仅看“SMART overall-health self-assessment test result: PASSED”远远不够。重点盯住这几个字段:
- Percentage Used(NVMe)或 Media_Wearout_Indicator(SATA SSD):反映 NAND 闪存擦写损耗,>85% 就该提高警惕,>95% 建议准备更换;
- Available Spare(NVMe)及阈值(Available Spare Threshold):备用块耗尽即触发预警,低于阈值说明冗余空间严重不足;
- Reallocated_Sector_Ct / Uncorrect / Current_Pending_Sector:非零值即存在已修复或待修复扇区,是机械盘早期故障的明确信号;
- Temperature_Celsius:持续高于 50℃ 会加速老化,尤其对 SSD 和高负载 HDD;
- FAILING_NOW 或 Pre-fail 属性状态为 FAIL:必须立即备份并停用设备。
命令:`sudo smartctl -a /dev/nvme0n1`(NVMe)或 `sudo smartctl -a /dev/sda`(SATA)。
查 I/O 行为异常,比跑分更真实
性能衰退常表现为响应延迟升高、吞吐不稳,而非单纯速度变慢。用 `iostat -x 1` 持续观察:
- %util 接近 100% 但业务负载不高:可能因坏块重试、垃圾回收阻塞或驱动异常;
- await > 20ms 且持续波动:I/O 等待时间过长,说明设备响应变慢;
- avgrq-sz 明显偏小(如 :典型的小文件随机读写压力,易暴露老化盘短板;
- avgqu-sz(平均队列长度)持续 > 2:请求积压,设备处理能力已达瓶颈。
再配合 `iotop -oP` 找出真实刷盘进程,避免被日志轮转、数据库 WAL 或未调优缓存服务“背锅”。
扫物理坏块,确认是否已出现不可逆损伤
SMART 可预警,但无法替代对存储介质的直接扫描。对 HDD 或老式 SSD,建议定期执行:
- 卸载目标分区:`sudo umount /dev/sda1`;
- 静默扫描坏块:`sudo badblocks -v -s -o badsectors.txt /dev/sda1`(-s 显示进度,-v 显示细节);
- 标记坏块(ext4):`sudo e2fsck -l badsectors.txt /dev/sda1`。
注意:SSD 不推荐频繁 `badblocks` 全盘扫描——它依赖底层地址映射,结果易误判,应优先依赖 SMART 和 TRIM 状态。
验 TRIM 与调度器,排除配置型性能衰减
很多“SSD 变慢”其实是软件层配置不当所致,而非硬件老化:
- TRIM 是否启用:`sudo systemctl is-enabled fstrim.timer` 应返回 enabled;手动执行 `sudo fstrim -v /` 不报错才说明路径通畅;
- I/O 调度器是否合理:NVMe 盘应设为 `none`,SATA SSD 推荐 `mq-deadline` 或 `none`;查看命令:`cat /sys/block/nvme0n1/queue/scheduler`;
- swap 是否误用 SSD:`swapon --show` 查位置,若在 SSD 上,建议改用 zram 或彻底禁用;
- 预留空间(OP)是否充足:全盘分区会挤占 OP,建议保留 5%–10% 容量不格式化。
这些优化不做,即使新盘也会一年内明显变慢;做了,老盘也能多撑几个月稳定期。











