Linux - 防止磁盘旋转

Linux - 防止磁盘旋转

启动时所有磁盘都会旋转,但 4 个只是备份(而且噪音也很大)。所以我宁愿在启动时根本不让它们旋转。

是否有一个内核选项可以告诉内核包含 rootfs 的磁盘连接到哪个 SATA 端口?

如何才能实现磁盘在启动时不旋转?

答案1

我不确定第一句话与最后一句有什么关系。也许你可以完善你的问题。因此,假设第一句话是实际问题,我可能会为你指明正确的方向。

你正在寻找的是待机状态下启动或简称 PUIS。此功能必须由您的 BIOS/UEFI、硬盘和内核支持。某些硬盘(例如 Western Digital 的某些型号)配备了特殊跳线以启用此功能。(Western Digital 称此功能为 PM2)。在其他驱动器上,可以使用 启用此功能hdparm。下面的命令仅应在您绝对地确保您的平台支持 PUIS。此命令可能会使您的 BIOS 无法检测到磁盘!我建议您阅读手册页以获取更多信息。

警告 hdparm -s 1 /dev/sdX 警告(请注意,-s选项是小写的。)

我还没有在自己的服务器上实现此功能。目前,我正在研究所有利弊。我读到过某处说您/etc/fstab还必须移除驱动器。否则 mount 命令将启动驱动器。但是我目前无法确认这一点。

答案2

另外,假设标题和问题的前半部分是您的实际问题,那么通过 hdparm 可以实现更多神奇的功能。如果您可以忍受磁盘旋转然后关闭,则可以使用 hdparm 指示磁盘在短暂不活动后旋转停止。这是通过其-S(大写 S) 范围。

设置旋转停止超时意味着磁盘在开机期间仍正常旋转,但随后在某个合理的确定时间停止旋转。这通常比将磁盘设置为在待机状态下开机更安全。

请注意,如手册页中所述:

超时值的编码有些奇怪。零值表示“超时已禁用”:设备不会自动进入待机模式。1 到 240 之间的值指定 5 秒的倍数,从而产生从 5 秒到 20 分钟的超时。241 到 251 之间的值指定从 1 到 11 个 30 分钟的单位,从而产生从 30 分钟到 5.5 小时的超时。252 值表示 21 分钟的超时。253 值设置供应商定义的 8 到 12 小时之间的超时期限,而 254 值是保留的。255 被解释为 21 分钟加 15 秒。请注意,一些较旧的驱动器对这些值的解释可能非常不同。

因此,如果您想让磁盘 /dev/sdb 减速并将其空闲减速时间设置为一分钟,您可以使用:

sudo hdparm -S12 /dev/sdb

您可以将此类 hdparm 命令添加到后期启动脚本(如 /etc/init.d/rc.local),或者您的发行版可能提供特定的 init 脚本配置文件来执行此操作。例如,在 Debian 上,您可以编辑 /etc/hdparm.conf 以包含:

/dev/sdb {
    spindown_time = 12
}

我建议使用 /dev/disk/by-* 目录中的适当名称(/dev/disk/by-id 可能最容易读取,因为那里的名称包括磁盘型号和序列号),而不是 /dev/sdX 名称,特别在引导脚本或从引导脚本引用的配置文件(如 hdparm.conf)中。(任何磁盘更改可以导致这些名称发生改变,但 /dev/disk/by-* 名称将保持不变。)

为了防止文件系统被挂载,请noauto向相关的 /etc/fstab 条目添加该选项。您仍然可以通过手动运行正常挂载文件系统sudo mount /some/mount/point,并且除非/直到需要它们时才挂载文件系统,这通常会降低意外磁盘活动的概率(这会导致那些嘈杂的磁盘旋转起来,然后在达到旋转超时后再次旋转下来)。

答案3

我知道这个问题已经过时了,但我
几年前就开始搜索有关在启动时不旋转磁盘的信息。
我想我有一个解决方案:- 使用 PUIS 功能在启动时不旋转磁盘。

看一下这个问题。

相关内容