SSH 登录唤醒旋转的存储驱动器

SSH 登录唤醒旋转的存储驱动器

我在家庭服务器/HTPC 上运行 12.04,并且有多个存储驱动器使用中设置的值减速/etc/hdparm.conf

有时,通过登录会ssh导致部分或全部驱动器被唤醒。我设置了udisks推荐的规则帖子发布后,旋转速度从一直变为有时。

例如,我设置了审计规则,auditctl -w /dev/sde -p rwa -k e试图查看是什么唤醒了它们。使用 检查审计结果ausearch,我在以下情况下看到如下条目ssh

type=PATH msg=audit(04/16/2013 18:16:40.109:502) : item=0 name=/dev/sde inode=3010 dev=00:05 mode=block,660 ouid=root ogid=disk rdev=08:40 
type=CWD msg=audit(04/16/2013 18:16:40.109:502) :  cwd=/home/absqua 
type=SYSCALL msg=audit(04/16/2013 18:16:40.109:502) : arch=x86_64 syscall=open success=yes exit=3 a0=7fffcd697998 a1=800 a2=0 a3=0 items=1 ppid=14054 pid=14055 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts0 ses=408 comm=hdparm exe=/sbin/hdparm key=e

那么,我的驱动器被自动唤醒了吗hdparm?我该如何找出是什么在召唤它?

答案1

我也为这个问题苦苦挣扎了一段时间,尝试过审计、提到的 udisks 规则等。但最终还是成功了,blktraceblkparse给了我问题的最终提示:我的休眠磁盘通过dumpe2fsssh 登录访问了。

显然,以下脚本是罪魁祸首,它扫描所有驱动器以显示在下次登录时重新启动 motd 时将检查哪些驱动器是否存在错误。

/usr/lib/update-notifier/update-motd-fsck-at-reboot

该脚本每小时最多执行一次,因此这解释了为什么它没有持续发生。参见第 21-24 行:

if [ $(($stampt + 3600)) -lt $now ] || [ $stampt -gt $now ]; then
    #echo $stampt $now need update
        NEEDS_FSCK_CHECK=yes
fi

我决定通过将变量赋值替换为:(do nothing) 来禁用系统上的自动检查。您还可以将最小时间差(3600秒)增加到一天或一周之类的时间。但我发现最好在午夜维护期间运行脚本,因为那时我的所有磁盘都处于唤醒状态。由于此脚本仅供参考,因此如果您对此信息不感兴趣,--force则将其替换为应该是安全的。return 0

我希望这对遇到相同或类似问题的人有所帮助。即使这是您系统上的另一个罪魁祸首,我blktrace也发现它blkparse对于诊断问题非常有用。

答案2

基于以下答案贾万希:另一种/usr/lib/update-notifier/update-motd-fsck-at-reboot无需修改即可停止脚本每小时运行一次以及在登录期间运行的方法是将这一行放入/etc/crontab

01 * * * * root f=/var/lib/update-notifier/fsck-at-reboot ; test -e $f && touch $f

如果存在的话,这将更新脚本每小时检查的时间戳文件,这会让脚本误以为它已经运行了那个小时。

您不必修改脚本,因此您不必记住在任何系统更新后继续进行任何修改(尽管如果未使用时间戳文件,更强大的解决方案会发出错误警告)。

相关内容