Linux

Aumentando a vida útil dos HDs – GNU/Linux

Excelente artigo sobre o problema de redução de vida util dos discos rigidos em algumas distribuições GNU/Linux, escrito pelo Prof Alex França em seu blog.

Introdução

Recentemente, uma notícia no br-linux alertou sobre a possibilidade do gerenciamento de energia de algumas distribuições GNU/Linux, do Ubuntu em especial, estarem reduzindo a vida útil dos discos rígidos (HDs). Como noticiado em diversos sites da internet, isto não é um bug do Ubuntu. Na verdade, o Ubuntu apenas segue as recomendações equivocadas fornecidas pelos próprios fabricantes de notebooks e desktops. Neste artigo, o problema é explicado em detalhes e uma solução bastante simples é apresentada. Esta é baseada em um script que necessita ser executado uma única vez e faz todo o trabalho para correção do problema. Além disso, o artigo termina fazendo uma breve discussão sobre o pacote smartmontools que monitora o estado do HD e informa quando este está na eminência de sofrer alguma falha.

Entendo o problema

Pode-se pensar em um HD como aqueles antigos toca-discos usados com os LPs de vinil. Neste caso, o disco de vinil é a superfície de armazenamento, enquanto a agulha pode ser considerada a cabeça de gravação. Normalmente, no caso dos HDs, a cabeça de gravação não toca a superfície do disco. Ao invés disso, esta fica a uma distância segura. Evidentemente, o contato da cabeça de gravação com a superfície do disco durante uma queda ou tombo pode danificá-lo. Então, para permitir o transporte seguro dos equipamentos, foi criada a tecnologia de carga/descarga (load/unload). Basicamente, tal tecnologia permite que a cabeça de gravação seja movida para uma região bem distante da superfície do disco quando este não estiver sendo utilizado, por exemplo, quando o equipamento está em estado de hibernação para economizar energia. É claro, antes do HD poder ser utilizado novamente, a cabeça deve retornar para a sua posição de operação normal.

Desktops também, mas principalmente os notebooks possuem um sistema de gerenciamento de energia. Este desliga alguns dispositivos do hardware que não estão sendo utilizados. É claro que isso também se aplica aos HDs. Assim, para economizar energia, muitas vezes os HDs têm sua rotação reduzida ou até mesmo são desligados temporariamente. Além de economizar energia, se for feito de forma eficiente, isto aumenta a vida útil do HD, pois mantém a sua temperatura mais baixa.

Quando entram em modo de economia de energia, a cabeça de leitura/gravação dos HDs também podem ser descarregadas (unloaded). Quem decide quando fazer isso é o sistema operacional, através de seu sistema de gerenciamento de energia. Este é um ponto importante, pois existe um limite máximo de vezes que a cabeça de gravação pode ser carregada/descarregada. Um valor bastante aceito pare este limite é 600.000 vezes. Contudo, outros autores afirmam que este valor vale apenas para HDs da Hitachi. Para HDs de outros fabricantes, o valor é apenas 200.000. Após ultrapassar este limite, o HD tem uma grande chance de apresentar perdas de dados.

Em tese, os fabricantes dos notebooks são os mais indicados para decidir a melhor estratégia de carga/descarga dos HDs. Apensar disso, as versões do Windows e do MacOS ignoram as recomendações dos fabricantes e impõem suas próprias estratégias de gerenciamento de energia. Ao contrário, por serem mais fieis aos padrões da indústria, distribuições baseadas no GNU/Linux como, por exemplo, o Ubuntu, realizam o gerenciamento de energia segundo as recomendações dos fabricantes. O problema é que (pasmem) a maioria dos fabricantes fornecem parâmetros absurdos ao sistema operacional. Em alguns casos, se forem seguidos, tais parâmetros podem fazer com que o HD seja carregado/descarregado até 3 vezes por minuto. Neste caso, a vida útil do HD chega ao fim apenas após alguns meses de uso.

Detectando o problema

