AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 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

A unidade externa gira quando o Ubuntu é suspenso

  • 772

Situação

Eu tenho um WD Element Drive que se comporta de forma estranha. Demorou uma eternidade para a unidade girar e não consigo definir o tempo limite de espera (spindown) para a unidade usando métodos diferentes .

Por exemplo, usando hdparmcausas de SG_IOerro:

$ sudo hdparm -S 25 /dev/sdx

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

Parece que o controlador do Drive não suporta esses métodos .

No entanto, estranhamente, consigo colocar a unidade no modo de espera usando o -yswitch:

$ sudo hdparm -y /dev/sdx

Dá o mesmo SG_IOerro, mas a unidade gira para baixo. E eu estou bem com isso.

Problema real

Parece que a suspensão do Ubuntu causa um efeito semelhante a desconectar e conectar a unidade.

Quando eu quiser suspender o Ubuntu, diga usando: systemctl suspend:

  • Se a unidade estiver no modo de espera, ela aumenta e nunca mais diminui.
  • Se não estiver no modo de espera, ele primeiro gira para baixo, depois de um segundo gira novamente e nunca para.

A única maneira de reduzi-lo é retomar o Ubuntu e executar hdparm -yna unidade manualmente e, se eu suspender o Ubuntu novamente, a mesma coisa acontece.

O que eu já tentei

Eu tentei executar hdparm -yem suspensão para colocar a unidade no standbymodo:

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

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

Não tem nenhum efeito. E como eu já disse, enquanto o Ubuntu vai dormir, dirija primeiro as rotações por um segundo de qualquer maneira, e então ele começa a funcionar novamente.


O que estou olhando...

Existe alguma maneira de solucionar esse problema?

Estou procurando uma solução para evitar que a unidade gire em primeiro lugar quando o sistema estiver no modo de suspensão. E se a unidade já estiver acordada, ela deve entrar no modo de espera com o sistema.


Notas:

  • Executando o Ubuntu 20.04.
  • Não estou interessado em desconectar a unidade (ou usar qualquer método que tire a energia das portas USB, pois tem o mesmo resultado de desconectar a unidade).
  • ou usando algo como udiskctl poweroff.
  • Aqui está outra pergunta semelhante: Impedir que o disco rígido USB externo gire durante a suspensão da RAM

Atualizações

  • Se eu usar udisksctl power-off /dev/sdcpara remover a unidade com segurança, suspender o Ubuntu age como desconectar e reconectar e posso montar e usar a unidade novamente (algo que não deve acontecer).

  • Consegui definir um temporizador de espera para a unidade usando sdparm, mas isso não resolveu o problema, depois de suspender a unidade do Ubuntu gira e nunca diminui, mesmo que o temporizador esteja definido para um valor pequeno, como um minuto.

  • Como encontrei resultados diferentes, não tenho 100% de certeza, mas parece que estou enfrentando o problema apenas enquanto a unidade está conectada a uma porta USB3.

    • Mas o USB2 também tem seus próprios problemas, por exemplo, depois de retomar a rotação da unidade do Ubuntu.
  • Posso confirmar que também estou enfrentando o mesmo problema no Windows.

suspend hard-drive external-hdd spindown
  • 3 3 respostas
  • 266 Views

3 respostas

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

    Quando os dispositivos Western Digital estão retornando SG_IOerros, geralmente significa que, embora hdparmexecute algumas das operações solicitadas, não é a ferramenta correta para esse disco específico. Em vez disso, o sdparmutilitário é necessário.

    Para alguns dos discos USB3.0 WD que tenho por aqui, estas são as configurações necessárias para que as coisas permaneçam giradas após a suspensão de um notebook conectado:

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

    Nota: Certifique-se de substituir /dev/sdXpelo dispositivo correto.

    O primeiro comando configura o dispositivo para desacelerar após 5 minutos (assumindo que o SCTvalor da unidade é 100ms). O segundo comando permite que a unidade entre no modo de espera por conta própria.

    Você pode mostrar todos os parâmetros e configurações do seu disco com o seguinte comando:

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

    Editar - Experimentehd-idle

    Existem muitos relatos de como hdparmnão funciona corretamente com unidades WD.

    O utilitário hd-idle foi escrito para Linux.

    Embora sua "reivindicação à fama" seja desligar unidades externas após 10 minutos de inatividade, pode haver um método de chamá-lo para desligar durante uma operação de suspensão.

    hd-idlefoi bifurcado no GitHub . As opções são fornecidas para manter um arquivo de log e reduzir a velocidade sob demanda.


    Eu postei variações dessa mesma resposta muitas vezes no Ask Ubuntu . Essa variação vem do Q&A:

    • Como desligar a alimentação USB do meu mouse, quando suspendo o notebook?

    ( ... A primeira parte da resposta é cortada ... )

    Solução mais fácil desligar todas as portas USB

    Recentemente, encontrei um problema em que uma porta desconhecida estava impedindo a suspensão do laptop. Encontrei esta solução (crédito no código) que modifiquei.

    Crie o arquivo /lib/systemd/system-sleep/custom-xhci_hcdusando sudopoderes e insira este código:

    #!/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

    Como descobri que colocar o sistema no modo de suspensão funciona como desconectar e reconectar a unidade, suspeitei que poderia haver alguns problemas com as portas USB e sua fonte de alimentação.

    Passei pela BIOS e configurei "Always On USB" para "Enable"; Parece que definir este parâmetro como Enable corrigiu o problema.

    insira a descrição da imagem aqui

    • 0

relate perguntas

  • Como posso suspender/hibernar a partir da linha de comando?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve