保持硬盘活动状态的简单方法?

保持硬盘活动状态的简单方法?

作为hdparm 不起作用对于我的 USB 外部驱动器(它旋转得太早),我想通过一个简单的脚本手动模拟待机控制,其想法如下:

  • 监控磁盘 I/O
  • 当除了脚本本身之外,一段时间内没有来自其他进程的 I/O 时,生成虚拟 I/O 以保持磁盘处于活动状态
    • 一段时间后让驱动器减速
    • 虚拟 I/O 最多应该不是实际读取或写入磁盘的内容(因此会移动产生磨损的机制),但可能会读取一些状态等。

我在 Bash 脚本方面经验不足,不知道可以使用哪些命令。有什么建议么?系统是Arch Linux。

答案1

(我知道这个问题已经有两年多了,但问题仍然存在)

我正在为不尊重 smartctl 设置的驱动器使用以下代码:

#!/bin/bash
while :
do
        date +%s > /second_drive/keepalive_linux.txt
        sync
        sleep 2
done

为了使其在启动时运行,我使用了:

EDITOR=nano crontab -e

并补充道:

@reboot bash /path/to/script.sh

(顺便说一下,驱动器是 NTFS 格式的)

这是同样的行为KeepAliveHD Windows 版有。

虽然可以用更好的方式来完成(就像OP所描述的那样),但现在总比没有好。

答案2

谷歌应该获得这一荣誉:

http://www.unix.com/programming/161666-tool-simulate-non-sequential-disk-io-simulate-db-file-sequential-read-c-posix.html

#!/bin/bash
for ((N=0; N<10; N++))
do
        dd if=gigabytefile of=/dev/null skip=$((RANDOM % 1024)) bs=$((1024*1024)) count=1
done

相关内容