V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
DIMOJANG
V2EX  ›  Linux

Linux 否能实现 Windows 那种机械硬盘休眠策略?

  •  
  •   DIMOJANG · 2023-11-12 16:41:41 +08:00 · 3154 次点击
    这是一个创建于 384 天前的主题,其中的信息可能已经有所发展或是发生改变。

    尝试了 hdparm -S 25 /dev/sda1,但是这似乎只会让电机减速,而 Windows 下则可以做到硬盘在闲置一段时间后断开电源。

    16 条回复    2023-11-17 00:01:24 +08:00
    passive
        1
    passive  
       2023-11-12 17:30:51 +08:00 via Android
    十多年前 Ubuntu 机械硬盘 park 太频繁还被嫌弃
    NoOneNoBody
        2
    NoOneNoBody  
       2023-11-12 17:59:15 +08:00
    个人觉得不要挂起 HDD 为好,SSD 或者可以,但也是有数据风险,总之没有必要,户外用笔记本想省电,盒盖 OS 睡眠或休眠好些
    lekai63
        3
    lekai63  
       2023-11-12 18:38:55 +08:00   ❤️ 1
    我看了看我的笔记:

    - pve[让硬盘休眠]( https://blog.110.sh/2020/05/28/pve-hdd/)
    - 修改`/etc/lvm/lvm.conf`文件,过滤不需要监控的盘
    ```bash
    # 添加 "r|/dev/sd*|" 到 global_filter
    global_filter = [ "r|/dev/zd.*|", "r|/dev/mapper/pve-.*|", "r|/dev/sd*|" ]
    # 重启
    pvestatd restart
    ```
    - 通过以上方式允许硬盘休眠后,可以让硬盘立即休眠来测试下是否还会被唤醒
    ```bash
    # 立即休眠
    hdparm -y /dev/sdc
    # 设置硬盘休眠时间为 5 分钟
    hdparm -S 60 /dev/sdc
    ```
    - 持久化保存休眠时间
    编辑`/etc/hdparm.conf`
    ```bash
    /dev/disk/by-uuid/ata-ST500LT012-9WS142_W0V62FGE {
    spindown_time = 60
    }
    ```
    -
    Jakarta
        4
    Jakarta  
       2023-11-12 20:12:33 +08:00 via Android
    hdparm 不管用的话,还可以试试 sdparm 。
    greenskinmonster
        5
    greenskinmonster  
       2023-11-12 20:42:07 +08:00
    断电是啥意思?设备会在 OS 里面消失吗?
    如果是休眠的话,可以用 hd-idle ,直接用时间做参数,不用去猜-S 后面的数字对应多长时间。
    xiaofan305
        6
    xiaofan305  
       2023-11-12 21:18:00 +08:00 via Android
    机械硬盘的时代,硬盘可以控制电机停转,减少噪声和功耗,现在固态硬盘了感觉没必要了吧。
    DIMOJANG
        7
    DIMOJANG  
    OP
       2023-11-12 21:26:58 +08:00
    @lekai63 #3 这种效果就是让硬盘在一定时间之后电机停转,但是移动硬盘的灯还是亮着的。Windows 下不仅会停转灯还会灭掉,所以好奇 Windows 上是不是有给硬盘断电的功能……?
    0superx0
        8
    0superx0  
       2023-11-12 21:37:02 +08:00
    tlp 不是可以管理嘛
    chocotan
        9
    chocotan  
       2023-11-12 21:58:04 +08:00
    看看其他参数有没有用,-B 、-Y 之类的
    wheat0r
        10
    wheat0r  
       2023-11-12 21:59:41 +08:00
    @DIMOJANG 这不是给 USB 设备断电吗?
    Xunit
        11
    Xunit  
       2023-11-12 22:07:07 +08:00
    tlp 可以做到,之前自己那机械硬盘做 nas 的时候就能 用 tlp 直接把硬盘停转,有读取时才启动硬盘。配置文件写起来也很简单。
    lslqtz
        12
    lslqtz  
       2023-11-12 22:10:56 +08:00
    Windows 我想挂起, 但是根本挂不起来, 挂了一段时间后又会唤醒. Linux 不能停转吗?
    anytk
        13
    anytk  
       2023-11-13 09:31:33 +08:00
    加 udev 规则,去控制 manage_start_stop 这个核心参数。我的 Linux 跑在移动固态硬盘里,关机会导致意外断电次数增加,解决办法就是加 udev 规则去使能 uas scsi_disk 设备的 manage_start_stop 为 1, 将内核去处理休眠/关机时的自动关闭。
    可以通过命令查看当前的标志量状态:
    sudo cat /sys/class/scsi_device/[scsi id]/manage_start_stop
    anytk
        14
    anytk  
       2023-11-13 09:32:28 +08:00
    如果是移动硬盘,可以直接加 udev rule:
    ```bash
    # cat /etc/udev/rules.d/01-manage-start-stop.rules
    ACTION=="add|change", DRIVERS=="usb-storage|uas", SUBSYSTEM=="scsi_disk", ATTR{manage_start_stop}="1", ATTR{allow_restart}="1"
    ```
    cctv180
        15
    cctv180  
       2023-11-13 10:44:28 +08:00
    买个 usb 硬盘盒,一般自带休眠,只要你不读就休眠
    JerryYuan
        16
    JerryYuan  
       2023-11-17 00:01:24 +08:00 via Android
    之前了解到的是硬盘休眠不是 OS 让它停转的,而是 OS 设定磁盘的策略,由硬盘自己决定什么时候停🤔其实这样就好理解了,能让 OS 空闲时不去跟盘 IO ,配上激进的休眠策略,也许能实现。Linux 下用 ramdisk 做根,磁盘只做存一些低频读写的持久化数据,/var /run 之类的容易产生 IO 的东西都丢内存去,尽可能降低磁盘上可能的 IO ,大概也能符合预期地停转?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1262 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:50 · PVG 01:50 · LAX 09:50 · JFK 12:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.