Colocar HDDs no modo de espera após X minutos usando o hdparm não funciona

11

Eu uso o Ubuntu 12.04 em um servidor doméstico. Existem 5 discos rígidos: um SSD com o sistema operacional e quatro HDDs (Samsung HD204UI) configurados como RAID5 usando mdadm.

Não preciso do RAID com muita frequência (digamos, uma vez por dia em média); ele contém dados multimídia e alguns backups, então decidi colocar as unidades em espera a maior parte do tempo.

Eu configurei as unidades para girar automaticamente após 20 minutos usando o hdparm, aqui /dev/sdacomo exemplo:

hdparm -S 240 /dev/sda

A saída do comando confirmou isso:

/dev/sdb:
 setting standby to 240 (20 minutes)

Mas o problema é que a unidade gira após cerca de 5 segundos (em vez de 20 minutos) após o último acesso e

hdparm -C /dev/sdb

exibe:

/dev/sdb:
 drive state is:  standby

Por que a unidade não espera os 20 minutos conforme configurado? Isso tem algo a ver com a configuração do RAID? (Acho que não...)

Esse tempo limite muito curto é problemático, pois é um RAID5 e quando eu acesso um arquivo, ele é distribuído em blocos pelas quatro unidades. Como a unidade 1 não é necessária quando a unidade 2 é lida, adormeceu quando será usada na próxima vez (após a leitura da unidade 3). Portanto, as unidades continuam girando para cima e para baixo o tempo todo, resultando em uma taxa de transferência próxima de zero.

Para as pessoas preocupadas com a vida útil das minhas unidades: não haverá problema em que as unidades sejam giradas para cima e para baixo uma vez por dia, em média, pois eu prefiro economizar energia e calor sobre a saúde das unidades (eu uso RAID5 e o conteúdo não é é muito importante).

leemes
fonte
2
Que bom que você conseguiu sua resposta aqui. Pena que os caras do ServerFault foram tão exigentes. Eu pensaria que as técnicas de economia de energia seriam muito importantes em qualquer cenário empresarial com visão de futuro. Em vez disso, eles perderão.
Tomfanning 16/05/12
1
@ tomfanning Bem, eu suponho que o ServerFault seja para servidores de grande escala, como apenas em um datacenter. Mas eu não sabia, e esperava que um servidor doméstico também conta como servidor. Bem, se não, devo colocar meu servidor no meu jardim, para que ele não esteja mais em minha casa. O que eu realmente não entendo é por que eles simplesmente não me vivem com o que eu quero e só respondem à pergunta se tiverem respostas construtivas para a minha pergunta, mas querem que eu deixe que seja o que eu quero fazer. [para outras pessoas sem saber o que estamos falando: serverfault.com/q/389222/116951]
leemes

Respostas:

11

O AHCI está ativado no seu BIOS? Caso contrário, tente ligá-lo e tentar novamente.

Se isso ainda não funcionar, talvez você precise tentar algo um pouco mais complicado, pois hdparmnem sempre funciona bem com unidades SATA, que é o que eu presumo que você tenha.

Confira esta página para a seguinte solução relativamente simples que usa o crontab:

sudo apt-get install sg3-utils
crontab -e

Agora, adicione isso na parte inferior do seu crontab (substitua sdx pela unidade que você deseja colocar em espera):

0-59/15 * * * * ( if [ ! -f /dev/shm/1 ] ; then touch /dev/shm/1 /dev/shm/2; fi ; mv /dev/shm/1 /dev/shm/2; cat /proc/diskstats > /dev/shm/1 ) >/dev/null 2>&1
0-59/15 * * * * ( export HD="sdx "; if [ "$(diff /dev/shm/1 /dev/shm/2 | grep $HD )" =  "" ] ; then /usr/bin/sg_start --stop /dev/$HD; fi ) >/dev/null 2>&1

Obviamente, antes de tentar algo disso, é altamente recomendável executar um backup completo do conteúdo de seus discos rígidos.

SirCharlo
fonte
Funcionou como um encanto. Eu ativei o AHCI no BIOS. O modo SATA foi definido como RAID (minha placa-mãe possui um controlador RAID na placa que não uso). Eu não sabia que o AHCI é necessário para o controle SMART adequado de unidades SATA ou o que o hdparm estiver fazendo aqui. Obrigado!
Leemes #
Sir @ SirCharlo, qual é o comando básico para fazer o disco rígido no modo de espera (usando isso sg3-utils)? É isso /usr/bin/sg_start --stop /dev/sdx?
Oki Erie Rinaldi
1

Talvez uma maneira melhor poderia ser:

hdparm -B 1 -Y / dev / device
hdparm -B 255 / dev / device

O primeiro hdparm colocou o dispositivo em espera imediatamente. O segundo desativa o APM, para que o disco permaneça no modo de espera até o próximo acesso ao disco.

esteira
fonte
Boa sugestão, embora seja necessário declarar que esses comandos devem ser usados ​​com um script que cronometra as ações.
Rucent88