Aumente a vida de seu HD principalmente se for notebook

Iniciado por ucastrobr, 17 de Dezembro de 2007, 23:34

tópico anterior - próximo tópico

ucastrobr

Aumentando a vida útil dos HDs

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 [1,2], 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 [2]. Contudo, outros autores afirmam que este valor vale apenas para HDs da Hitachi. Para HDs de outros fabricantes, o valor é apenas 200.000 [3]. 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 [4]. 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. O segundo comando abaixo está como hd sda, mas se o seu hd for hda basta trocar o sda por hda. Não sabe se o seu hd é sda ou hda ou sdb? Digite o comando:

sudo fdisk -l

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.
OBSERVAÇÃO O SCRIPT ESTÁ CONFIGURADO PARA SDA SE VOCÊ USAR HDA OU OUTRO... BASTA SUBSTITUIR AS OCORRÊNCIAS DE SDA POR HDA POR EXEMPLO.

#!/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 torná-lo um arquivo executável.

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

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 [5] 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 DE MATÉRIA: http://alexblog.eeol.org/linux/aumentando-a-vida-util-dos-hds/
Spock – "After a time, you may find that having is not so pleasing a thing, after all, as wanting. It is not logical, but it is often true."
("Depois um de tempo você vai perceber que ter algo pode não ser tão prazeroso quanto deseja-lo. Isto não é lógico, mas frequentemente é verdade.")

clcampos

ucastrobr muito bom o artigo, e já foi para meus favoritos.

Só uma coisa, o texto faz muitas referências para links externos (usando a sintaxe [1,2], [3], [4] e [5]) que você parece que esqueceu de copiar, vou deixá-los abaixo, e sugiro adicionar ao final da sua primeira mensagem:

Citar
Referências

   1. Ubuntu Demon's blog
   2. Linux-Hero.com
   3. Problem with hard drive clicking
   4. Bug #59695 in acpi-support (Ubuntu)
   5. Monitoring Hard Disks with SMART

[]'s

Cristiano
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

exdhawk

no meu note fiz o teste e ficou da seguinte forma:

smartctl -A /dev/sda6 | grep Load_Cycle_Count
193 Load_Cycle_Count        0x0032   076   076   000    Old_age   Always       -       48863

depois de 20 minutos

smartctl -A /dev/sda6 | grep Load_Cycle_Count
193 Load_Cycle_Count        0x0032   076   076   000    Old_age   Always       -       48918

é nescessario usar o fix?

alessandro_ufms

Esse comando no meu computador não gera a linha com Load_Cycle_Count. Será que meu HD está livre?

Thorn Striff

Meus amigos,
quando utilizo o comando: sudo smartctl -A /dev/sda | grep Load_Cycle_Count nada acontece o.O
Tenho instalado o smartmontools

clcampos

Citação de: Thorn Striff online 23 de Dezembro de 2007, 01:05
Meus amigos,
quando utilizo o comando: sudo smartctl -A /dev/sda | grep Load_Cycle_Count nada acontece o.O
Tenho instalado o smartmontools

Comigo também, e ainda não descobri o porque:

$ sudo smartctl -A /dev/sda | grep Load_Cycle_Count
Password:
$


Digo mais, veja:

$ sudo smartctl -A /dev/sda
smartctl version 5.36 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

$


Para fazer o teste aqui usei o LiveCD, instalei o que era preciso e testei, e aparentemente esta tudo bem.

[]'s

Cristiano
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

roger_2

putz... aqui também não tive resposta...

root@thinkpad:/home/raulino# smartctl -A /dev/sda | grep Load_Cycle_Count
root@thinkpad:/home/raulino#


depois tentando entender o pq disso fiquei mais por fora ainda....

root@thinkpad:/home/raulino# smartctl -a /dev/sda
smartctl version 5.36 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Device: ATA      HTS721010G9AT00  Version: MCZO
Serial number:       MPD0N7Y0J53SYL
Device type: disk
Local Time is: Thu Dec 27 02:42:42 2007 BRST
Device does not support SMART

Error Counter logging not supported

[GLTSD (Global Logging Target Save Disable) set. Enable Save with '-S on']
Device does not support Self Test logging
root@thinkpad:/home/raulino#


alguém pode me dar uma luz sobre isso?!?!
Alessandro Raulino
GNU/Linux User #355764
ArchBang 2012.12 @ LG P43 Series | Linux 3.6.8 | X.org 1.13.0 | Openbox 3.5.0 | CPU i7-2620M @ 2.70GHz × 4

velox256

No boot em modo texto pode ser observado um detalhe de que o "smart não sei o que está desabilitado via não sei o que e tal" (não dá pra ler pq meu boot é muito rápido), aqui também não funciona o bagulho (o Grep Load_Cicles), mas o smartctl -A funciona dando informações do disco e aparece também a mesma msg de que o dispositivo não suporta smart, mesmo estando habilitado na bios e meu hd sendo Sata. Esse erro dá em quem usa hd IDE por acaso?




Citação de: roger_2 online 27 de Dezembro de 2007, 02:49
putz... aqui também não tive resposta...

root@thinkpad:/home/raulino# smartctl -A /dev/sda | grep Load_Cycle_Count
root@thinkpad:/home/raulino#


depois tentando entender o pq disso fiquei mais por fora ainda....

root@thinkpad:/home/raulino# smartctl -a /dev/sda
smartctl version 5.36 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Device: ATA      HTS721010G9AT00  Version: MCZO
Serial number:       MPD0N7Y0J53SYL
Device type: disk
Local Time is: Thu Dec 27 02:42:42 2007 BRST
Device does not support SMART

