AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1269021
Accepted
Ravexina
Ravexina
Asked: 2020-08-22 09:08:29 +0800 CST2020-08-22 09:08:29 +0800 CST 2020-08-22 09:08:29 +0800 CST

Ubuntu 挂起时外部驱动器启动

  • 772

情况

我有一个 WD Element Drive,它的行为很奇怪。驱动器需要很长时间才能减速,而且我无法使用不同的方法为驱动器设置待机(减速)超时。

例如使用hdparm会导致SG_IO错误:

$ sudo hdparm -S 25 /dev/sdx

dev/sdx:
 setting standby to 25 (2 minutes + 5 seconds)
SG_IO: bad/missing sense data, sb[]:  ...

Drive的控制器似乎不支持这些方法。

但是,奇怪的是,我可以使用-y开关将驱动器置于待机模式:

$ sudo hdparm -y /dev/sdx

它给出了相同的SG_IO错误,但驱动器转速下降。我很好。

真正的问题

似乎暂停 Ubuntu 会导致类似于拔下和插入驱动器的效果。

当我想暂停 Ubuntu 时,说使用systemctl suspend:

  • 如果驱动器处于待机模式,它会加速并且永远不会再次减速。
  • 如果它不是处于待机模式,那么它首先会减速,一秒钟后它会再次加速并且永远不会减速。

将其降速的唯一方法是恢复 Ubuntu 并hdparm -y手动在驱动器上运行,如果我再次挂起 Ubuntu,也会发生同样的事情。

我已经尝试过的

我尝试hdparm -y在挂起时运行以将驱动器置于standby模式:

$ cat /usr/lib/systemd/system-sleep/suspend_drive

#!/bin/sh    
case $1 in
  pre)
    hdparm -y /dev/sdc ;;
esac

它没有任何效果。正如我已经说过的,当 Ubuntu 进入睡眠状态时,无论如何,驱动器首先会减速一秒钟,然后它会再次开始工作。


我在寻找什么...

有没有办法解决这个问题?

我正在寻找一种解决方案,以防止驱动器在系统进入睡眠状态时首先旋转。如果驱动器已经唤醒,它应该与系统一起进入待机模式。


笔记:

  • 运行 Ubuntu 20.04。
  • 我对分离驱动器不感兴趣(或使用任何从 USB 端口夺走电源的方法,因为它与拔下驱动器具有相同的结果)。
  • 或使用类似的东西udiskctl poweroff。
  • 这是另一个类似的问题:防止外部 USB 硬盘在暂停到 RAM 期间旋转

更新

  • 如果我使用udisksctl power-off /dev/sdc安全移除驱动器,挂起 Ubuntu 就像拔掉和重新插入一样,我可以再次安装和使用驱动器(不应该发生的事情)。

  • 我能够为使用的驱动器设置一个待机计时器,sdparm但它并没有解决问题,在暂停 Ubuntu 驱动器旋转并且从不减速之后,即使计时器设置为一个很小的值,比如一分钟。

  • 当我遇到不同的结果时,我不能 100% 确定,但似乎我只是在驱动器连接到 USB3 端口时遇到问题。

    • 但是 USB2 也有它自己的问题,例如在恢复 Ubuntu 驱动器旋转之后。
  • 我可以确认我在 Windows 中也遇到了同样的问题。

suspend hard-drive external-hdd spindown
  • 3 3 个回答
  • 266 Views

3 个回答

  • Voted
  1. matigo
    2022-04-15T19:22:33+08:002022-04-15T19:22:33+08:00

    当 Western Digital 设备返回SG_IO错误时,通常意味着虽然hdparm会执行一些请求的操作,但它不是该特定磁盘的正确工具。相反,该sdparm实用程序是必需的。

    对于我在这里拥有的一些 USB3.0 WD 磁盘,这些是在连接的笔记本电脑暂停后使事物保持旋转所需的设置:

    sudo sdparm --flexible -6 -l --save --set SCT=3000 /dev/sdX
    sudo sdparm --flexible -6 -l --save --set STANDBY=1 /dev/sdX
    

    注意:请务必更换/dev/sdX正确的设备。

    第一个命令将设备设置为在 5 分钟后减速(假设驱动器的SCT值为100ms)。第二条命令允许驱动器自行进入待机模式。

    您可以使用以下命令显示磁盘的所有参数和设置:

    sudo sdparm --flexible -6 -l -a /dev/sdX
    
    • 2
  2. WinEunuuchs2Unix
    2022-04-16T10:06:43+08:002022-04-16T10:06:43+08:00

    编辑 - 尝试hd-idle

    有许多报告hdparm无法与 WD 驱动器一起正常工作。

    实用程序hd-idle是为 Linux 编写的。

    尽管它的“声名鹊起”是在 10 分钟不活动后降低外部驱动器的速度,但可能有一种方法可以在挂起操作期间调用它来降低速度。

    hd-idle已在 GitHub 上分叉。提供选项来保存日志文件并按需减速。


    我在Ask Ubuntu中多次发布了相同答案的变体。这种变化来自问答:

    • 当我挂起笔记本电脑时,如何关闭鼠标的 USB 电源?

    (......答案的第一部分被剪断......)

    更简单的解决方案关闭所有 USB 端口

    我最近遇到了一个未知端口阻止笔记本电脑挂起的问题。我找到了我修改的这个解决方案(代码中的信用)。

    /lib/systemd/system-sleep/custom-xhci_hcd使用sudopowers创建文件并插入以下代码:

    #!/bin/bash
    
    # Original script was using /bin/sh but shellcheck reporting warnings.
    
    # NAME: custom-xhci_hcd
    # PATH: /lib/systemd/system-sleep
    # CALL: Called from SystemD automatically
    # DESC: Suspend broken for USB3.0 as of Oct 25/2018 various kernels all at once
    
    # DATE: Oct 28 2018.
    
    # NOTE: From comment #61 at: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/522998
    
    TMPLIST=/tmp/xhci-dev-list
    
    # Original script was: case "${1}" in hibernate|suspend)
    
    case $1/$2 in
      pre/*)
        echo "$0: Going to $2..."
        echo -n '' > $TMPLIST
              for i in `ls /sys/bus/pci/drivers/xhci_hcd/ | egrep '[0-9a-z]+\:[0-9a-z]+\:.*$'`; do
                  # Unbind xhci_hcd for first device XXXX:XX:XX.X:
                   echo -n "$i" | tee /sys/bus/pci/drivers/xhci_hcd/unbind
               echo "$i" >> $TMPLIST
              done
            ;;
      post/*)
        echo "$0: Waking up from $2..."
        for i in `cat $TMPLIST`; do
                  # Bind xhci_hcd for first device XXXX:XX:XX.X:
                  echo -n "$i" | tee /sys/bus/pci/drivers/xhci_hcd/bind
        done
        rm $TMPLIST
            ;;
    esac
    
    • 0
  3. Best Answer
    Ravexina
    2022-04-22T08:49:52+08:002022-04-22T08:49:52+08:00

    当我发现将系统置于睡眠模式就像拔下和重新插入驱动器一样,我怀疑 USB 端口及其电源可能存在一些问题。

    我通过 BIOS 并将“Always On USB”设置为“Enable”;似乎将此参数设置为 Enable 已解决此问题。

    在此处输入图像描述

    • 0

相关问题

  • 根据 ssh 请求从休眠中唤醒

  • 如何从命令行挂起/休眠?

  • 混合动力在哪里暂停?

  • 如何让我的电脑中的风扇在暂停时关闭?[关闭]

  • 为什么我的 Kubuntu 会话在恢复后需要相当长的时间才能响应?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve