Discos rígidos são dispositivos mecânicos que utilizam energia elétrica para o seu funcionamento, girando os discos propriamente ditos para acesso e gravação dos dados. No Linux, existe o comando hdparm, que permite configurar em que momento o HD entrará em modo de espera, economizando energia e reduzindo o ruído gerado pelo mesmo.

Disco rígido aberto. Fonte: Pixabay

O hdparm serve para uma série de outras configurações relativas aos discos rígidos. Consulte man hdparm para mais informações. Neste artigo vamos focar nos comandos hdparm -B e hdparm -S. O primeiro permite definir o nível de controle que o sistema operacional terá sobre o HD quanto ao consumo de energia. O segundo possibilita definir o intervalo de tempo a partir do qual o HD entrará no modo spindown, ou seja, ficará em modo de espera, sem girar os discos.

Antes de tudo, é conveniente utilizar o comando hdparm -B sem parâmetros, para identificar qual o nível de controle que o sistema possui atualmente sobre o consumo de energia do HD. Se o seu HD a ser configurado é o /dev/sdc (se não for, rode lsblk para descobrir), execute o seguinte comando:

sudo hdparm -B /dev/sdc

A resposta deverá ser algo como o seguinte:

/dev/sdc:
 APM_level	= 248

Para que o sistema possa decidir quando o HD entrará em modo de espera, o valor de APM_level deve ser igual o menor que 127. Portanto, se o valor estiver acima de 127, você pode executar o seguinte comando:

sudo hdparm -B 127 /dev/sdc

O outro comando, hdparm -S, estabelece um intervalo de tempo para que o HD entre em modo de espera, spindown, automaticamente após o seu uso. O comando recebe um número, que é calculado de maneira peculiar: de 1 a 240 indica múltiplos de 5 segundos, enquanto que acima de 240 indica múltiplos de 30 minutos. Seguem alguns exemplos:

NúmeroTempo
121 minuto
605 minutos
24020 minutos
2421 hora

Por exemplo, para definir um intervalo de 10 minutos (120*5 segundos = 600 segundos), execute o comando a seguir:

sudo hdparm -S 120 /dev/sdc

Persistência das configurações

Ao executar os comandos acima, a configuração voltará ao estado anterior após a reinicialização do sistema. Para que ela persista, existem dois meios possíveis.

O primeiro modo, mais básico, é adicionar esses comandos a um script que seja executado na inicialização do sistema operacional. No Ubuntu e derivados, uma forma simples de fazer isso é editando o arquivo /etc/rc.local e adicionar os comandos. Se o arquivo não existir, pode ser criado:

sudo touch /etc/rc.local
sudo chmod +x /etc/rc.local

A linha a ser inserida no arquivo seria a seguinte:

hdparm -S 120 -B 127 /dev/sdc

Outra maneira, ao meu ver até mais adequada, é editar o arquivo /etc/hdparm.conf e criar uma nova sessão para o respectivo HD:

/dev/sdc {
    spindown_time = 120,
    apm = 127
}

É bom ressaltar que os parâmetros spindown_time e apm, assim como as as respectivas flags -S e -B da linha de comando, são independentes, isto é, um não depende do outro para funcionar.

Caso opte por utilizar apenas o parâmetro spindown_time, pode ser que o serviço smartd, pelo fato de fazer consultas constantes sobre status do HD, impeça que o HD entre em modo de espera. Para evitar isso, consulte esta resposta do Stack Overflow. Basicamente, é preciso configurar o intervalo de consulta do smartd para um valor maior que que o intervalo do modo de espera do HD.

Referências

Leia também