如何找出哪个应用程序阻止该驱动器进入睡眠状态

我有3个SATA硬盘在我的服务器。 第一个是SSD系统驱动器,另外两个(在JBOD中)用于存储一些数据(通过Samba访问)。 大多数情况下,当没有请求时,这两个数据驱动器可以进入hibernate状态。 然而,只有其中之一。

我已经在fstab为这两个驱动器设置了noatime标志,并且很确定没有cron作业正在访问这个驱动器。 我也将spindown超时设置为10分钟( hdparm -S 128命令)。

有没有办法如何确定哪个应用程序仍然访问驱动器,并阻止它进入睡眠?

我通常不会在乎驱动器是否在睡觉,但是因为这是一个家庭服务器,所以将这两个驱动器设置为睡眠是值得的。 操作系统是Ubuntu Server 10.04。

感谢提示。

你可以试试powertop 。

另一件要尝试的是检查哪些进程有问题的文件系统上打开的文件。 请参阅工具“lsof”和“fuser”。

我也听说过关于powertop的好消息。

不过,你也可以看看iotop (在更新的发行版上find)。 iotop还可以帮助您确定哪些程序正在写入磁盘。

(一个给定的过程在做多less工作也是非常有用的。)

祝你好运。

我相信驱动器处理这..不hdparm编辑硬盘conf?

我用完全相同的configuration把我的磁盘睡觉..电影/音乐/图片工作很好,一个小的40GB磁盘为我的操作系统和日志:D

我知道NFS保持磁盘活着,也写日志..基本上任何需要或可以统计底层磁盘上的文件的二进制文件将保持他们旋转

看看你的存储在这些磁盘上..除了静态文件和工作引用他们的应用程序..

在Linux上,您可以使用新的fatrace实用程序,该实用程序logging每个文件的访问权限,并告诉您哪个进程负责:

https://launchpad.net/fatrace

更多信息在这里:

http://www.piware.de/2012/02/fatrace-report-system-wide-file-access-events/

它使用自linux kernel 2.6.37以来的Linux fanotify API ( 更多细节 )。

fatrace截至2014年7月没有被大多数发行版包装(最近进入debiantesting,因此应该在'jessie'中发布),但是易于从源代码安装。