跳转到内容

S.M.A.R.T.:监控硬盘健康 ​

读完这一篇,你的每块数据盘都开了监控,每周自动跑一次短自检,出现坏扇区或过热时会发邮件,并且你看得懂界面上的「好」「警告」「损坏」「未知」分别在说什么。

SMART 能做什么,不能做什么 ​

S.M.A.R.T. 是硬盘自己记录的一组健康数据,OMV 用 smartmontools 读取并监控它。它能让你在盘彻底坏之前看到征兆,但不能保证提前预警。Backblaze 2016 年对自家硬盘的统计里,五个关键属性(5、187、188、197、198)至少有一项原始值大于零的,在已经坏掉的盘里占 76.7%,在仍正常运转的盘里只占 4.2%,说明它们确实是征兆。但同时有 23.3% 的坏盘,这五项一直都是零,坏之前没有任何预警。

所以 SMART 全绿不等于安全。它是早期预警,替代不了独立备份。

开始之前 ​

  • 配好邮件通知。 SMART 告警靠邮件发出,需要先在 系统 → 通知(System → Notification)配置 SMTP,见配置邮件通知。
  • 虚拟磁盘没有 SMART。 虚拟机里的 VirtIO 虚拟盘不会出现在列表里,要在宿主机上监控物理盘。
  • RAID 卡后面的盘读不到。 官方文档说明 OMV 只支持直通(HBA 模式)接入的磁盘。

操作步骤 ​

一、启用 SMART 服务 ​

打开 存储器 → S.M.A.R.T. → 设置(Storage → S.M.A.R.T. → Settings):

字段默认建议
已启动(Enabled)关勾选,不勾则后面的监控和计划任务都不会运行
检查间隔时间(Check interval)1800 秒保持默认。间隔超过 60 分钟会让轮询和自检时间对不上
电源模式(Power mode)新装系统通常是「永不」,以界面为准改成「待机」,这样 smartd 轮询时不会把休眠的盘唤醒
温度监测:差异(Difference)禁用可选,温度比上次报告变化达到这个值时记一条日志
温度监测:最大(Maximum)禁用见下面的说明

电源模式四个选项的意思:「永不」不管盘睡没睡都检查;「睡眠」「待机」「闲置」分别表示盘处于该状态或更深状态时跳过检查。

温度「最大」怎么设。 先观察一周日常温度,再设成高出日常约 10 °C 的值(这是经验值,以你的硬盘规格书为准)。有一点容易误会:OMV 生成的 smartd 配置里,「最大」对应的只是写日志的阈值,邮件要等温度达到「最大」加 5 °C 才发。

保存后点页面顶部黄色提示条上的应用。

二、为每块盘开启监控 ​

打开 存储器 → S.M.A.R.T. → 设备(Devices),选中一块盘,点编辑:

  1. 勾选监控已启用(Monitoring enabled)。
  2. 两个温度字段默认是「使用全局设置」,需要单独设阈值时再改。
  3. 保存,对每块盘重复。最后点应用。

只有开了监控的盘才会出现在仪表盘的「S.M.A.R.T. 状态」小部件和计划任务的设备列表里。已经有计划任务的盘不能关监控。

三、安排定期自检 ​

打开 存储器 → S.M.A.R.T. → 计划任务(Scheduled Tasks),点创建:

字段说明
已启动默认勾选
设备只列出已开启监控的盘
类型短暂自检、长时自检、传输时自检、离线即使测试
小时、月内第几天、月、周内第几天* 表示每一个。例如每周日 02 点:小时选 02,周内第几天选 7(周日),其余保持 *
标签自己看的备注

四种自检的区别,按 smartctl 手册:短暂通常不到十分钟;长时要几十分钟到数小时,读遍整个盘面;传输时只要几分钟,用来发现运输中造成的损伤;离线即使测试只更新属性值。所有自检都在后台进行,不用卸载文件系统,但会拖慢这块盘的读写。

一个常见的安排:每周一次短暂自检,每月一次长时自检,不同盘的时间错开,避开有人用或在备份的时段。

排程的细节:

  • 自检在 smartd 每次轮询之后启动,所以实际开始时间可能比设定晚几十分钟。
  • 同一块盘,同一个小时内只会启动一个自检。长时和短暂撞在同一小时,长时优先。别把两种自检排在同一小时。
  • 设了电源模式「待机」时,如果计划时间盘在休眠,自检不会被丢掉,盘被唤醒后会补跑最长的那一个。

表格里选中一条任务点运行(Run),会立刻对这块盘执行一次自检(相当于 smartctl --xall --test=类型),不用等排程。

