
NAS的硬盘是整个系统的核心资产,一旦硬盘出现故障导致数据丢失,损失往往是灾难性的。虽然群晖、威联通等系统都提供了基本的SMART监控功能,但想要获得更全面、更灵活的硬盘健康预警,我们需要在NAS上部署专业的监控工具。Smartmontools配合HDDTemp,就是一套成熟的开源解决方案。
理解SMART技术:硬盘健康的"体检报告"
SMART(Self-Monitoring, Analysis and Reporting Technology)是现代硬盘内置的自我监测分析报告技术。它会持续监测硬盘的各项健康指标,包括重分配扇区数、磁盘重新分配事件、寻道错误率、温度等关键参数。当某个指标接近阈值时,就意味着硬盘可能即将出现故障。
Smartmontools是一套跨平台的SMART监控工具,支持SATA、SAS以及NVMe硬盘。它不仅可以读取SMART数据,还能进行短时/长时的自检测试。安装非常简单:
# Ubuntu/Debian
sudo apt install smartmontools
# CentOS/RHEL
sudo yum install smartctl在NAS上直接安装包管理器版本后,就可以开始监控了。
Smartctl实战:读取硬盘健康数据
查看所有硬盘的SMART概览:
smartctl --scan这会列出NAS上所有可用的硬盘设备。然后查看特定硬盘的详细信息:
smartctl -a /dev/sda输出的信息非常丰富,包括硬盘型号、序列号、容量、固件版本,以及Power On Hours(通电时长)、Reallocated Sectors Count(重分配扇区数)等关键健康指标。重点关注以下数值:
Reallocated Sectors Count:重分配扇区数。当硬盘发现坏扇区时,会将数据迁移到备用扇区。这个数值越高,说明硬盘老化越严重。Raw Value从0开始增长就需要警惕。
Current Pending Sector Count:待处理扇区数。这些扇区等待被重新分配。如果这个数值持续增长,说明硬盘正在恶化。
Temperature:硬盘温度。持续高于45°C会显著缩短硬盘寿命,需要改善散热。
自动化告警:让监控真正发挥作用
光有数据还不够,我们需要让NAS主动告警。将以下脚本加入Cron定时任务:
#!/bin/bash
ALERT_EMAIL="your@email.com"
for disk in /dev/sda /dev/sdb /dev/sdc /dev/sdd; do
if [ -b "$disk" ]; then
result=$(smartctl -H $disk | grep "SMART overall-health")
if ! echo "$result" | grep -q "PASSED"; then
echo "Warning: $disk health check failed!" | mail -s "NAS Disk Alert" $ALERT_EMAIL
fi
fi
doneHDDTemp则专注于温度监控,可以通过Smartd守护进程实现持续监测:
sudo apt install hddtemp
sudo systemctl enable hddtemp
echo 'DEVICES="/dev/sda /dev/sdb /dev/sdc /dev/sdd"' | sudo tee /etc/default/hddtemp
sudo systemctl start hddtemp配合Grafana仪表盘,你可以在浏览器中直观地查看所有硬盘的温度历史曲线和健康状态变化趋势,真正实现预测性维护。


评论(0)