Respostas:
Dê uma olhada hdparm
.
A partir do manual ( man hdparm
na linha de comando):
-S Defina o tempo limite de espera (spindown) para a unidade. Este valor é usado pelo inversor para determinar quanto tempo esperar (sem atividade de disco) antes de desligar o motor do eixo para economizar energia. Sob tais circunstâncias, a unidade pode levar até 30 segundos para responder a um acesso subsequente ao disco, embora a maioria das unidades seja muito mais rápida.
A codificação do valor do tempo limite é um tanto peculiar. Um valor zero significa "tempos limite desativados": o dispositivo não entrará automaticamente no modo de espera. Valores de 1 a 240 especificam múltiplos de 5 segundos, produzindo tempos limite de 5 segundos a 20 minutos. Os valores de 241 a 251 especificam de 1 a 11 unidades de 30 minutos, produzindo tempos limite de 30 minutos a 5,5 horas. Um valor de 252 significa um tempo limite de 21 minutos. Um valor de 253 define um período de tempo limite definido pelo fornecedor entre 8 e 12 horas e o valor 254 é reservado. 255 é interpretado como 21 minutos mais 15 segundos. Observe que algumas unidades mais antigas podem ter interpretações muito diferentes desses valores.
Então sudo hdparm -I /dev/sdb | grep level
, mostrará o valor atual de spindown, por exemplo:
Advanced power management level: 254
No manual: 254 está reservado, então espero que seja o padrão do Ubuntu (alguém pode confirmar / expandir isso, por favor?)
Exemplo:
sudo hdparm -S 25 /dev/sdb
= spindown após 25 * 5 segundos.
sudo hdparm -S 245 /dev/sdb
= spindown após (245-240) * 30 minutos.
grep
APM ( -B
parm), mas fala sobre -S
o problema. Você também sabe algo sobre APM?
-B
configuração atual é mostrada como indicado acima. Como posso ver a -S
configuração atual ?
sudo hdparm -y /dev/sdb
mata a fera imediatamente
Utilitário de disco -> selecione unidade de disco rígido -> clique no ícone "Mais ações ..." no canto superior direito -> Configurações da unidade ...
O meu é assim:
gnome-disk-utility
.
Se você estiver interessado em fazer a configuração do hdparm persistente entre as reinicializações, em vez de adicioná-la ao crontab, você pode usar o /etc/hdparm.conf
. Eu tenho o seguinte, observe o uso de capital S, não em minúsculas:
command_line {
hdparm -S 25 /dev/disk/by-uuid/f6c52265-d89f-43a4-b03b-302c3dadb215
}
Adicione essa linha substituindo o UUID pelo seu, ou você também pode especificar o dispositivo usando o /dev/sdX
formato. Você pode descobrir o UUID do seu disco com o comando sudo blkid
.
command_line
hoje em dia? Eu tenho exemplos diferentes no meu /etc/hdparm
?
Encontre o UUID do seu disco .
sudo lsblk --output NAME,FSTYPE,LABEL,UUID,MODE
Editar /etc/hdparm.conf
sudo -H gedit /etc/hdparm.conf # Be careful from now on
Procure spindown-time
ou a seção de configurações do disco.
/dev/disk/by-label/4TB {
spindown_time = 1200
}
Prefiro me referir ao disco por UUID, que permanece o mesmo em diferentes instalações (a menos que você o altere no próprio HW).
/dev/disk/by-uuid/91e32677-0656-45b8-bcf5-14acce39d9c2 {
spindown_time = 1200
}
Se o script init causar problemas de inicialização, você poderá transmitir nohdparm
a linha de comando do kernel, e o script não será executado.
man hdparm.conf
.
man hdparm.conf
indiretamente lê que o valor é passado para, -S
portanto, para valores <255 deve ser compatível com a regra na resposta superior . Qualquer informação adicional é bem-vinda.
Depois de passar horas e horas, descobri que minha unidade WDC não suporta o comando hdparm -S, independentemente do valor do atributo idle3 (google: idle3ctl). E esse é um problema comum com as unidades WD. Mas tenho o prazer de anunciar que o hd-idle ( http://hd-idle.sourceforge.net/ ) funciona perfeitamente. Se instalado a partir do pacote dpkg-builded (consulte as Notas de instalação), ele cria o daemon no ubuntu e no debian (a configuração está em / etc / default / hd-idle). Funciona bem depois de sair da hibernação também.
mc padrão # ps aux | grep hd-ocioso | grep -v grep | corte -c 66-; para f em [ad]; do hdparm -C / dev / sd $ f | grep -v "^ $"; feito / usr / sbin / hd-idle -i 1800 -a sdc -i 600 -a sdd -i 60 -l /var/log/hd-idle.log / dev / sda: estado da unidade: ativo / inativo / dev / sdb: o estado da unidade é: em espera / dev / sdc: o estado da unidade é: em espera / dev / sdd: o estado da unidade é: em espera
Descobri que o comportamento spindown do Samsung HD204UI depende do nível de APM ( hdparm -B
). Se o nível de APM for 127, o tempo limite de spindown é de 10 s. Se o nível de APM for 150, o tempo limite de spindown será definido pela -S
opção.
-S
opção (consulte Como determinar o tempo de rotação do disco ). Para obtê-lo, use o software da GUI "Disco". Veja a outra resposta com a captura de tela.
Eu adiciono algo como:
@reboot sudo hdparm -S244 /dev/disk/by-uuid/71492809-e463-41fa-99e2-c09e9ca90c8e > /dev/null 2> /dev/null
ao crontab da raiz. Usar o uuid é melhor, acho que porque sda
/ sdb
etc parece mudar a cada reinicialização
hdparm.conf
?
No Ubuntu 14.04
Discos> destaque drive> clique na engrenagem no canto superior direito> Configurações da unidade> agora você tem as configurações de espera, APM, AAM e cache de gravação em uma GUI fácil de usar!
No Debian, com unidades WD, acho que definir qualquer nível com o hdparm -S resulta no retorno do nível 254 na unidade hdparm -I subsequente . Então, eu realmente não tenho certeza se eles estão girando para baixo ou não. Eu acho que eles ainda estão girando para baixo.
Essas unidades estão em uma matriz de servidores e eu realmente não quero que elas diminuam. No passado, julguei isso definindo um trabalho cron para atualizar um arquivo a cada poucos minutos.
Não tive sorte com o hdparm em um HDD externo montado em um gabinete USB, que eu uso para servir mídia com minidlna.
Me deparei com uma ideia daqui: https://serverfault.com/questions/562738/keeping-usb-backup-drive-from-sleeping- while - mounted
Os melhores resultados vêm do uso do uuid do disco, que você pode encontrar com:
sudo blkid
O método a seguir requer acesso root, mas o hdparm também. Isso usa o crontab para ler um bloco aleatório da unidade a cada 5 minutos e ignora todas as mensagens. Para garantir que você tenha o UUID correto, teste-o na linha de comando como esta (certifique-se de usar o UUID desejado, não este):
sudo dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM
Você deve ver uma saída como esta:
1+0 records in
1+0 records out
512 bytes copied, 0.000738308 s, 693 kB/s`
Para suprimir essa mensagem, que pode acabar sendo escrita em algum lugar, potencialmente o sistema de arquivos / (que está em um SSD no meu caso), abaixo está o que estou usando no crontab raiz. Você chega lá com
sudo crontab -e
Então, sob os comentários:
*/5 * * * * bash -c 'dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM' >/dev/null 2>&1
Espero que isso ajude alguém com problemas semelhantes. Infelizmente, isso ainda é gravado no syslog, mas existem maneiras potencialmente de suprimir isso; veja esta publicação ServerFault .
07-01-2017 09:02:
Consegui suprimir essas mensagens editando /etc/rsyslog.d/50-default.conf para alterar esta linha:
*.*;auth,authpriv.none -/var/log/syslog
para isso:
*.*;cron,auth,authpriv.none -/var/log/syslog
Infelizmente, isso suprime todas as mensagens cron; Não foi possível ao cron redirecionar o logoff do sistema de arquivos raiz (que está em um SSD antigo no meu caso, por isso quero limitar as gravações), mas como esse é apenas um servidor doméstico, provavelmente não estou perdendo muito. Definitivamente, não recomendaria essa estratégia para uma máquina de produção.