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 hdparm
causas de SG_IO
erro:
$ 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 -y
switch:
$ sudo hdparm -y /dev/sdx
Dá o mesmo SG_IO
erro, 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 -y
na unidade manualmente e, se eu suspender o Ubuntu novamente, a mesma coisa acontece.
O que eu já tentei
Eu tentei executar hdparm -y
em suspensão para colocar a unidade no standby
modo:
$ 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/sdc
para 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.
Quando os dispositivos Western Digital estão retornando
SG_IO
erros, geralmente significa que, emborahdparm
execute algumas das operações solicitadas, não é a ferramenta correta para esse disco específico. Em vez disso, osdparm
utilitá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:
Nota: Certifique-se de substituir
/dev/sdX
pelo dispositivo correto.O primeiro comando configura o dispositivo para desacelerar após 5 minutos (assumindo que o
SCT
valor 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:
Editar - Experimente
hd-idle
Existem muitos relatos de como
hdparm
nã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-idle
foi 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:
( ... 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_hcd
usandosudo
poderes e insira este código: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.