怎么读结果 ​

状态列 ​

设备 页最后一列状态,以及仪表盘小部件里每块盘的颜色,来自 OMV 对属性的评估:

显示含义该怎么做
好(Good)没发现问题继续观察
警告(Warning)有少量坏扇区:5 号或 197 号属性的原始值大于等于 1看是否在增长,增长就准备换盘
损坏(Bad)有属性正在或曾经跌到阈值以下,有大量坏扇区,或 187 号属性原始值大于 0尽快备份并换盘
未知(Unknown)读不到 SMART 数据;或硬盘自评估失败、NVMe 报了严重警告别当成没事,点详情看原因

状态是 OMV 按属性判断的。想看硬盘自己给的整体评估,到详情的扩展信息页签(smartctl 的完整输出)里找 overall-health self-assessment。

详情页 ​

选中一块盘,点显示详情,有四个页签:设备信息(型号、序号、固件、开机时间、温度)、属性、自检日志、扩展信息。

五个要盯的属性 ​

ID名称含义怎么看
5Reallocated_Sector_Ct已被重映射的扇区数大于零说明盘面已有坏点;一两个且不再增长可观察,持续增长就换盘
187Reported_Uncorrect硬件 ECC 都纠正不了的读错误数大于零要重视
197Current_Pending_Sector等待重映射的扇区数这些扇区读不出来,要等到下次写入才会被重映射;反复出现就换盘
198Offline_Uncorrectable读写扇区时无法纠正的错误总数常和 197 同时出现
199UDMA_CRC_Error_CountUDMA 传输的 CRC 错误数多半是数据线、接口或供电问题,不是盘本身,换线后看是否还增长

Backblaze 的清单里还有 188 号(Command_Timeout)。单个计数没有意义,关键是看它有没有在增长,以及增长得多快:一天内从 0 涨到 20 比五年里涨 60 更值得警惕。

OMV 默认让 smartd 监控 5 号和 197 号属性的原始值变化,198 号增加时也会告警。这个默认值可以用环境变量 OMV_SMARTMONTOOLS_DEFAULTDIRECTIVES 调整,见环境变量。

固态盘和 NVMe 没有上面的属性表。OMV 对 NVMe 改看严重警告、可用备用块、已用寿命百分比和介质错误数。固态盘的磨损与寿命,见 SSD、NVMe 与 TRIM。

检查结果 ​

  1. 仪表盘上的「S.M.A.R.T. 状态」小部件里,每块被监控的盘显示为绿色(没有这个小部件的话,在仪表盘的设置里添加)。
  2. 在 计划任务 页对一块盘点运行,几分钟后到 设备 页选中这块盘,点显示详情,在自检日志页签里,最新一条应该是自检完成且没有错误。
  3. 想直接在命令行看,在 OMV 的 shell(SSH 或本机控制台,以 root 身份)执行:
sh
smartctl -H /dev/<磁盘>
smartctl -l selftest /dev/<磁盘>

-H 输出硬盘自己的整体评估,-l selftest 列出自检日志。两条都是只读的。

  1. 邮件是否真的能发出去,用 系统 → 通知 → 设置(System → Notification → Settings)里的测试邮件验证,见配置邮件通知。

常见问题 ​

USB 硬盘盒读不到 SMART。 OMV 完全依赖 smartmontools 的自动识别,并且每周自动更新一次它的设备数据库。可以先在 shell 里手动更新:

sh
update-smart-drivedb

仍然不行时,在 shell 里试 smartctl -d sat -a /dev/<磁盘> 看这个盒子能不能透传。OMV 界面里没有选择设备类型的入口,只有少数盒子(如 QNAP TR-004)会被自动指定类型,所以命令行能读到不代表界面也能读到。如果是新型号盒子,可以向 smartmontools 项目提交设备条目。

状态一直是「未知」。 先看详情里有没有读到属性:没有,多半是盒子或控制器不透传;有,再看扩展信息里硬盘自评估是否通过。

计划任务没有按时跑。 依次确认:设置 里的已启动勾上了;这块盘的监控已启用勾上了;改完都点过应用;这个小时里没有别的自检;盘在休眠时会推迟到唤醒后。

收到邮件但不知道严不严重。 邮件里会写明是哪个属性变了。5、197、198 号变化最值得认真对待:先确认数据已有备份,再决定是否换盘。

温度告警总是触发。 检查散热和风扇;也可能是「最大」设得太低。

参考资料 ​

OpenMediaVault 非官方中文使用指南,与 openmediavault 项目及其开发者无隶属关系。