本页目录
每台 DediJet 服务器在加入就绪服务器池之前,都会在烤机测试期间通过 SMART 和 NVMe 健康检查。但硬盘仍会磨损,偶尔也会发生故障,而且通常会先发出预警。有两个工具可以读取这些预警:适用于所有类型硬盘的 smartctl(来自 smartmontools),以及适用于 NVMe 硬盘的 nvme-cli。
安装工具
在 Ubuntu 和 Debian 上:
apt update
apt install -y smartmontools nvme-cli在 AlmaLinux 和 Rocky Linux 上:
dnf install -y smartmontools nvme-cliProxmox VE 已自带 smartmontools。列出硬盘及其序列号;ROTA = 1 表示机械硬盘(HDD):
lsblk -d -o NAME,MODEL,SERIAL,SIZE,ROTA,TRAN读取 HDD 和 SATA SSD 的 SMART 数据
smartctl -a /dev/sda先看 SMART overall-health self-assessment test result 这一行。FAILED 表示必须更换该硬盘。PASSED 仅表示尚无任何属性超过厂商设定的阈值,因此还需查看各项属性,以 RAW_VALUE 列为准:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0
9 Power_On_Hours 0x0032 099 099 000 Old_age Always - 1874
194 Temperature_Celsius 0x0002 200 200 000 Old_age Always - 31
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0| 属性 | 含义 | 需处理的情况 |
|---|---|---|
| 5 Reallocated_Sector_Ct | 已被备用扇区替换的坏扇区 | 非零且在两次检查之间持续增长 |
| 197 Current_Pending_Sector | 等待重映射的不可读扇区 | 任何非零值 |
| 198 Offline_Uncorrectable | 离线扫描中出错的扇区 | 任何非零值 |
| 199 UDMA_CRC_Error_Count | 硬盘与控制器之间的传输错误,通常由线缆或背板引起 | 持续增加:请提交工单,问题出在传输路径而非存储介质 |
| 194 Temperature_Celsius | 硬盘当前温度 | 超过硬盘规格书中的最高温度 |
属性名称和编号因厂商而异,SAS 硬盘则改为报告 Elements in grown defect list。如需查看完整信息(包括硬盘自身的错误日志),请使用 smartctl -x。
读取 NVMe 健康信息
smartctl -a /dev/nvme0
nvme smart-log /dev/nvme0两者读取的是同一份健康日志。/dev/nvme0 是控制器;/dev/nvme0n1 是其命名空间,也就是您进行分区的块设备。
Critical Warning: 0x00
Temperature: 38 Celsius
Available Spare: 100%
Available Spare Threshold: 10%
Percentage Used: 1%
Data Units Written: 5,322,198 [2.72 TB]
Unsafe Shutdowns: 3
Media and Data Integrity Errors: 0
Error Information Log Entries: 0- Critical Warning(严重警告)必须为
0x00。任何其他值(备用块低于阈值、温度异常、可靠性下降、只读模式)都需要立即处理。 - Available Spare(可用备用块)是用于替换的备用块储备。一旦低于阈值,说明硬盘已接近寿命终点。
- Percentage Used(已用寿命百分比)是厂商对额定耐久度消耗程度的估算。该值超过 100% 后硬盘仍可能继续工作,但应计划更换。
- Media and Data Integrity Errors(介质与数据完整性错误)应保持为 0。计数持续增长意味着硬盘已无法可靠地返回您的数据。
- Error Information Log Entries(错误信息日志条目)经常记录一些无害事件,例如工具发送了不受支持的命令。仅凭此项不能判定硬盘故障。
- Data Units Written(已写入数据单元)以 512,000 字节为单位计数;smartctl 会自动为您换算总量。
运行短时和长时自检
自检在硬盘固件内部运行,服务器可照常工作。短时测试通常只需两分钟或更短;长时(扩展)测试会读取整个盘面,在大容量 HDD 上可能长达数小时。测试开始时,smartctl 会显示预计耗时。
smartctl -t short /dev/sda
smartctl -t long /dev/sda
smartctl -l selftest /dev/sda在日志中,Completed without error 是理想结果;带有 LBA 编号的 Completed: read failure 表示硬盘发现了不可读扇区。对于支持自检的 NVMe 硬盘,请使用 nvme-cli(代码 1 = 短时,2 = 扩展);其日志中的操作结果为 0 表示成功。从 smartmontools 7.4 起,smartctl 也能执行同样的操作。
nvme device-self-test /dev/nvme0 -s 1
nvme self-test-log /dev/nvme0先备份。如果硬盘已出现待映射扇区或介质错误,请在开始长时测试之前将数据复制出来:全盘读取会给状态不佳的硬盘带来额外压力。
使用 smartd 定期检查并发送邮件告警
smartd 守护进程每 30 分钟检查一次所有硬盘,并可按计划启动自检。编辑 /etc/smartd.conf(Debian、Ubuntu)或 /etc/smartmontools/smartd.conf(AlmaLinux、Rocky Linux),替换现有的 DEVICESCAN 行,因为 smartd 会忽略该行之后的所有行:
DEVICESCAN -a -n standby,q -s (S/../.././02|L/../../6/03) -m root -M test-a监控健康状态、属性、错误日志和自检日志。-s (S/../.././02|L/../../6/03)每天 02:00 启动一次短时测试,每周六 03:00 启动一次长时测试。在 NVMe 硬盘上,计划自检需要 smartmontools 7.5 或更高版本(可用smartctl --version查看);较旧的版本仍可监控 NVMe 健康状态。-m root通过mail命令向 root 发送告警,因此请安装邮件客户端和邮件传输代理,例如mailutils搭配 Postfix 或 msmtp,并在/etc/aliases中设置别名,将 root 的邮件转发到您自己的邮箱。-M test会在启动时发送一封测试邮件。收到邮件后即可将其删除。
重启守护进程并检查其日志。在 Ubuntu 和 Debian 上:
systemctl restart smartmontools
journalctl -u smartmontools -n 50在 AlmaLinux 和 Rocky Linux 上,该服务名为 smartd:先执行 systemctl enable --now smartd,再执行 journalctl -u smartd -n 50。
何时提交工单
更换故障硬件是服务的一部分:根据我们的 SLA(服务等级协议),故障部件会在确诊后 4 小时内更换,7×24 小时全天候服务。出现以下任一情况时,请提交工单:
- 整体评估结果为
FAILED,或自检失败。 - 重映射扇区持续增长,或出现任何待映射扇区或离线无法校正的扇区。
- NVMe 严重警告不为
0x00、备用块低于阈值,或介质错误持续增长。 - UDMA CRC 错误计数持续增长。
- 有硬盘从 RAID 阵列中掉线,或在
journalctl -k中出现I/O error之类的内核消息或 NVMe 控制器重置。
请在第一条消息中提供以下全部信息,以加快诊断:
- 服务器的 IP 地址、疑似故障的硬盘,以及通过
smartctl -i获取的该硬盘序列号。 - 该硬盘的
smartctl -x完整输出,以附件文件形式提供。 - 使用软件 RAID 时:
cat /proc/mdstat的输出,以及必须保留的那块硬盘的序列号。 - 相关的内核日志行及其时间戳,以及您的数据是否已备份。
使用软件 RAID 时,请按照使用 mdadm 管理软件 RAID 1 中的说明,在更换前做好阵列准备,并在更换后重建阵列。
后续步骤
- 使用可重复的方法测量性能:CPU、硬盘与网络性能测试。
- 通过救援模式修复无法启动的系统。
- 不确定如何解读输出结果?联系技术支持:硬件诊断属于服务范围,7×24 小时提供支持。