Alguém sabe se existe uma maneira elegante de dizer a um drive USB externo para não girar após um período de inatividade? Eu vi soluções baseadas em cron que escrevem um arquivo a cada minuto, mas nada que cheira a elegância unixey agradável. Deve haver um comando hdparm ou scsi que eu possa emitir (as unidades USB são acessadas através do driver sd no OpenBSD) na unidade para dizer para não dormir. Receio que esse seja provavelmente um recurso embutido no controlador no gabinete e, como tal, pouco pode mudá-lo, além de arrancar a unidade do gabinete e colocá-lo diretamente na máquina, mas imaginei que perguntaria: na chance.
Idealmente, estou procurando uma solução OpenBSD, mas sei que existem outras por aí com o mesmo problema, portanto, qualquer solução será considerada como resposta.
Respostas:
Sim, geralmente está embutido no firmware. Alguns fabricantes de unidades fornecem uma ferramenta de gerenciamento baseada no MS Windows que permite modificar vários parâmetros, incluindo a desativação do timer "inativo" ou "down". Se você tiver acesso a uma caixa do Windows, pode valer a pena seguir esse ângulo.
fonte
Apenas meus 2 centavos ...
É mais do que verdade que girar os discos diminui sua vida útil. Anos de experiência mostraram que iniciar e parar o motor do disco causa muito mais fadiga do que girar 24 horas por dia, 7 dias por semana. Todos os meus discos com grande número de start / stop realocam setores e todos os meus discos que rodam 10 anos 24/7 são (acredite ou não) bons como novos. Afinal, os discos são feitos para girar e não para marcha lenta, portanto, se sua prioridade é menos fadiga do que o consumo de energia, sinta-se à vontade para que seus discos girem 24/7.
Eu tenho um disco externo de 2 TB que gira após 30 minutos de inatividade. O disco deve ser ligado 24 horas por dia, sete dias por semana, para fins de backup e atuando como um pequeno NAS conectado a um PI laranja.
Eu usei a seguinte regra do udev em
(Ele nunca funcionou, pois o spin down está no firmware dos discos)
Embora o disco suporte o
Eu escrevi um pequeno processo daemon que pode ser executado no momento da inicialização no
que grava 10 vezes em ciclos a data e hora atuais em um arquivo de log para que o disco esteja sempre ativado. Sinta-se livre para modificar como quiser.
As opções da linha de comando são: o diretório de destino para gravar awake.log e (opcionalmente) o atraso (padrão 300)
por exemplo
o código: (você pode compilar com o gcc)
fonte
Esta solução (para Linux) de http://www.arrfab.net/blog/?p=107 ajudou a uma unidade Seagate Portable de 1 TB que continuava em suspensão:
A unidade agora responde imediatamente mesmo quando fica ociosa por uma hora. Ainda não testou se a configuração é salva nas reinicializações, etc.
fonte
Eu descobri que o seguinte cronjob funciona para mim.
* / 5 * * * * / bin / touch / dev / sdb e> / dev / null
Obviamente, atualize-o com o nome do dispositivo do seu disco.
Você também pode variar o tempo com base em quanto tempo sua unidade fica ociosa antes de desligar.
fonte
O manual para o linux
hdparm
fornece as seguintes informações:Dito isto, ainda não é garantido que o gabinete da unidade suporte a retransmissão dessas instruções para a unidade. A mesma referência menciona que a capacidade de usar o hdparm com um gabinete apenas é possível com certos modelos "mais recentes (2008 e posteriores)" que suportam o sistema de tradução de comandos SCSI-ATA, também conhecido como "SAT". Ainda não tentei fazer isso em nada além de uma recente unidade de backup barata, um modelo HP SimpleSave. Parece fornecer algumas funcionalidades limitadas de gerenciamento de energia.
E é claro que isso também pressupõe que o OpenBSD
hdparm
funcione da mesma maneira. Não conheço nada do OpenBSD, então não posso ajudá-lo por lá.fonte
atactl
. Mas não sei se funciona em dispositivos USB;atactl(8)
é referenciado porwd(4)
(a página do manual do driver de disco IDE), mas não porumass(4)
(a página do manual do driver de armazenamento USB).hdparm
poderia ser usado em um loop de alguma forma sem o sudo para evitar dormir?hdparam
o valor padrão para-B [apm_setting]
?