前情提要:空闲2.5英寸机械硬盘,直接放到PVE上测试NAS 使用,通过SATA线的方式让小主机不太美观,并且失去了前期调试的安全性。购入移动硬盘盒,缺点,USB 连接,会失去一些特性。比如本文中遇到的问题。
全过程分析,一文通关解决。
问题:
USB硬盘盒连接的机械硬盘不能直接显示smart 信息,解决让其显示smart状态。
通过脚本和调整,已经成功将cpu温度,风扇转速,主板温度,NVMe信息,统一展示在PVE 概要中。详细优化更加美观简洁的途径:
PVE的优化与温度监控(三)—数据界面精简美化-CSDN博客文章浏览阅读49次,点赞2次,收藏2次。首先阅读源码,恩山大佬的方式是全部展示,但是有很多数据是我们在快速管理页面根本不需要注意的数据,但是恩山大佬的显示方式不够DIY 并不能够自己任意选择需要监控的数据,就想某种monitor软件一样,可以在电脑的副屏展示很多参数。如果通过这篇文章来操作优化:PVE的优化与温度监控(一)-CSDN博客文章浏览阅读143次。【代码】G37-14 软路由小主机中PVE8.x 的优化与温度监控。那么你应该看到的状态是这样的:对个人来说过于冗余,不够直观迅速需求:确定需要的参数并单独归类,按需打开显示。https://blog.csdn.net/KeyBordkiller/article/details/143951145?spm=1001.2014.3001.5501
1.调整smartctl 命令获取硬盘的smart全部信息。
smartctl --all /dev/sda
由于usb桥无法直接判断,那么我们给他加个条件
smartctl -d sat /dev/sda -a -H -j
成功显示硬盘盒smart 信息的命令,接下来就可以操作pve的web 后端代码来调取smart信息。
2.由于pve 管理页面不显示smart 信息,是由于usbbridge 导致的问题,那么直接进入pve 源码,针对特殊情况进行调试。
pve 后端使用的perl 直接进入perl 文件夹。
之前对pve 进行温度与硬件信息的显示优化。通过相应文件 在js文件中确认,
在文件目录中索引DISK 关键字可以得到相应文件,最终定位,Diskmanage.pm
通过对文件的分析,DISK.pm中的组件与Diskmanage.pm 中存在关联。
操作文件请先备份
cp /usr/share/perl5/PVE/API2/Diskmanage.pm /usr/share/perl5/PVE/API2/Diskmanage.pm.bak
文件目录通过mobaxterm下载
/usr/share/perl5/PVE/API2/Diskmanage.pm
修改内容为$cmd 的数据
my $cmd;if ($disk =~ m{^/dev/sd[a-z]$}) {$cmd = [$SMARTCTL, '-d', 'sat', '-H']; # avoid Unknown USB bridge } else {$cmd = [$SMARTCTL, '-H']; # normal}
3.重启pvedaemen服务
通过对pve 项目文件目录分析(有时间再写一篇),我们知道pve运行 Perl 的主脚本和管理逻辑主要通过 pvedaemon 以及其他核心服务来实现。
systemctl restart pvedaemon.service
成功看到通过硬盘盒usb bridge的sata 2.5英寸硬盘可以显示smart 信息。