定期查看硬盘的 S.M.A.R.T 信息,有助于及时发现硬盘问题。 我要介绍一个定期自动扫描所有设备的硬盘 S.M.A.R.T 信息,并汇总到一起的解决方案:scrutiny。 scrutiny 需要部署服务端和客户端。服务端部署在长期开机的设备上比如:小服务器、 NAS 。客户端可以部署在局域网内任何需要监控硬盘 S.M.A.R.T 信息的设备上。然后就可以把所有的硬盘信息汇总到一个看板上。 搭建 scrutiny 服务端我的 scrutiny 服务端搭建在 Linux 主机上。使用 docker-compose 搭建: version: '2.4' influxdb: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:1002/api/health"] interval: 5s timeout: 10s retries: 20 start_period: 10s docker-compose up -d 运行 scrutiny 服务后,通过 http://localhost:1002 查看服务端看板。现在还没有部署客户端所以服务端没有信息,所以我们要来部署客户端了。 搭建 scrutiny 客户端Linux 系统部署scrutiny客户端下载 scrutiny 的 Linux 客户端放入目录 /home/john/scrutiny,我设置成每天晚上9点收集一次硬盘信息: #安装必要的程序 #程序添加执行权限 chmod +x /home/john/scrutiny/scrutiny #定时执行 sudo crontab -e 0 0 21 * * * /home/john/scrutiny/scrutiny run --api-endpoint "http://服务端局域网IP:1002" scrutiny 客户端也可以用 docker 部署(我没有验证是否能定时执行): docker run -e COLLECTOR_CRON_SCHEDULE="0 21 * * *" -d Windows 系统部署scrutiny客户端下载 scrutiny 的 Windows 客户端,要想客户端工作还需要安装 smartmontools ,然后用脚本定期执行: @echo on 在计划任务里建立一个定时执行脚本的任务,这样就可以定时同步数据到服务端了(脚本需要以最高权限执行)。 当我们把所有客户端部署完毕,执行后数据自动汇总到服务端,效果就如下图我的9块硬盘都检测到了(唯一 的缺点目前只有英文镜像)。整个过程以后可以每天全自动执行监测,如果健康状态OK则显示为Passed,如果有问题则会显示红色:点击其中一块硬盘即可查看详细数据: 定期检测硬盘健康情况,可以检测到局域网内所有设备的硬盘,有问题的硬盘记得及时备份数据更换。 作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~ ![]() |
|