No Ubuntu, para verificar se o gerenciamento de energia está impondo ciclos de carga/descarga demais ao HD, é necessário instalar o smartmontools. Para isso, simplesmente, deve ser executado o comando a seguir.

sudo apt-get install smartmontools

Com o smartmontools instalado, pode-se utilizar o smartctl como segue para visualizar o número de ciclos de carga que o HD já foi submetido.

sudo smartctl -A /dev/sda | grep Load_Cycle_Count

Evidentemente, /dev/sda deve ser substituído com o dispositivo que deseja-se inspecionar.

A saída do comando anterior é algo como segue.

193 Load_Cycle_Count 0x0032 189 189 000 Old_age Always – 35715

Em tal saída, a informação importante é o último número, o 35715. Este é o número de ciclos de carga do HD. Deve-se esperar algo em torno de 10 ou 20 minutos antes do smartctl ser executado novamente. Isso dará uma estimativa de quantas vezes por minuto o HD está sofrendo um ciclo de carga/descarga. Sabendo que um HD pode sofrer 200.000 ciclos desse tipo, pode-se estimar quantas horas de vida útil ele tem. O ideal é que, durante o intervalo de uns 20 minutos, não seja feito (quase) nenhum ciclo de carga. Contudo, ao invés disso, se o sistema de gerenciamento de energia estiver sendo muito agressivo com o HD, deve-se corrigir o problema.

Corrigindo o problema

Para corrigir o problema, a forma mais prática talvez seja executando o script abaixo como root.

#!/bin/sh

PARAM=255
HD=/dev/sda

echo “#!/bin/sh” > 99-hdd-spin-fix.sh
echo “hdparm -B $PARAM $HD” >> 99-hdd-spin-fix.sh

chmod +x 99-hdd-spin-fix.sh

cp 99-hdd-spin-fix.sh /etc/acpi/suspend.d/
cp 99-hdd-spin-fix.sh /etc/acpi/resume.d/
mv 99-hdd-spin-fix.sh /etc/acpi/start.d/

Parâmetros importantes do script acima são as variáveis PARAM e HD. A variável PARAM pode ser igual a 255 ou 254. O valor 255 desliga o gerenciamento de energia do HD completamente. Assim, os ciclos de carga serão mínimos, mas o HD ficará a uma temperatura mais elevada que o normal. Contudo, é consenso que o HD pode lidar melhor com alguns graus de temperatura a mais do que muitos ciclos de carga. Por outro lado, o PARAM=254 faz com que o gerenciamento de energia para o HD continue ativo, mas de uma forma menos agressiva. Por último, a variável HD deve ser alterada se o dispositivo do HD que se deseja proteger seja diferente de /dev/sda.

Antes de executar o script anterior deve-se copiar e colar as linhas de código acima em um arquivo texto, salva-lo como hdd-spin-fix.sh e executá-lo como segue.

sudo sh hdd-spin-fix.sh

Pronto! Após isso, a próxima vez que o sistema for iniciado, gerenciamento de energia será bem mais gentil com o HD.

Monitorando outros problemas

Um fato importante a ser observado é que o smartctl não fornece apenas informações sobre a quantidade de ciclos de carga. Por exemplo, o comando a seguir fornece dezenas de informações sobre o HD em /dev/sda.

sudo smartctl -a /dev/sda

Há um excelente artigo do Linux Journal que explica todas as informações retornadas pelo smartctl. Tais informações fornecem estimativas bastantes exatas de quando e porque o HD dará problema. Contudo, não é necessário usar o smartctl frequentemente para monitorar a saúde do HD. Ao invés disso, o pacote smartmontools instala um daemon (o smartd) que é ativado na carga do sistema. Assim, basta instalar o smart-notifier com o comando a seguir para ser notificado por uma janela pop-up quando o HD tem uma grande probabilidade de dar problema.

sudo aptitude install smart-notifier

Evidentemente, para funcionar de forma adequada, o smart-notifier deve ser executado sempre que uma nova sessão for iniciada.

fonte

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s