有没有办法指示(Linux)内核在系统睡眠/唤醒周期后不要唤醒辅助硬盘?我这么问是因为在我的笔记本电脑中,我有一个 SSD 作为包含系统根目录的主驱动器和一个辅助 HDD,我在其中保存备份系统和我偶尔访问的文件。由于笔记本电脑通常会经历许多天的日常睡眠/唤醒周期(我的意思是挂起到 RAM,而不是休眠),因此我想手动将辅助 HDD 置于睡眠状态,并指示内核在系统睡眠期间保持其睡眠状态/唤醒周期。
答案1
由于您只使用辅助硬盘进行备份,我建议告诉 fstab 不要自动挂载驱动器,并创建一个备份脚本来挂载驱动器、进行备份并再次卸载驱动器。
带有 noauto 选项的 fstab 行示例:
/dev/sdb1 /media/backup ext4 user,noauto 0 0
备份的 bash 脚本将以以下开头mount /media/backup
和结尾umount /media/backup
答案2
切勿旋转磁盘
旋转磁盘似乎是在内核中硬编码的(谢谢维昂来挖掘这个。)
但它当然可以修补:旧版本内核的补丁。
整件事很奇怪,因为我想我记得有一个内核参数/开关。
由于这是一种黑客行为,我不推荐它,因为您必须在每次更新时修补和构建内核,有时甚至需要调整补丁以适应更改的代码。更好的方法是向内核开发人员自己提交补丁(提供实际的开关并适用于所有系统)。我认为这超出了这个答案的范围。 :)
再次停止磁盘(SystemD/Linux)
基于 Marc.2377 的解决方案,这里可以关闭 SystemD/Linux Mint 上的 HDD。
[Unit]
Description="Put woken HDD back to sleep and tell it to go to sleep after 2 min of not being used."
After=systemd-suspend.service systemd-hybrid-sleep.service systemd-hibernate.service systemd-suspend-then-hibernate.service
[Service]
Type=simple
ExecStart=/usr/sbin/hdparm -q -S 24 -q -Y /dev/disk/by-id/MYDISK
[Install]
WantedBy=sleep.target
替换MYDISK
为 中的实际设备文件名/dev/disk/by-id
,并将其另存为/etc/systemd/system/wake_hdd-stop.service
.
然后运行systemctl daemon-reload
激活它。
再次停止磁盘 (GNU/Linux)
在普通的 GNU/Linux 系统上,使用时pm-utils
只需将以下内容放入/etc/pm/sleep.d/99_hdd-stop
:
#! /bin/sh
case "$1" in
resume|thaw)
/usr/sbin/hdparm -q -S 24 -q -Y /dev/disk/by-id/MYDISK
;;
esac
MYDISK
当然是更换。
然后使文件可执行chmod +x /etc/pm/sleep.d/99_hdd-stop
笔记
在任何情况下,您都希望尽可能晚地运行该命令,否则磁盘可能会由于某些初始化过程访问它而再次旋转。
另外,我的磁盘似乎完全忽略了该-S
命令。所以YMMV。 (我创建了一个.desktop
文件来运行上面的脚本,并使用桌面环境的全局键盘快捷键设置将快捷方式映射到它。这样我就可以随时停止它。)
答案3
我认为这是不可能的。驱动器在启动时会被 BIOS / UEFI 探测,而不仅仅是内核。
不过,我所做的是指示系统在系统启动后立即将驱动器置于睡眠模式。查看https://wiki.archlinux.org/index.php/Hdparm#Putting_a_drive_to_sleep_directly_after_boot。
就我而言,我有:
/usr/local/lib/systemd/system/rsleephdd.service
[Unit]
Description="Ranolfi's script to sleep hard drives on boot"
[Service]
Type=oneshot
ExecStart=/usr/bin/hdparm -q -S 120 -Y /dev/sdc
[Install]
WantedBy=multi-user.target
驱动器或其分区是否由 fstab(或 crypttab,就此而言)安装都没有区别。
(编辑):严格来说,似乎可以通过修补磁盘来让内核忽略该磁盘。但这不会阻止驱动器唤醒 - 恰恰相反,我链接到的补丁将阻止您访问驱动器,您将无法访问您的文件,即使是偶尔,也无法将驱动器放入睡觉。