cat /proc/mdstat只能反映RAID的逻辑状态,像[UU]或者[_U]这样的。但它没办法检测出物理盘的老化、坏块增长或者固件异常这些情况。真正的健康检查得用smartctl逐个盘读取SMART原始值,其中Reallocated_Sector_Ct、Media_Wearout_Indicator、Percentage Used等RAW_VALUE指标是重点关注对象。

Linux怎么查看具体的磁盘阵列健康度

cat /proc/mdstat 只能看状态,不能代替健康度检查

它只告诉你阵列当前是不是 [UU][_U],但不反映物理盘真实老化、坏块增长或固件异常。一块盘的 Reallocated_Sector_Ct 已涨到 12,/proc/mdstat 仍可能显示 clean —— 这不是阵列健康,只是“没掉盘”。

真正要查健康度,必须穿透到每块物理盘,用 smartctl 逐个读取 SMART 数据。软件 RAID(mdadm)本身不监控磁盘寿命,它只管逻辑层同步和容错。

smartctl 访问被拒?先确认接口类型再加-d参数

很多服务器(尤其带 RAID 卡或 USB 盒)直接跑 smartctl -i /dev/sda 会失败,这不是硬盘坏了,是路径不对。关键在 -d 参数:

别信 VALUE 列,RAW_VALUE 才是真实数字

厂商把原始值做了归一化处理,VALUE 列看着都是 100 或 200,完全无法判断磨损程度。所有关键指标必须盯 RAW_VALUE

smartctl -H 显示 PASSED 不等于安全

这个结果只是固件上报的一个快照,RAID 卡可能伪造它,pending 扇区还没触发重映射时也常返回 PASSED。更危险的是:Reallocated_Sector_Ct 已到 3,-H 仍可能显示 PASSED。

所以必须人工检查关键属性的 RAW_VALUE,而不是依赖这一行结论。另外,smartctl -l selftest /dev/sdX 查历史自检日志,比 -H 更可靠 —— 曾失败过的盘,即使现在 PASS,也该列入更换计划。

复杂点在于:同一块盘,NVMe 和 SATA 的 SMART 字段命名、方向、单位全都不一样,混着看会误判。比如 Wear_Leveling_Count 在 SATA 上越大越好,在 NVMe 上根本不存在 —— 它被 Percentage Used 取代,且含义相反。

本文转载于:https://www.php.cn/faq/3004942.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。