ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

硬盘SMART健康状态监控:参数解读、巡检脚本与告警实战

硬盘SMART健康状态监控:参数解读、巡检脚本与告警实战 硬盘这玩意儿坏起来从来不打招呼。我见过太多人是在开机突然进不了系统、或者拷贝文件卡成幻灯片的时候才想起来问“我硬盘是不是要坏了”。那时候往往已经晚了盘上那些照片、代码、项目资料,恢复起来的代价比买十块新硬盘都贵。真正靠谱的做法,是在硬盘还“活着”的时候,就定期去看它的SMART数据,把硬盘信息和健康状态摸清楚。SMART 全称 Self-Monitoring, Analysis and Reporting Technology,翻译过来就是“自我监测、分析及报告技术”,它是硬盘固件里内建的一套健康汇报机制,从 1990 年代沿用至今,几乎每一块机械硬盘和固态硬盘都支持。这篇文章就是写给那些手上有几块盘、不管是家用 NAS、公司服务器、还是自己台式机装机的人看的。我不打算只给你甩几个命令就完事,而是把 SMART 那些看不懂的原始数值一个个拆开讲,告诉你哪个数字在报警、哪个数字是虚惊一场,顺手给你一套能直接抄作业的巡检脚本和告警配置。看完你至少能做到一件事:在任何一块盘彻底咽气之前,提前知道它快不行了。1. 先把SMART这件事想明白别把它当玄学1.1 SMART到底在监测什么用体检报告打个比方很多人第一次跑smartctl -a看到一屏密密麻麻的十六进制表格,第一反应是“这啥玩意儿,看不懂”。其实你就把它当成一份体检报告。血常规里有白细胞、红细胞、转氨酶这些指标,每一项都有一个“正常参考范围”;SMART 也一样,它给每块盘定义了若干个属性(Attribute),每个属性有自己的ID 编号、当前标准化值(Value)、最差值(Worst)、阈值(Threshold)和一大串原始值(Raw)。体检报告上医生关心的是哪项超标了,SMART 关心的就是哪个属性的标准化值掉到了阈值附近,或者原始值的增长趋势不对劲。关键在于,SMART 不是拍个片子告诉你“你有病”,它是长期记录一块盘从出厂到现在的各种累计数据:通电了多少小时、启停了多少次、磁头加载了多少回、有没有出现过读不出来的扇区、温度最高到过多少度。这些数据本身不判断好坏,是你根据它们的变化速度来判断。举个最典型的例子,05 重映射扇区计数(Reallocated_Sector_Ct)。硬盘出厂时会给每个盘面留一部分备用扇区,当固件发现某个扇区反复读写失败,就会把这个坏扇区标记掉,把数据挪到备用扇区去,同时把 05 的原始值加一。原始值是 0,说明这块盘到现在一个坏道都没出现过,状态很好;原始值是几十、几百,而且还在往上涨,那就意味着盘面正在持续劣化,备用扇区迟早会用完,用完那天盘基本就报废了。所以读 SMART,重点不是看某一个瞬间的绝对值,而是看它在时间轴上的斜率。这里必须强调一个认知:SMART 只能预警一部分故障。业界有个大致的统计,大约 60% 到 70% 的机械硬盘故障在发生前会伴随 SMART 属性异常,剩下那 30% 多属于“猝死”——固件突然崩、电路板烧、磁头瞬间撞盘,这些情况 SMART 根本来不及报。所以 SMART 通过了不代表盘就绝对安全,它是一道重要的防线,但不是唯一的防线。真正稳妥的策略是 SMART 监控 定期备份 阵列冗余三层叠加,任何单一手段都不能当救命稻草。1.2 什么人最该把SMART纳入日常如果你只是普通家用,一块盘装着系统和资料,那至少也该装个图形化工具让它在后台盯着,别等蓝屏了才慌。如果你在跑 NAS、家庭服务器,或者公司里管着几台存储节点,那 SMART 监控就不是“可选项”而是“必选项”,因为盘多了一旦坏一块,你得第一时间知道是哪块、坏到什么程度、RAID 还能不能撑到换盘。我自己手上有一个四盘位的存储盒子,常年 7×24 运行,里面有两块企业级盘已经通电超过五万小时,靠的就是每周自动跑 SMART 长检测加邮件告警,有一块盘的 197 属性就是这样提前两个月被发现异常,从容换掉的,数据一点没丢。还有一类人容易被忽略:做视频剪辑、跑本地大模型、搞数据采集的。这些场景对硬盘的写入量(TBW)和温度特别敏感,尤其是 NVMe 固态,主控过热降速、闪存颗粒写穿都是真实存在的,而这些信息全在 SMART 里。总的来说,只要你的数据有价值、只要这块盘还在承担写入任务,你就该学会看它的 SMART。下面我按平台把工具和命令铺开讲,从 Linux 到 Windows 到 mac,再单独说 NVMe 固态的特殊处理。2. SMART核心参数拆解哪些数字真的决定硬盘生死2.1 机械硬盘必须盯死的几个关键ID面对几十个属性,新手最容易犯的错是全都看一遍,结果抓不住重点。我按重要程度给你排个序,机械盘上这几个 ID 是我的“重点关照对象”:ID属性名称含义危险信号05Reallocated_Sector_Ct重映射扇区计数原始值非 0 且持续增长187Reported_Uncorrect无法纠正的错误原始值大于 0197Current_Pending_Sector待映射扇区计数原始值大于 0198Offline_Uncorrectable离线不可纠正原始值大于 0199UDMA_CRC_Error_Count接口 CRC 错误持续增长,多为线材问题09Power_On_Hours通电小时数参考用,判断盘龄194Temperature_Celsius温度长期高于 50 度要警惕C5 / C6对应 197 / 198 的别名部分厂商编号同上看原始值这里有个特别容易踩的坑,我得提前说。不同厂商对同一个属性的编号和解释是不一样的。比如希捷(Seagate)习惯用 187、197、198 这套标准编号,而西部数据(WD)有些型号会用 C5、C6 来表示待映射和不可纠正,东芝(Toshiba)又是另一套。你如果拿着一张“希捷属性表”去套 WD 的盘,分分钟看错。所以看属性之前,先确认盘的品牌和型号,smartctl -i会把型号打出来,对着厂商的属性定义表再读。再重点说 197Current_Pending_Sector(待映射扇区)。这个属性非常有意思:它表示“有扇区读取出错了,但还没决定要不要重映射”。它可能自己消失(说明那次读取错误是偶发的,扇区其实没坏),也可能转化为 05(说明确认坏了,被重映射掉)。所以当你看到 197 从 0 变成 1、2,不要立刻吓自己,先跑一次长检测,再观察它是否变成 05 或者归零。如果是缓慢增长然后稳定,可以继续用但加强备份;如果是短时间内从 0 冲到几十,那就别犹豫了,直接准备换盘。我个人的经验线是:05 和 197 加起来的原始值超过 10,并且在一周内还在增长,这盘就该退休了。2.2 标准化值、最差值、阈值三者到底是什么关系很多人看不懂 Value、Worst、Threshold 这三列,觉得为什么有的盘 Value 是 100,有的是 200,有的是 253。这里解释一下底层逻辑:这三个值都用 1 到 253 之间的数字表示(0 和 254、255 有特殊含义),数值越大代表越健康。硬盘厂商在出厂时会设定一个初始值,常见的是 100 或 200,每次对应的事件发生,这个值就往下降一点。Threshold 阈值是厂商定的底线,一旦 Value 降到小于等于阈值,smartctl就会把整体健康状态判为 FAILED。关键的点来了:标准化值的下降幅度和原始值的增长不是简单的线性关系,而是由厂商的固件算法决定的。这就是为什么不能只看 Value 高低来判断严重程度。比如某块盘的 05 属性,原始值从 0 变到 1,标准化值可能纹丝不动还是 100;但另一块盘原始值还是 1,标准化值可能已经从 100 掉到了 99。所以我的判断原则是:优先看原始值(Raw)的绝对量和增长趋势,标准化值只用来看是否已经逼近阈值。当 Value 还在 90 以上、离阈值(通常是 10 或 36)还远的时候,不用过度紧张,盯住增长就行。另外提醒一句,有些属性的原始值不是纯数字,而是带单位的。比如 09 通电小时数,smartctl会直接显示成类似25920这样的小时数;194 温度会显示成35 (Min/Max 20/48)这种格式,中间那个 Min/Max 是历史最低最高温度,非常有用。而 NVMe 盘就完全是另一套体系了,它没有传统的属性 ID,而是用百分比和计数器来表达,后面单独讲。3. 主流平台下的完整实操从命令行到图形界面3.1 Linux下用smartctl把一块盘从里到外看个透Linux 是看 SMART 最原汁原味的地方,工具就是smartmontools这个包。先装:# Debian/Ubuntu 系 sudo apt update sudo apt install smartmontools # RHEL/CentOS/Rocky 系 sudo dnf install smartmontools # Arch 系 sudo pacman -S smartmontools装完之后第一步不是急着查盘,而是先让工具扫描出系统里到底有哪些盘,这一步能帮你避开“设备名写错”的低级错误:sudo smartctl --scan输出大概长这样:/dev/sda -d scsi # /dev/sda, SCSI device /dev/sdb -d sat # /dev/sdb, ATA device /dev/nvme0 -d nvme # /dev/nvme0, NVMe device注意每行后面那个-d参数,这叫设备类型,非常重要。普通 SATA 直连的盘是sat或ata,USB 硬盘盒里的盘往往需要显式指定-d sat,某些老式 RAID 卡后面的盘要用-d megaraid,N这种方式,否则你查半天得到的是“Unknown USB bridge”之类的结果。确认了设备名之后,先看基本信息:sudo smartctl -i /dev/sda这条命令给你盘的型号、序列号、固件版本、容量、是否支持 SMART、以及当前 SMART 是否被启用。如果看到SMART support is: Disabled,那就得先启用:sudo smartctl -s on /dev/sda信息确认没问题,就可以拉完整的健康数据了。我一般直接上-a,一次性把所有信息打出来:sudo smartctl -a /dev/sda如果想更清爽地只看健康结论,用-H:sudo smartctl -H /dev/sda # 输出示例: # SMART overall-health self-assessment test result: PASSEDPASSED说明整体判定通过,FAILED就是明确报警了。但记住前面说的,PASSED 只是“没触发阈值”,不代表完美。想真正做一次深度体检,得跑自检。自检分短检和长检:# 短检,大概一两分钟,测电路和磁头基本功能 sudo smartctl -t short /dev/sda # 长检,机械盘可能要几个小时,全盘扫描每个扇区 sudo smartctl -t long /dev/sda自检是异步的,发出去之后它自己跑,不会卡住你的终端。跑完用下面这条查结果:sudo smartctl -l selftest /dev/sda长检尤其值得定期跑,因为它是真正把盘面从第一个扇区扫到最后一个扇区,任何物理坏道都藏不住。我建议机械盘每月跑一次长检,固态盘因为不需要机械动作,跑短检加看磨损就够了。长检期间盘还能用,但性能会打折,所以安排在夜里跑比较合适。3.2 Windows下用CrystalDiskInfo和smartctl双管齐下Windows 上最省心的方案是CrystalDiskInfo,开源免费,傻瓜式。装完打开,它自动列出所有盘,用颜色告诉你状态:蓝色正常、黄色注意、红色危险。界面上一眼看得到温度、通电时间、通电次数、以及每个关键属性的当前值和原始值。它还支持常驻托盘、开机自启、温度过高弹窗告警,对于不想碰命令行的普通用户来说,这是最推荐的入门工具。另一个同类工具是HD Tune和Hard Disk Sentinel,后者在告警和报告方面做得更细,但免费版功能受限。我的建议是 CrystalDiskInfo 打底,需要深挖的时候再上命令行。如果你想像 Linux 那样用smartctl,Windows 也能装,下载smartmontools的 Windows 安装包即可,装完它会带一个 GUI,或者你用 PowerShell / CMD 调用:# 扫描设备 smartctl --scan # 查看某个盘的完整信息 smartctl -a /dev/sda # 查看健康结论 smartctl -H /dev/sdaWindows 下特别要提醒几件事。第一,smartctl通常需要用管理员权限运行,否则拿不到底层访问,会报“Permission denied”。第二,如果盘是接在 USB 硬盘盒上的,照样可能要加-d sat,而有些廉价硬盘盒的桥接芯片干脆不支持透传 SMART,这种情况下无论用什么工具都读不出数据,只能把盘拆下来直连主板。第三,Windows 自带的“磁盘检查”和“优化驱动器”跟 SMART 是两回事,前者管文件系统,后者才是看盘体健康,别搞混。3.3 macOS上怎么读SMARTmac 相对封闭,但也不是没办法。最直接的是用smartctl,通过 Homebrew 装上:brew install smartmontools sudo smartctl --scan sudo smartctl -a /dev/disk0注意 mac 上的设备名是/dev/disk0、/dev/disk1这种,不是/dev/sda。如果你用的是 Apple 原装盘,它可能对第三方 SMART 读取有限制,但大多数外接盘和第三方 SSD 都能正常读。此外,mac 自带的“磁盘工具”里,选中磁盘后会显示一个S.M.A.R.T. 状态,直接写“已验证”或“即将故障”,这就是系统帮你读了 SMART 结论,虽然信息量少,但日常够用。想深入分析还是得靠smartctl的完整输出。3.4 NVMe固态硬盘要换个姿势看健康前面讲的属性 ID 那套是机械盘(ATA/SATA)的逻辑,NVMe 固态走的是完全不同的协议,smartctl读出来的字段是不一样的。直接:sudo smartctl -a /dev/nvme0你会看到一批 NVMe 专有字段,重点盯这几个:Percentage Used:厂商预估的寿命消耗百分比,0 到 100,写满 100 表示达到设计写入寿命(TBW),不是立刻坏,但风险上升。Available Spare:剩余备用块百分比,低于阈值(Threshold)会报警,表示坏块太多备用不够了。Media and Data Integrity Errors:数据完整性错误计数,这个必须是 0,一旦非 0 就是严重信号。Unsafe Shutdowns:非正常关机次数,频繁断电会伤盘。Temperature:NVMe 对温度敏感,超过 70 度主控通常会降速,长期高温加速老化。# 只看 NVMe 健康相关,更清爽 sudo smartctl -H /dev/nvme0 sudo nvme smart-log /dev/nvme0 # 需要 nvme-cli 包我特别提醒一点:很多消费级 NVMe 盘的“健康度”是厂商用一个简单公式算出来的,参考价值有限。真正要判断一块固态的状态,得把Percentage Used、Available Spare、写入量(Data Units Written)三个数据放一起看。写入量在 NVMe 里通常以“多少个 512KB 单元”记,乘一下能换算出 TBW 消耗,和官方标称寿命一对比,心里就有数了。顺带说一句,固态盘不像机械盘那样有物理坏道,它的失效模式更多是主控挂掉或者固件异常,所以 SMART 对固态的预测能力比机械盘还要弱一些,备份更是刚需。4. 让硬盘自己报警自动化巡检与告警配置4.1 用smartd守护进程做7×24监控手动敲命令只适合偶尔查一次,真正省心的是让系统自己在后台盯着。smartmontools自带一个守护进程叫smartd,Linux 上装好包就跟着来了。它的工作方式是:读取配置文件,按你设定的周期自动跑自检,一旦发现属性超过阈值或者自检失败,就通过邮件、系统日志或者执行脚本告警。配置文件在/etc/smartd.conf。一个实用的配置长这样:# /etc/smartd.conf # -a 监控所有属性 # -o on 开启自动离线数据收集 # -S on 开启属性自动保存 # -s (S/../.././02|L/../../7/03) 每周日凌晨2点短检,每周日3点长检 # -m 邮箱 -M exec 触发脚本 /dev/sda -a -o on -S on -s (S/../.././02|L/../../7/03) -m adminexample.com -M exec /usr/local/bin/smart-alert.sh /dev/sdb -a -o on -S on -s (S/../.././03|L/../../1/04) -m adminexample.com配置好之后启动服务:sudo systemctl enable --now smartd sudo systemctl status smartd这里有个我踩过的坑要分享:很多系统默认没装邮件发送能力,smartd 试图发邮件会静默失败,你以为有告警其实收不到。所以最稳妥的做法是用-M exec挂一个自定义脚本,脚本里干你想干的事——发企业微信、写日志、亮灯、甚至调用 API,都行。这样不依赖系统邮件配置,可靠性高得多。下面这个脚本就是个简单例子:#!/bin/bash # /usr/local/bin/smart-alert.sh # smartd 会把告警详情通过环境变量 SMARTD_* 传进来 { echo 时间: $(date %Y-%m-%d %H:%M:%S) echo 设备: $SMARTD_DEVICE echo 故障: $SMARTD_FAILTYPE echo 消息: $SMARTD_MESSAGE } /var/log/smart-alert.log # 这里可以改成 curl 调用你的告警接口4.2 写一个自己的定时巡检脚本如果你觉得 smartd 的告警不够灵活,或者想把数据集中收集起来做趋势分析,那就自己写脚本。核心思路很简单:定时跑smartctl,把关键属性的原始值抽出来存到数据库或者 CSV,超过自定义阈值就告警。下面这段 Python 是我常用的骨架,依赖smartctl和smartmontools:import subprocess import re import json from datetime import datetime DEVICES [/dev/sda, /dev/sdb, /dev/nvme0] # 机械盘要重点监控的属性ID - 人类可读名字 KEY_ATA { 5: 重映射扇区, 187: 无法纠正错误, 197: 待映射扇区, 198: 离线不可纠正, 199: 接口CRC错误, } def check_ata(dev): out subprocess.run([smartctl, -A, dev], capture_outputTrue, textTrue).stdout report {device: dev, time: datetime.now().isoformat(), issues: []} for line in out.splitlines(): m re.match(r\s*(\d)\s(\S)\s0x\S\s\d\s\d\s\d\s\S\s\S\s(\d), line) if not m: continue attr_id, name, raw m.group(1), m.group(2), int(m.group(3)) if attr_id in KEY_ATA and raw 0: report[issues].append( f属性 {attr_id} {KEY_ATA[attr_id]} 原始值{raw}) return report def check_nvme(dev): out subprocess.run([smartctl, -a, dev], capture_outputTrue, textTrue).stdout report {device: dev, time: datetime.now().isoformat(), issues: []} used re.search(rPercentage Used:\s(\d)%, out) spare re.search(rAvailable Spare:\s(\d)%, out) errs re.search(rMedia and Data Integrity Errors:\s([\d,]), out) if used and int(used.group(1)) 85: report[issues].append(fNVMe寿命已用 {used.group(1)}%) if spare and int(spare.group(1)) 10: report[issues].append(fNVMe备用块仅剩 {spare.group(1)}%) if errs and int(errs.group(1).replace(,, )) 0: report[issues].append(NVMe出现数据完整性错误,立即备份) return report if __name__ __main__: results [] for d in DEVICES: if nvme in d: results.append(check_nvme(d)) else: results.append(check_ata(d)) print(json.dumps(results, ensure_asciiFalse, indent2))这个脚本的阈值是我自己用的经验值:NVMe 寿命用到 85% 提醒、备用块低于 10% 提醒、数据完整性错误非零立即报警。机械盘只要那五个关键属性里任何一个原始值大于 0 就上报。你可以把它挂到 crontab 里每天跑一次:# 每天早上 8 点巡检 0 8 * * * /usr/bin/python3 /opt/scripts/smart_check.py /var/log/smart_check.log 214.3 把SMART数据接进现有监控体系如果你手上有 Zabbix、Prometheus 这类监控系统,完全可以把 SMART 数据做成指标接进去,实现可视化趋势图。Prometheus 生态里有个smartctl_exporter,能把smartctl的输出转成标准 metrics,然后用 Grafana 画图。这样你能直观看到某个属性的长期曲线——是平平稳稳趴在地上,还是像爬楼梯一样往上走。趋势图的价值比单次快照大得多,因为硬盘劣化是渐进的,一条上升的曲线比任何单点数值都更能说明问题。# smartctl_exporter 示例配置思路 # 安装后它会暴露 :9633/metrics # 在 prometheus.yml 里加一个 scrape target 指向它 scrape_configs: - job_name: smartctl static_configs: - targets: [localhost:9633]接入监控之后,再配一条告警规则:当 05 或 197 的原始值在 24 小时内增长超过 5,或者 NVMe 的 Available Spare 掉到阈值以下,就触发通知。这套组合下来,你基本上不用再手动惦记盘的事,系统会替你把该盯的都盯住。我现在的存储盒子就是这套架构,三年下来提前淘汰了两块正在劣化的盘,一次数据都没丢过。5. 常见报错和误判这些坑我都替你踩过了5.1 遇到ATA error count报错别慌先分清是盘还是线不少人在看 SMART 时会看到类似这样的行:SMART Error Log Version: 1 ATA Error Count: 26 (device log contains only the most recent five errors)ATA Error Count: 26意思是从出厂到现在累计发生过 26 次 ATA 层错误。看到这个数字很多人立刻慌了,以为盘要完。其实这个错误日志记录的往往是通信层面的问题,而不是磁介质本身的坏道。它可能来自劣质的 SATA 数据线、供电不稳、热插拔、或者驱动超时。判断方法很简单:去看199 UDMA_CRC_Error_Count这个属性。如果 199 的原始值一直在涨,而 05、197 都是 0,那基本可以确定问题出在线材或接口上,换一根质量好的 SATA 线、换一个主板接口,重新插紧,错误就不再增加了。我遇到过好几次客户抱怨硬盘“报错”,结果换根线立马干净,盘本身好得很。反过来,如果 ATA Error Count 在涨,同时 05 或 197 也在涨,那才是真正要担心介质问题的信号。所以看错误日志一定要和属性表结合着看,不能单独拿一个数字下结论。另外这条日志里的device log contains only the most recent five errors是说硬盘固件只保留最近五次详细记录,想看更早的得靠smartctl -l error -x拉扩展信息。5.2 读不到设备、读不到SMART的几种典型情况我总结了常见的“查不到盘”场景,做成了速查表:现象可能原因解决方向Unknown USB bridgeUSB 桥接芯片不透传 SMART加-d sat,或把盘直连主板Permission denied权限不足加 sudo 或以管理员运行设备不存在设备名写错先跑smartctl --scan确认真实名称RAID 卡后读不到磁盘被阵列卡接管用-d megaraid,N指定槽位SMART support: Disabled固件里 SMART 未开启用-s on启用全是 0 或乱码设备类型不对尝试-d ata、-d scsi、-d sat这张表里的每一行我都实际碰到过。最典型的是 USB 硬盘盒,尤其是那种十几块钱的免驱盒子,桥接芯片为了省成本根本不实现 SMART 透传,你换什么工具都读不出来。解决办法只有一个:把盘拆出来直连主板 SATA 口,或者换一个明确标注支持 SMART 透传的硬盘盒。RAID 卡的情况稍微复杂,不同的卡参数不一样,得查卡的手册确认是用megaraid、3ware还是areca前缀。5.3 别被健康度100%骗了警惕假报警和假安心SMART 有两个方向的误导,一个是吓人,一个是骗人。吓人的情况前面说了,比如偶发的 197 待映射扇区,可能自己就消失了。还有一种,某些消费级固态为了让用户“看着放心”,把健康度算法调得特别乐观,一块实际已经写了几百 TB 的盘,它还能显示健康度 98%,这种数字参考价值很低,你得去看真实的写入量和 Percentage Used。骗人的情况更危险:某些盘在即将彻底失效前,SMART 所有属性都是正常的,因为失效是固件崩溃或主控挂掉导致的,属于“非预测性故障”。这就是为什么我在开头强调,SMART 通过不等于盘安全。我的原则是:SMART 是加分的辅助线,备份才是底线。任何一块承载重要数据的盘,都该有独立备份,RAID 不能替代备份,因为 RAID 防的是单盘物理故障,防不了误删、勒索、固件级错误和整机意外。还有一个容易被忽略的误判来源:虚拟机环境。如果你在虚拟机里跑smartctl,读到的往往是宿主机的虚拟设备,不看真实的物理盘。要在虚拟化环境里监控物理盘,得在宿主机层面操作,或者把 SMART 直通给虚拟机。这一点做运维的同行应该都踩过。6. 我这些年看SMART攒下的一些实操心得说了这么多工具和参数,最后分享几个不那么“教科书”、但特别实用的经验。第一,给每块盘建个档。我习惯在盘刚刚上线的时候就跑一次完整的smartctl -a并保存输出,记下出厂基线数据。以后每次对比,就能一眼看出哪些数值变了。没有基线,你永远不知道一个原始值 3 是“一直都是 3”还是“从 0 涨到 3”,而这俩情况意义完全不同。这个档案我一般存成序列号_日期.txt,归档在存储服务器上。第二,重点关注增速而不是存量。一块通电八万小时的老盘,05 属性有 3 个重映射扇区,我可能觉得还好;但一块才通电两千小时的新盘,05 从 0 涨到 3,我立刻就会警觉。同样的数字,在不同的盘龄下,含义完全不一样。判断一块盘要不要换,我一般看两条线:一是关键属性原始值的绝对量是否超过我的红线(05197 合计超过 10);二是它在一个监测周期内的增长速率是否明显抬头。两条里中一条就该行动了。第三,温度是被严重低估的杀手。很多人装多块盘堆在一个小机箱里,盘贴盘,温度常年 55 度以上,机械盘的寿命会明显缩短,固态盘的高温降速更是家常便饭。我给自己所有的存储设备都加了风道和风扇,让机械盘稳在 40 度以内、NVMe 主控低于 60 度。看温度的方法就是前面提到的 194 属性,它会给出 Min/Max 历史值,如果 Max 那栏长期超过 50,赶紧想办法改善散热。这个投入比换硬盘便宜太多。第四,换盘要趁好换,不要等坏换。这是很多人想不通的一点:既然 SMART 显示还能用,为什么要提前换?因为在 RAID 阵列里,一块盘劣化时你主动更换,重建过程是可控的;等它彻底挂了再换,重建时因为长时间高强度读写,很可能把阵列里另一块本就不太健康的盘也拖垮,那就从单盘故障升级成阵列崩溃了。所以我的策略是,一旦确认某块盘在持续劣化,挑个业务低峰期从容换掉,别赌。第五,把SMART和备份结合起来才完整。我见过太多人把全部希望寄托在 SMART 监控上,结果盘是猝死型故障,SMART 一声没吭,数据全没。真正稳的架构是:SMART 监控负责提前预警,后台自动备份负责兜底,重要数据再有一份异地副本负责极端情况。三者各司其职,谁也替代不了谁。硬盘是很便宜的东西,数据才是无价的。把巡检脚本挂上,把告警接好,把备份跑起来,然后你就可以安心地忘掉硬盘这件事了——它出问题的时候,系统会先一步告诉你。
返回列表