我有一个 24/7 始终在线的基于 Debian Jessie 的无头家庭服务器,它有一个大型 1TB SSD,用于操作系统和我所有经常访问的文件。该系统在 SnapRAID 阵列中具有 4 个较大的硬盘驱动器。这些主要用于归档不常访问的蓝光光盘,并希望这些驱动器保持旋转状态以等待,除非我实际读取或写入它们。它们全部格式化为 ext4,并在启用 noatime 和 nodiratime 的情况下安装。
因此,即使没有任何进程或程序应该以任何直接方式定期访问这些驱动器,硬盘驱动器也会不断从待机状态旋转。它似乎与提供 gui 文件浏览器的图形程序有关,甚至是像 Chromium 这样的东西。如果我什至不浏览这些驱动器,我就会认为这些过程只需获取可用驱动器列表即可启动硬盘。就像 blkid 那样。问题是,很难确定其根本原因,因为这些进程实际上都没有读取或写入这些驱动器上的文件系统,因此没有文件实际更改或被触及。是否有某种我可以填充的缓存或缓冲区来防止这些程序仅通过获取可用磁盘列表来旋转硬盘驱动器?老实说,这让我发疯,因为即使无法直接访问文件系统,我也找不到可靠的方法来保持这些磁盘的转速。
更新:感谢斯蒂芬的回答,我能够跟踪磁盘活动重力加速度和尤迪卡。真正令人遗憾的是,这些进程坚持唤醒处于待机状态的磁盘,而实际上并未访问它们以对文件系统执行任何实际 I/O。到目前为止,我只是卸载了它们,因为我知道它会删除 PCManFM 等的一些功能。
答案1
您可以使用blktrace
(可用的在 Debian 中)跟踪给定设备的所有活动;例如
sudo blktrace -d /dev/sda -o - | blkparse -i -
要不就
sudo btrace /dev/sda
将显示 上的所有活动/dev/sda
。输出看起来像
8,0 3 51 135.424002054 16857 D WM 167775248 + 8 [kworker/u16:0]
8,0 3 52 135.424011323 16857 I WM 209718336 + 8 [kworker/u16:0]
8,0 3 0 135.424011659 0 m N cfq496A / insert_request
第五列是进程标识符,最后一列当有进程时给出进程名称。
您还可以存储痕迹以供以后分析;blktrace
包括许多分析工具,例如前面提到的blkparse
和btt
.blktrace
是一个非常低级的工具,因此一开始可能不太容易找出导致活动的原因,但可以借助随附的文档(查看/usr/share/doc/blktrace
您是否安装了 Debian 软件包)和blktrace
纸应该可以找出导致旋转的原因。
答案2
请尝试strace
:
strace -f -e open ls
上面的命令应该列出与open
您怀疑导致磁盘旋转的方法相关的所有磁盘活动。
或者,dmesg
可能会为您提供一些有关物理磁盘安装/卸载的信息。
这个网站strace
有一个关于如何监视磁盘活动的很好的指南。
至于填充缓存以停止磁盘 I/O,我怀疑这是可能的,但我可能是错的。