让硬盘进入睡眠状态,只有在需要时才能唤醒

我想连接另一个硬盘到我的电脑,我想睡99%的时间。 我只会用它来做一些事情,但是我需要它随时安装。

为了达到这个目的,我想知道:

  1. 如何logging哪些进程访问设备? 我需要logging能够告诉是什么导致硬盘醒来,如果它,所以我可以采取行动。
  2. 是否有任何特殊的内核设置,我需要做的,使设备可能睡得更久?
  3. 如何设置硬盘的睡眠间隔?

睡眠间隔称为“APM”(自动电源pipe理)和spindown_time。 这是像这样用hdparm控制的:

 hdparm -B 50 -S 36 /dev/disk/by-label/BACKUP-HDD 

它会让你的硬盘坏掉〜3分钟。

http://en.wikipedia.org/wiki/Fuser_%28Unix%29 – fuser是一个UNIX命令,用于显示哪些进程正在使用指定的文件,文件系统或套接字。

http://sourceforge.net/projects/hdparm/ – 在Linux下获取/设置ATA / SATA驱动器参数(查找-S选项)

http://sg.danny.cz/sg/sg3_utils.html – sg3_utils软件包包含将SCSI命令发送到设备的实用程序。 以及传统上与SCSI相关的传输设备(寻找sg_start)

btraceblktracebtrace的包装)跟踪内核块I / O,并可以帮助你。

在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 ( 更多细节 )。

在2014年7月之前, fatrace并没有被所有发行版包装(它最近进入debiantesting,所以应该在'jessie'中发布),但是从源代码很容易安装。

lsof +D /path/to/mount应该向您显示在指定的path中已经打开文件的每个进程。

我有类似的问题。 我有SSD, /dev/sdb ,带有操作系统(基于Ubuntu Xenial的Linux Mint 18.1)和带有数据的HDD /dev/sda 。 两个磁盘都被encryption。 硬盘的分区没有安装。 无论如何,在几分钟内硬盘驱动器醒来,然后睡觉,然后再次醒来。 混乱。

这里有一个重复的问题与有用的答案 ,build议auditdfind不良行为的过程。

 apt-get install auditd auditctl -w /dev/sda -p rwa 

然后我用hdparm -Y /dev/sda强制硬盘入睡。 然后等到我听到HDD再次旋转起来。 然后运行ausearch -f /dev/sda 。 在我的情况下,它显示如下条目。

 time->Sat Feb 25 12:38:17 2017 type=PROCTITLE msg=audit(1488022697.651:1744): proctitle=2F7573722F6C69622F756469736B73322F756469736B7364002D2D6E6F2D6465627567 type=PATH msg=audit(1488022697.651:1744): item=0 name="/dev/sda" inode=376 dev=00:06 mode=060660 ouid=0 ogid=6 rdev=08:00 nametype=NORMAL type=CWD msg=audit(1488022697.651:1744): cwd="/" type=SYSCALL msg=audit(1488022697.651:1744): arch=c000003e syscall=2 success=yes exit=12 a0=f3fb90 a1=800 a2=7f4745221f64 a3=30 items=1 ppid=1 pid=18520 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="pool" exe="/usr/lib/udisks2/udisksd" key=(null) 

相关部分是exe =“/ usr / lib / udisks2 / udisksd” 。 虽然我也有smartmontools的人也是罪魁祸首。 我卸载smartmontools并停止与service udisks2 stop停止udisk2服务。 之后,硬盘按预期睡眠。

请注意,例如,当我打开Disks应用程序时, udisks2会自动启动,所以我必须再次停止它。 另一个缺点是,两个磁盘都不监视SMART参数,这不是很好,而是一个适合的解决方法。

还有一件事情是不清楚的,就是这个bug报告说udisks2不会执行内核已经完成的轮询磁盘。 但是证据似乎表明了相反的情况。