我的笔记本电脑有两个驱动器:一个用于操作系统(Kubuntu 20.10)的 SSD 和一个用于媒体存储的 HDD。在 Windows 下,我的 HDD 仅在需要时才会旋转,但在 Linux 下,它一直在旋转,即使我根本不使用它也不会停止旋转。这很烦人,因为它会更快地耗尽我的电池。我 100% 确定这是我的 HDD 而不是 CPU 风扇的问题,因为当我打开它上面的文件夹时,我从未听到 Windows 中众所周知的旋转噪音。
我尝试过许多程序,例如iotop
、、,来找出哪些程序正在我的磁盘上传输数据,但我无法使用它们来显示磁盘(/sdb)活动与我的 SSD(/sda)分开以及可能正在使用它的进程的名称。当我运行 iotop 时,它根本没有显示我的磁盘上有任何数据传输。htop
iostat
dstat
我还尝试了该sudo hdparm -S 12 /dev/sdb
命令,该命令会在 1 分钟不使用后使我的硬盘旋转减速,但它仍然不起作用。
最后,我找到了一个显示磁盘活动的桌面小部件,它经常显示写入峰值,但我仍然不知道是什么原因造成的。
编辑:
将 APM 值设置为低于 128 已经解决了主要问题,但还有另外两个问题:
每次重启后,我的 APM_level 都会被设置回默认值 254。我尝试使用该sudo hdparm -K /dev/sdb
命令,但没有帮助。我还尝试重写hdparm.config
/etc 目录中的文件,但也没有帮助。
这些命令无法正常工作:我尝试了许多 APM 值和hdparm -S
旋转设置,但结果都一样:无论我设置了 -S12 还是 -S36 或其他任何值,即使我的 APM_level 为 127,我的 HDD 都会在半分钟内旋转停止。如果我设置了较低的 APM_level,有时 HDD 会在视频播放期间旋转停止,并且视频会在几秒钟内变得像素化,因为驱动器无法以足够快的速度旋转以向视频播放器提供数据。
因此,唯一影响 HDD spin_down 时间的设置是 hdparm -B,但影响不大。我从未达到超过半分钟的水平。
答案1
这可能会帮助你:
find /{mount point} -mount -newer /proc -print
笔记:确保更改{mount point}
为安装磁盘分区的正确位置。例如: /home/robert
此命令将列出自启动以来文件系统物理设备上修改的所有文件/{mount point}
。如果您可以确定哪些文件正在被访问,那么您可能能够确定哪个进程导致了该问题。
与 Drive 对话
如果命令的输出find
为空或列出数小时/数天/数周/等内未更新的文件,则缺少空闲睡眠可能是由于设备的电源管理设置不允许自动降速造成的。
您可以像这样查询设备的高级电源管理值:
sudo hdparm -B /dev/sdb
你会看到类似这样的内容:
/dev/sdb:
APM_level = 128
来自hdparm
文档对于-B
选项:
如果驱动器支持高级电源管理功能,则获取/设置该功能。低值表示积极的电源管理,高值表示更好的性能。可能的设置范围从值 1 到 127(允许降速)和值 128 到 254(不允许降速)。设置为 1 可获得最高程度的电源管理,设置为 254 可获得最高 I/O 性能。值 255 指示 hdparm 在驱动器上完全禁用高级电源管理(并非所有驱动器都支持禁用它,但大多数驱动器都支持)。
对于上面查询的驱动器,它返回了一个值128
,这意味着“不允许降速”。但是,您可以通过在之后设置一个值来更改此设置-B
:
sudo hdparm -B 64 /dev/sdb
这将(希望)产生以下输出:
/dev/sdb:
setting Advanced Power Management level to 0x40 (64)
APM_level = 64
此时,驱动器将被允许降速。您可以随意将高级电源管理值更改为1
(非常激进的电源管理)和127
(不太激进,但仍允许降速)之间的任何值。此时,系统应该开始遵守-S 12
降速设置。
希望这能给你你想要的东西。