Neste artigo tentarei explicar os conceitos básicos do hdparm, uma importantíssima ferramenta de configuração que pode deixar o seu HD em ponto de bala, tinindo e pronto pra qualquer tarefa.
Logo se vê pelos relatório que existem muitos parâmetros que podem ser alterados pelo hdparm, e essas alterações vão interferir diretamente no desempenho do HD, positiva ou negativamente. É preciso então saber interpretar as informações e nunca fazer testes com opções que podem representar perigo para a integridade dos dados contidos no disco.
Como vimos anteriormente, o uso do hdparm é simples, sendo sua sintaxe:
hdparm <parâmetros> <disco>
Segue agora os principais parâmetros do hdparm, e como utilizá-los e seta-los corretamente.
-c<valor> : Esse parâmetro especifica o modo de interrupção de I/O. Os valores que pode assumir são:
1: modo 16 bits
2: modo 32 bits
3: modo 32 bits
Para saber se seu HD suporta o modo 32 bits, veja na BIOS do seu computador.
-d<valor> : Ativa/desativa o uso do DMA. Para ativar, use o valor 1. Para desativar, use 0.
-X<valor> : Seleciona o modo de DMA a ser utilizado. Pode variar de sdma0 (pior), passando por mdma e chegando em udma5 (melhor). Vamos desconsiderar o uso dos modos sdma que são muito antigos. Para utilizar os modos mdma, basta utilizar o número do modo somado com 32. Ou seja: use 32 para ativar mdma0 (32 + 0), e 34 para o mdma2 (32 + 2). Para utilizar os modos udma, utilize o número do modo somado com 64. Ou seja: use 65 para ativar o udma1 (64 +1) e 69 para o udma5 (64 + 5). Para saber qual modo é suportado pelo seu HD, basta ver as seguintes linhas:
Obtidas com o comando "hdparm -i /dev/hdX" (X é a letra da sua unidade de disco). O modo que deve ser utilizado é o último que aparece na lista. Nesse caso, é o modo udma5 (69).
-m<valor> : Especifica o valor do parâmetro MultSects. O valor desse parâmetro não pode ser maior que o parâmetro MaxMultSects, que encontramos na linha:
do relatório gerado com o comando "hdparm -i /dev/hdX". Nesse
caso, o parâmetro MaxMultSects tem o valor 16, então o valor
de MultSects deve ser igual ou menor a esse (de preferência
igual).
-A<valor> : Ativa/desativa o recurso de leitura adiantada. O valor 1 ativa, enquanto 0 desativa.
-a<valor> : Configura a leitura adiantada. O valor especificado é multiplicado por 512 Bytes. Assim, se você usar 8, a leitura adiantada será de 4KB. A recomendação é de que você use o mesmo valor que usar
para o parâmetro MultSects.
Veja um exemplo de configuração com esses parâmetros acima:
# hdparm -c1 -d1 -X69 -m16 -A1 -a64 /dev/hda
/dev/hda:
setting fs readahead to 16
setting 32-bit IO_support flag to 1
setting multcount to 16
setting using_dma to 1 (on)
setting xfermode to 69 (UltraDMA mode5)
setting drive read-lookahead to 1 (on)
multcount = 16 (on)
IO_support = 1 (32-bit)
using_dma = 1 (on)
readahead = 16 (on)
done.
Esse comando configurou o HD para utilizar o modo de I/O de 32 bits (-c1), ativou o uso do DMA (-d1), ativou o UltraDMA modo 5 (-X69), definiu o leitura de setores múltiplos para 16 (-m16), ativou a leitura adiantada (-A1) e ajustou a leitura adiantada para 8 KB (-a16). Tome-o por base para configura o seu HD conforme as suas características.
A seguir, vamos ver como fazer o ajuste acústico e ajustar o desligamento do motor para economizar energia.
[1] Comentário enviado por cvs em 19/11/2004 - 08:27h
Muito bom seu artigo cara, gostei mesmo já usando o hdparm há algum tempo obtive muitas respostas aqui.. .só faço uma ressalva, a respeito da instalação, normalmente ele já vem instalado por default... é só...parabens.
[6] Comentário enviado por lowpis em 19/11/2004 - 14:01h
O meu dá esse erro:
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
Alguém sabe o porquê?
E, pra quem usa o Gentoo, edite as configurações no arquivo /etc/conf.d/hdparm
O arquivo eh bem explicado, mas basicamente, você precisa colocar uma variável com os argumentos. Aqui em casa, usei:
hda_args="-c1 -d1 -X69 -A1 -a64 -m16"
Depois, para colocar o hdparm na inicialização, faça:
$ rc-update add hdparm boot
[7] Comentário enviado por gibabsb em 19/11/2004 - 18:56h
Parabéns pelo artigo muito bom mesmo, tem uma máteria sobre hdparm na revista LInux Magazine do mês passado, vale a pena dar uma olhada.
Tenho apenas uma dúvida, uso o RH9 e não encontrei o arguivo hdparm.conf então como faço para habilita-lo logo na inicialização ou ele já inicializa automático?
Um abraço
Essa mensagem siginifica que houve erro de entrada/saída no instante em que o hdparm tentava setar o seu HD para o modo UDMA5. Isso pode ter diversos motivos, e um deles é o seu HD na verdade não suportar o modo UDMA5, apesar de o hdparm reconhecer que suporta. Tente ativar os modos udma4 (-X68) e udma3 (-X67). Ou então, configure o /etc/hdparm.conf e reinicie o computador para ver se as configurações funcionam corretamente quando aplicadas no momento do boot.
[10] Comentário enviado por removido em 20/11/2004 - 01:10h
SCRIPT DE EXECUÇÃO DO HDPARM
O script abaixo está diponível em http://www.guiadohardware.net/kurumin/dicas/005/index.php#01 e é de autoria do Alan Rafael Rodrigo Batista.
Bom proveito!
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
. Ganho de performance no HD
Por Alan Rafael Rodrigo Batista
Crie um arquivo:
sudo kedit harddisk.sh
Coloque nele o conteúdo abaixo:
#!/bin/sh
echo "mostrando na tela as configurações do disco"
hdparm -c -d -t /dev/hda #corrija aqui caso seu disco não seja o hda
echo
echo "melhorando a leitura e escrita do hda"
hdparm -c 1 -d 1 -t /dev/hda #corrija aqui caso seu disco não seja o hda
echo "feito!"
[11] Comentário enviado por pop_lamen em 20/11/2004 - 01:30h
Muito bom o artigo, bem completo, estudado.
Prabéns, todos os artigos da comunidade deveriam ser como o seu, e não assuntos cobertos só pela metade.
Wainer.Chiari
[12] Comentário enviado por nemphilis em 20/11/2004 - 22:21h
este artigo me chamou a atenção, além da boa linguagem utilizada, sanou todas as duvidas dos topicos abordados. Parabéns bozolinux, eeeeeeeesse menino vai longe!!!
[14] Comentário enviado por davidsonpaulo em 23/11/2004 - 16:04h
bighead,
Essas mesmas mensagens aparecem num computador velho de um amigo meu, e o problema é a quantidade de 'bad blocks' (setores defeituosos) no HD. O hdparm não vai consertar isso, pois sua função não é corrigir problemas em HDs, mas somente configurá-los com os devidos recursos a fim de melhorar a performance de leitura e escrita.
[16] Comentário enviado por impalerdrumer em 27/02/2005 - 19:35h
cara nenhum dos meus dois hds estao setando o udma4(o máximo suportado pela minha placa mãe q é ata66), ele dá o seguinte erro:
/dev/hda:
setting xfermode to 68 (UltraDMA mode4)
HDIO_DRIVE_CMD(setxfermode) failed: Input/output error
vi vc falando pra um cara aqui q estava com a mesma duivida, q esse problema pode ser relacionado ao hd nao suportar o modo q se esta tentando setar, mas tenho certeza de que meus hds suportam, tanto que um deles é um Samsung novinho de 7200rpm, q suporta até ata133 por sinal.....
[21] Comentário enviado por cytron em 23/02/2007 - 15:51h
Encontrei a solução para o SATA, veja bem como estava fácil de achar:
HDA = hdparm
SDA = shparm
O site é http://sg.torque.net/sg/sdparm.html, mas já vou avisando, é coisa para alienígena! Eu não consegui configurar nada, é muito diferente do hdparm.
[22] Comentário enviado por removido em 12/07/2007 - 03:54h
Davidson,
Achei seu artigo show! Aumentar o desempenho de um disco é imprescindível, principalmente, quando o assunto se trata de servidores, onde a velocidade do disco é um fator crucial.
[24] Comentário enviado por wagnux em 08/02/2008 - 10:05h
Estou com o mesmo problema apresentado pelos colegas:
Depois de executar esse comando # hdparm -d 1 /dev/hda
/dev/hda:
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
using_dma = 0 (off)
Alguém teria uma sugestão pra resolver esse problema?
[27] Comentário enviado por davidsonpaulo em 16/01/2012 - 11:54h
marcelohcm, o hdparm só serve para discos IDE, e ao que tudo indica o seu disco é SCSI ou SATA. Nesse caso, você precisará utilizar o comando sdparm. Um grande abraço!