Coloque HDDs em espera após X minutos usando hdparm não funciona

9

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

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

Eu configurei as unidades para serem desativadas automaticamente após 20 minutos usando hdparm, aqui /dev/sda como um 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 desacelera 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 configurados? Tem algo a ver com a configuração do RAID? (Eu não penso assim ...)

Esse tempo limite muito curto é problemático, já que é um RAID5 e, quando eu acesso um arquivo, ele é distribuído em bloco em torno das quatro unidades. Como a unidade 1 não é necessária quando a unidade 2 é lida, ela adormeceu quando será usada na próxima vez (após a leitura da unidade 3). Assim, 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 que estão preocupadas com a vida dos meus drives: Não será problema que as unidades girem 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 (uso RAID5 e o conteúdo não é muito importante).

    
por leemes 15.05.2012 / 23:32

2 respostas

8

O AHCI está ativado na sua BIOS? Se não tentar ligá-lo e tentar novamente.

Se isso ainda não funcionar, talvez seja necessário tentar algo um pouco mais complicado, pois hdparm nem sempre funciona bem com as unidades SATA, que é o que 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 ao final 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

É claro que, antes de tentar algo assim, é altamente recomendável realizar um backup completo do conteúdo de seus discos rígidos.

    
por SirCharlo 15.05.2012 / 23:54
1

Talvez seja melhor:

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

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

    
por mat 15.03.2013 / 18:49