如何在 Fedora 19 上启动和恢复后运行 hdparm 命令?

Pet*_*ete 11 fedora power-management hard-disk

我买了一个新的 HD(WD5000BPVT),不幸的是它每 5-8 秒尝试一次睡眠。不仅可以听到咔哒声,而且 1 秒的启动时间在日常使用中增加了非常明显的延迟。

我发现hdparm -B 254 /dev/sda会禁用非常短的睡眠,但我不知道如何在每次驱动器通电时强制执行此设置。在dconf-editor和“电源管理首选项”应用程序都这样做没什么关于HD的设置。我没有任何/etc/hdparm/etc/acpi路径。MATE 是窗口管理器。

在 Fedora 19 上,如何在驱动器激活时强制运行此命令?

Krz*_*ski 16

我遇到了同样的问题,这里没有一个解决方案适合我的需求。使用 cron 实际上是一种解决方法,而不是解决方案,udev 规则在电源连接/断开时运行,但在挂起/恢复后不运行,并且pm-utils在 Fedora 19 中不再默认使用,例如当您关闭笔记本电脑的盖子时。

由于systemd现在负责挂起/休眠,我认为处理这种情况的唯一正确方法是创建一个systemd在启动后和从挂起恢复后都可以运行的单元。

笔记:

  • 通过使用/dev/disk/by-id/...而不是/dev/sda,您始终可以确保获得正确的磁盘(sda、b、c 取决于内核检测到它们的顺序)
  • 你可以有多ExecStart行,这样你就可以配置多个磁盘

这是我写的单元:

[Unit]
Description=Silence HD
After=suspend.target

[Service]
Type=oneshot
# Disable automatic head parking for the main disk
ExecStart=/sbin/hdparm -B 254 /dev/disk/by-id/ata-ST3250824AS_4N127FD1
# Enable automatic spin down after 30 seconds for the second, infrequently used disk
ExecStart=/sbin/hdparm -S 6 /dev/disk/by-id/ata-ST31000528AS_BVP5H5X1

[Install]
WantedBy=suspend.target basic.target
Run Code Online (Sandbox Code Playgroud)

将此文件另存为/etc/systemd/system/hdsilence.service,然后使用以下命令启用它:

systemctl enable hdsilence.service
systemctl daemon-reload
Run Code Online (Sandbox Code Playgroud)


jsb*_*ngs 6

您可以通过创建自己的 systemd 服务或将命令添加到 /etc/rc.d/rc.local 来让系统在引导期间运行该命令。

如果希望每次sleep/hibernate后唤醒系统都运行该命令,可以在/etc/pm/sleep.d/中添加一个2位数开头的脚本,查看/usr/lib64/中的其他脚本pm-utils/sleep.d(假设 x86_64)了解更多细节。基本上,它需要一个参数,具体取决于它进入的状态。如果您希望在电池电源上的操作与插入电源时不同,您可能还需要在同一父目录中的 power.d/ 中添加一些登录名。


Hau*_*ing 2

我有相同的磁盘(和相同的问题)。我的愚蠢但有效的解决方案:我已将其放入/etc/crontab

-*/5  * * * *   root  hdparm -B 254 /dev/sda
Run Code Online (Sandbox Code Playgroud)