环境及硬件
ubuntu 21.04, nvme: 三星 970 evo plus 2T
背景知识
nvme盘工作时温度如果过高会伤害硬件,所以一般设置了警告温度,当超过阈值时会主动降低读写速度以达到降温的目的。(未验证成功)
需求
在linux系统中,查看/修改 nvme盘的警告温度。
命令
- 查询nvme盘的实时温度
sensors
输出:
说明:
(a) 该命令为查看所有传感器的温度,在返回内容中找到 nvme
字样的返回值即可。
(b) 以上述返回信息为例,每块nvme盘涉及到3个温度:composite,sensor1,sensor2
。在我的case中,综合温度(composite
)与sensor1
的温度一致;升温最高的是sensor2
。而预设的温度阈值是针对composite
的,因此如果要真的达到警告温度,那么sensor2
可能已经很高了。为何sensor2的温度不作为监控信号,原因不知。
- 查询警告温度
sudo apt install nvme-cli
sudo nvme set-feature /dev/nvme0n1p2 -f 0x04
说明:0x04
表示查询温度
输出:
get-feature:0x4 (Temperature Threshold), Current value:0x000166
说明:
0x000166
为16进制的开尔文温度,开尔文温度-273=摄氏度,因此此处为85摄氏度。
- 手动修改警告温度
sudo nvme set-feature /dev/nvme0n1p2 -f 0x04 -v 0x166
说明:0x166
为要设置的温度,此处为16进制的开尔文温度,开尔文温度-273=摄氏度。
其他
一些参考资料显示,如果超过预设温度,硬盘会主动降低读写速度,以达到降温、保护电路的目的。但我实际测试的过程中,当超过预设温度(55摄氏度)时,只是在sensors
命令中显示了ALLERT
字样,(看起来)并没有降低读写速度,甚至超过阈值后,温度还在缓慢上升。
参考:
硬件手册: https://docs.broadcom.com/doc/12381993 (24页)
博客:https://blog.csdn.net/weixin_44565193/article/details/122479419