环境及硬件

ubuntu 21.04, nvme: 三星 970 evo plus 2T

背景知识

nvme盘工作时温度如果过高会伤害硬件,所以一般设置了警告温度,当超过阈值时会主动降低读写速度以达到降温的目的。(未验证成功)

需求

在linux系统中,查看/修改 nvme盘的警告温度。

命令

  1. 查询nvme盘的实时温度
sensors

输出:
请添加图片描述

说明:
(a) 该命令为查看所有传感器的温度,在返回内容中找到 nvme 字样的返回值即可。
(b) 以上述返回信息为例,每块nvme盘涉及到3个温度:composite,sensor1,sensor2。在我的case中,综合温度(composite)与sensor1的温度一致;升温最高的是sensor2。而预设的温度阈值是针对composite的,因此如果要真的达到警告温度,那么sensor2可能已经很高了。为何sensor2的温度不作为监控信号,原因不知。

  1. 查询警告温度
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摄氏度。

  1. 手动修改警告温度
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

Logo

更多推荐