找出硬盘正在旋转


10

我是NAS的所有者,运行一些Linux发行版。它带有一个Web管理前端,在这里我可以管理多种服务,用户权限以及何时进入睡眠状态。我的问题是,由于某种原因,当NAS进入睡眠状态后,硬盘驱动器将在几分钟后再次打开。然后它将旋转一段时间,然后再次入睡。这一直持续下去。

我该如何确定原因呢?我对Linux非常陌生,但是我设法获得了root访问权限,并且现在有了SSH连接。


是很老的,但可能仍然有相关提示。
吉尔斯(Gilles)'所以

您是否有一些带有NAS盒的Web /前端接口的Analytics / like插件?NAS盒的详细信息是什么?我想知道是否可以在其中使用一些systemtap工具来检查磁盘活动。systemtap仅可用于更高版本的Linux内核。
Nikhil Mulley 2012年

NAS是Lacie d2 Network2。没有插件选项,但我想我可以在其中加载任何内容。它运行一个绿色Unicorn网络服务器。内核是2.6.31.14-svn6790。
安德里亚斯(Andreas)

Answers:


6

inotify-tools是执行此操作的简单方法。他们的站点上有几个示例可以满足您的要求(有关基本示例,请参见inotifywatch示例)。


我目前正在调查。首先,我需要编译ARMv5TE cpu的源代码。这可能证明足够困难:)
Andreas


2

另一个技巧:使用Systemtap,systemtap网站上有许多探测脚本,足以找到罪魁祸首。

在另一种情况下,

如果要找出导致磁盘旋转的进程,可以通过设置标志来收集信息/proc/sys/vm/block_dump。设置此标志后,Linux将报告发生的所有磁盘读写操作,以及对文件所做的所有块弄脏。这样就可以调试为什么磁盘需要旋转,并可以延长电池寿命。block_dump的输出将写入内核输出,并且可以使用“ dmesg”来检索它,或者查看您的syslog kern工具以获取调试消息的目的地。通常,应该为/var/log/debug。当您使用block_dump并且内核日志记录级别还包括内核调试消息时,您可能希望关闭klogd,否则将记录block_dump的输出,从而导致磁盘活动通常不存在。


2

您需要告诉内核通知您对磁盘的所有读/写操作,然后您需要查看该信息。

所以:

# sync
# echo 1 > /proc/sys/vm/block_dump
# dmesg -c | grep '/dev/sda'

sync将所有未完成的写入刷新到磁盘,以便您仅看到新的读取或写入。
dmesg -c显示内核消息并清除它们(否则,每次运行dmesg时,您也会看到旧消息)。 grep过滤dmesg的输出以查找您感兴趣的磁盘的活动。用实际设备替换/ dev / sda。

我通常使用类似的方法来降低磁盘的速度,然后检查其何时再次旋转:

# sync
# hdparm -y /dev/sda
# while true; do hdparm -C /dev/sda ; sleep 600 ; done

while循环检查磁盘活性/空闲状态每次10分钟。当您看到它启动时,运行dmesg上面的行以查看whodunnit。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.