我已经在我的一个Linux服务器的驱动器上启用了“spindown”,只有BitTorrent客户端才能访问这个驱动器 – 也就是说,当我没有运行的时候,没有别的东西要访问磁盘并从spindown唤醒它(对吧? )。
但有些东西正在使磁盘每15分钟左右旋转一下。 我如何追踪stream氓罪犯?
感谢您的任何反馈!
你可以看看http://samwel.tk/laptop_mode/ 。 虽然这个页面并不是主要关于你的问题,但是给出了一个很好的总体描述IO工作原理和想法,以及如何通过closures它们来保护你的磁盘。
您的问题的简短答案:
echo 1> / proc / sys / vm / block_dump
它会在syslog中产生消息,如:
7月23日10时04分05秒locutus内核:ls(5224):读块7340136 dm-4 7月23日10时04分05秒locutus内核:ls(5224):读取block 4335136 dm-4 7月23日10时04分05秒locutus内核:ls(5224):读块15505568 dm-4 7月23日10时04分05秒locutus内核:ls(5224):读块7340160 dm-4 7月23日10时04分05秒locutus内核:ls(5224):读块7340168 dm-4
我用了一个简单的ls命令
注意:请确保您的系统日志logging已closures或写入到虚拟盘(types:tmpfs),因为(quote):“您的系统可能会进入一个反馈循环,其中syslogd导致磁盘活动,这会导致内核输出,这导致syslogd做更多的磁盘活动“
我build议mount / tmp作为ramdisk,然后设置日志logging到/ tmp / syslog。 这在/ etc / fstab(和重新启动)将执行:
none / tmp tmpfs defaults,size = 256M 0 0
在Linux中,最新的fanotify系统调用启用了一个很好的实用程序,叫做fatrace ,它告诉哪个进程正在为整个系统或特定的分区打哪个文件。 这绝对是我最喜欢的工具:
deluged(6542): R /usr/share/GeoIP/GeoIP.dat rsyslogd(1737): W /var/log/syslog rsyslogd(1737): W /var/log/kern.log
我一直在使用iotop来弄清楚什么是使用的驱动器。 在网站上,您必须具有“Linux内核≥2.6.20且启用了TASK_DELAY_ACCT和TASK_IO_ACCOUNTING选项”。
这听起来像你只是在一个特定的驱动器感兴趣。 你可以考虑编写一个脚本,通过lsof或fuser来检查该驱动器/分区。
如果一个进程开始将数据写入驱动器,那么您可以通过定期检查打开的文件来了解它: lsof 。
否则,如果使用交换文件,可以使用“free”来查看。
您应该能够使用Linux审计在驱动器的挂载点上添加监视,然后在事件发生后使用ausearch监视日志,以查明从哪个文件读取或写入(如果有),以及它执行了哪个过程,审计注意读取,写入,执行和修改任何文件系统的变化(只要系统支持它 – 应该是)。
也许你可以使用incron来使用inotify来启动基于文件系统活动的命令。 然后您可以观察挂载点并使用incron来触发lsof来查找哪个进程正在访问它。
容易的事情来检查什么是你的磁盘旋转是:
进入挂载磁盘的目录,对我来说是/ media / disk0 / transmission
那么你执行: sudo fatrace -c
你将得到任何命中该文件夹的输出,例如你可以用sshlogin并执行ls。
(55025):RC / media / disk1 bash(55026):O / media / disk1 bash(55025)