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.
Vamos ver agora como obter e interpretar as informações
obtidas através dos relatórios do hdparm.
O hdparm tem um invejável sistema de obtenção de informações.
Pode-se saber praticamente tudo sobre o HD. Para isso, basta
escolher o tipo de relatório que se deseja obter e digitar a
linha de comando.
A sintaxe de uso do hdparm é:
hdparm <parâmetros> <drive>
Os parâmetros de relatório são:
<nada> : Informações realmente básicas;
-i : Informações detalhadas;
-I : Informações técnicas completas.
E no lugar de <drive> colocamos a localização da unidade que estamos verificando. Pode ser /dev/hda, /dev/hdc, /dev/sda, etc.
Vejamos agora os relatórios, começando pelo mais simples:
multcount = 0 (off) --> o parâmetro multcount está desligado. O multcount é o modo de setores múltiplos que permite que a transferência de múltiplos setores por interrupção de I/O. Os HDs atuais têm suporte a essa opção, que incrementa as velocidades de leitura e gravação do disco.
IO_support = 0 (default 16-bt) --> o modo de I/O está definido para 16 bits. Os modos suportados são 16 bits, 32 bits, e 32 bits com uma seqüência especial de sincronismo exigida por alguns chipsets. Em HDs que suportam o modo 32 bits, este oferece uma melhor performance se comparado ao modo 16 bits. É possível saber se o seu HD suporta o modo 32 bits na BIOS do seu computador.
using_dma = 1 (on) --> o DMA (Direct Memory Access ou Acesso Direto a Memória) é um recurso primordial para se obter uma boa performance do HD. A menos que seu HD seja muito antigo, ele suporta DMA e esta opção deve estar ativada, como nesse caso.
readahead = 0 (off) --> o recurso de leitura adiantada está desativado. A leitura adiantada permite que o HD faça a leitura dos dados antes de começar a transferir. Isso funciona como um cache, para evitar pausas nas transferências no caso de qualquer processo que interfira na leitura dos dados no HD. Se possível, este parâmetro deve estar ativado para melhorar a performance e a estabilidade das transferências dos dados no HD.
Agora, vejamos um relatório um pouco mais completo:
De onde podemos verificar os seguintes parâmetros:
BuffSize=2048kB --> esse parâmetro mostra o tamanho do buffer de gravação. De preferência, o buffer deve ter o maior valor possível.
MaxMultSects = 16 --> isso informa número máximo de setores que podem ser lidos por vez. Devemos prestar atenção para não configurar a leitura de setores múltiplos acima desse valor, o que poderia causar perda de dados.
PIO modes: pio0 pio1 pio2 pio3 pio4 --> aqui são listados os modos de PIO disponíveis para o HD. A preferência é de se usar o maior modo, nesse caso, o pio4.
UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5 --> estes são os modos de UltraDMA suportados pelo HD, sendo que o modo que aparece com um * é o modo que está sendo utilizado. Deve-se configurar o HD para utilizar o maior valor possível de UDMA, nesse caso, o udma5.
Por último, vejamos o relatório mais completo:
# hdparm -I /dev/hda
ATA device, with non-removable media
Model Number: ST340014A
Serial Number: 3JV89GLK
Firmware Revision: 3.54
Standards:
Used: ATA/ATAPI-6 T13 1410D revision 2
Supported: 6 5 4 3
Configuration:
Logical max current
cylinders 16383 65535
heads 16 1
sectors/track 63 63
--
CHS current addressable sectors: 4128705
LBA user addressable sectors: 78165360
LBA48 user addressable sectors: 78165360
device size with M = 1024*1024: 38166 MBytes
device size with M = 1000*1000: 40020 MBytes (40 GB)
Capabilities:
LBA, IORDY(can be disabled)
bytes avail on r/w long: 4 Queue depth: 1
Standby timer values: spec'd by Standard
R/W multiple sector transfer: Max = 16 Current = 16
Recommended acoustic management value: 128, current
value: 0
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3
udma4 *udma5
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=240ns IORDY flow
control=120ns
Commands/features:
Enabled Supported:
* READ BUFFER cmd
* WRITE BUFFER cmd
* Host Protected Area feature set
* Look-ahead
* Write cache
* Power Management feature set
Security Mode feature set
* SMART feature set
* FLUSH CACHE EXT command
* Mandatory FLUSH CACHE command
* Device Configuration Overlay feature set
* 48-bit Address feature set
SET MAX security extension
* DOWNLOAD MICROCODE cmd
* SMART self-test
* SMART error logging
Security:
supported
not enabled
not locked
not frozen
not expired: security count
not supported: enhanced erase
HW reset results:
CBLID- above Vih
Device num = 0 determined by the jumper
Checksum: correct
Aqui você vai encontrar características técnicas importantes do HD, mas não vai conseguir tirar muitas informações que ajudem na configuração do hdparm. Uma informação interessante é a:
Recommended acoustic management value: 128, current value: 0
O acoustic management, ou gerenciamento acústico, é um recurso que controla a velocidade de rotação do HD para que ele faça mais ou menos barulho. É fácil entender que, girando menos, o HD vai fazer menos barulho, entretanto, é óbvio que ele não atingir a velocidade máxima de leitura e gravação. Alguns fabricantes, então, fazem o favor aos usuários de verificar qual o melhor índice de gerencimento acústico para cada modelo de HD produzido. Nesse caso, o fabricante recomenda o valor 128 para esse parâmetro, valor esse que deve ser verificado e ajustado conforme a necessidade do usuário, para acabar com aquele horrível "zzzziiiinnnnn"... :D
Na próxima página, vamos aprender a configurar o hdparm utilizando as informações desses relatórios.
[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!