Error Counter logging not supported

[GLTSD (Global Logging Target Save Disable) set. Enable Save with '-S on']
Device does not support Self Test logging
root@thinkpad:/home/raulino#


alguém pode me dar uma luz sobre isso?!?!
Computador perereca, com disco perereca, monitor perereca e sistema super xuxu. Visitem a minha página em http://sidserra.k6.com.br ou meu blog em http://sidserra.blogspot.com.br.

ucastrobr

 Eu nem verifiquei o smart já fui logo executando o script afinal não vai danificar nada. OBSERVAÇÃO O SCRIPT ESTÁ CONFIGURADO PARA SDA SE VOCÊ USAR HDA OU OUTRO... BASTA SUBSTITUIR AS OCORRÊNCIAS DE SDA POR HDA POR EXEMPLO.

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.

Código:

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.
Spock – "After a time, you may find that having is not so pleasing a thing, after all, as wanting. It is not logical, but it is often true."
("Depois um de tempo você vai perceber que ter algo pode não ser tão prazeroso quanto deseja-lo. Isto não é lógico, mas frequentemente é verdade.")

clcampos

Citação de: ucastrobr online 28 de Dezembro de 2007, 12:32
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.

Código:

sudo sh hdd-spin-fix.sh

Só uma pequena correção:

CitarAntes 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, dar permissão de execução ao arquivo (chmod 555 hdd-spin-fix.sh) e executá-lo como segue.

[]'s

Cristiano
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

jango

Há uma coisa que não precebo???
Este script é necessario executar só uma vez ou é necessario executa-lo sempre que se inicia o pc???

Obrigado

clcampos

#11
Citação de: jango online 28 de Dezembro de 2007, 15:00
Há uma coisa que não precebo???
Este script é necessario executar só uma vez ou é necessario executa-lo sempre que se inicia o pc???

Obrigado

Só uma vez. Na verdade o script cria um pequeno script (2 linhas) de nome 99-hdd-spin-fix.sh, e já o coloca para ser executado a cada boot.

#!/bin/sh
hdparm -B 255 /dev/sda


[]'s

Cristiano
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

ArKanjo

Ola gente

Seguinte ...
to ressuscitando o tópico para tirar uma duvida ..

Esse problema ainda existe ???? coloquei o Kubuntu 8.10 agora apagando o script que tinha feito no 8.04 ... neste anterior parece que eu tinha este problema, pq eu tinha feito o teste e tava tendo muitos ciclos ...
Mas acho que ja devem ter dado um jeito nisso né ???

Então confirmem aí, foi arrumado, ou ainda existe o problema ... se foi arrumado, sabem detalhes da solução que colocaram ? o linux passou a usar algum valor padrão ignorando o do fabricante ou alguma outra coisa ?

Tks !
Liberdade é tudo !
"Be free, be linux" Ed Carlos

clcampos

Citação de: ArKanjo online 07 de Novembro de 2008, 02:16
Ola gente

Seguinte ...
to ressuscitando o tópico para tirar uma duvida ..

Esse problema ainda existe ???? coloquei o Kubuntu 8.10 agora apagando o script que tinha feito no 8.04 ... neste anterior parece que eu tinha este problema, pq eu tinha feito o teste e tava tendo muitos ciclos ...
Mas acho que ja devem ter dado um jeito nisso né ???

Então confirmem aí, foi arrumado, ou ainda existe o problema ... se foi arrumado, sabem detalhes da solução que colocaram ? o linux passou a usar algum valor padrão ignorando o do fabricante ou alguma outra coisa ?

Tks !

Fez o teste de novo?

Acho que só com ele dá para saber.
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

ArKanjo

Citação de: clcampos online 07 de Novembro de 2008, 02:36
Citação de: ArKanjo online 07 de Novembro de 2008, 02:16
Ola gente

Seguinte ...
to ressuscitando o tópico para tirar uma duvida ..

Esse problema ainda existe ???? coloquei o Kubuntu 8.10 agora apagando o script que tinha feito no 8.04 ... neste anterior parece que eu tinha este problema, pq eu tinha feito o teste e tava tendo muitos ciclos ...
Mas acho que ja devem ter dado um jeito nisso né ???

Então confirmem aí, foi arrumado, ou ainda existe o problema ... se foi arrumado, sabem detalhes da solução que colocaram ? o linux passou a usar algum valor padrão ignorando o do fabricante ou alguma outra coisa ?

Tks !

Fez o teste de novo?

Acho que só com ele dá para saber.

Pois é.. marquei bobeira de não fazer o teste antes..

mas é que ja tinha achado absurdo o problema ter ocorrido no 8.04 e fiquei curioso, por isso perguntei pra ter certeza ...

Pra ter uma ideia segue meu resultado

Sex Nov 7 14:04:47 BRST 2008 ----- 193 Load_Cycle_Count 0x0012 092 092 000 Old_age Always - 81361
Sáb Nov 8 01:22:01 BRST 2008 ----- 193 Load_Cycle_Count 0x0012 092 092 000 Old_age Always - 81362

Coloquei o horario do teste aí pra verem que neste período todo mudou só "1" isso pq reiniciei :P

É que também fiquei com receio pq meu laptop ja tem mais de 2 anos de uso, fica ligado mais de 12 horas todo dia :D o HD ja
ta na meia idade :D
Liberdade é tudo !
"Be free, be linux" Ed Carlos