Ajustando o desempenho de discos rígidos

Quando percebemos que nossos HDs estão lentos além do esperado em uma cópia de vários arquivos ou restauração de um backup, procuramos saber o porque de sua baixa performance. No Linux, a principal ferramenta para isso é o hdparm. Neste artigo mostro como podemos fazer para ganhar velocidade em nosso disco.

[ Hits: 28.296 ]

Por: Cleber J Santos em 11/03/2009


Acelerando o HD



Quando percebemos que nossos HDs estão lentos além do esperado em uma cópia de vários arquivos ou restauração de um backup, procuramos saber o porque de sua baixa performance. No Linux, a principal ferramenta para isso é o hdparm.

Com o utilitário hdparm, além das várias possibilidades úteis, podemos verificar e obter informações para futura análise dos discos, configuração de discos óticos e rígidos, testes de desempenho, gerenciamento de energia e ajustar os parâmetros de configuração para os mesmos.

Só não devemos esquecer que para cada drive de disco ou hard disc e para cada fabricante existe uma configuração específica.

Então utilize os dados aqui mencionados com extrema cautela e de preferência como um esboço para uma configuração mais fiel e específica para o seu sistema.

Informações sobre o HD e testes de desempenho no sistema

Caso você já tenha o hdparm instalado, já poderemos utilizá-lo para buscar informações no sistema, mas caso ainda não o tenha instalado, busque e instale para sua distribuição, este artigo foi escrito pensando no Slackware, só para variar :-), então procure no CD1 de instalação do Slackware, na raiz do cdrom, "slackware/a/hdparm-6.1-i486.tgz" e utilize como super-usuário o comando (depois de montado o drive de CD):

# installpkg slackware/a/hdparm-6,1-i486.tgz

Para quem utiliza Debian pode dar um simples apt-get:

# apt-get install hdparm
ou
# aptitude hdparm

Este não é um artigo que vai mostrar como instalar o aplicativo, sendo assim para cada distribuição será necessário uma pesquisa ao amigo Google. Após ter certeza de que temos o hdparm instalado, vamos verificar as informações do HD com o parâmetros -i ou -I, onde o primeiro parâmetro vai nos fornecer informações menos técnicas sobre o disco rígido/drive, já o segundo nos dará informações completas e mais detalhadas, onde poderemos saber o que nosso disco rígido suporta e o que não suporta.

Aqui vai mais uma chamada de atenção, sempre é bom verificar se tua BIOS suporta certos parâmetros, imagine que seu HD suporte Ultra-DMA 4 ou 5 e sua BIOS diz que suporta no máximo Ultra-DMA 2, então não adiantaria utilizar UDMA4, além do risco de ter problemas de compatibilidade como travamentos no sistema e correndo o risco de perder dados.

Obtendo informações

No exemplo que veremos estamos usando um HD não SATA, neste caso se fosse SATA teríamos SDA ao invés de HDA, e é claro cada caso é um caso, no seu caso pode ser HDB ou HDC, enfim, a idéia aqui é que você tenha um entendimento técnico mínimo, não é legal ir se aventurando com algo que pode ferrar seu disco.

Vamos utilizar o comando:

# hdparm -i /dev/hda

No meu caso tive a saída:

Model=ST340014A, FwRev=3.06, SerialNo=5JXAFYM6
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=unknown, BuffSize=2048kB, MaxMultSect=16, MultSect=16
CurCHS=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=78165360
IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4

DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 *udma2 udma3 udma4 udma5
AdvancedPM=no WriteCache=enabled
Drive conforms to: ATA/ATAPI-6 T13 1410D revision 2:
* signifies the current active mode

Agora o que podemos tirar deste exemplo?

Podemos verificar dados como Modelo, Firmware e Serial em (Model=ST340014A, FwRev=3.06, SerialNo=5JXAFYM6), dentre outros dados,

CSH e LBA na linha 3 e 5 que é compatível do HD - (RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4) & (CurCHS=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=78165360)

Já na 4ª linha podemos saber o tamanho do buffers de leitura ( BuffSize=2048kB ) e qual o máximo de transferência múltipla por setores ( MaxMultSect=16, MultSect=16 ). Nas linhas 7, 8 e 9 podemos verificar os modos PIO,DMA e UDMA suportado, e em qual está estamos operando no momento. E por último se o gerenciamento de energia está ativo ou não em: ( AdvancedPM=no), se o cache está ativo em: (WriteCache=enabled) e se o drive é compatível com o padrão ATA ( Drive conforms to: ATA/ATAPI-6 T13 1410D revision 2 ).

Uma outra forma de obter informações mais precisas é:

# hdparm -I /dev/hda

Mas ainda vamos nos manter concentrados no exemplo já utilizado, antes de continuarmos, verifique o que já está habilitado no seu HD com "hdparm /dev/hda" e teremos a seguinte listagem:

/dev/hda:
multcount    =  0 (off)

IO_support   =  0 (default 16-bit)
unmaskirq    =  0 (off)
using_dma    =  0 (off)

keepsettings =  0 (off)
readonly     =  0 (off)
readahead    =  0 (off)
geometry     = 16383/255/63, sectors = 78165360, start = 0

    Próxima página

Páginas do artigo
   1. Acelerando o HD
   2. Acelerando o HD - Parte II
   3. Acelerando o HD - Parte III
Outros artigos deste autor

Escrevendo scripts no GIMP, pintando a cobra

Assembler no Linux

Linux (kernel) - A história do seu criador

Screen, eita ferramenta porreta!

Software Livre é o futuro

Leitura recomendada

Rode Linux no seu iPod

Adaptador USB RF para redes sem fio (Clone) no Debian e Dapper

Multiterminais e Userful Multiplier nas escolas públicas: Uma solução barata que sai caro

Instalando uma placa DWL-520+ no kernel 2.6.x

Entendendo o mundo dos chipsets

  
Comentários
[1] Comentário enviado por sandromt em 11/03/2009 - 18:18h

Muito bom, mais pode-se utilizar para HDs SATAS, sem problemas ?!?

[2] Comentário enviado por albfneto em 11/03/2009 - 19:41h

Legal esse artigo, eu gosto de artigos sobre comandos ou pacote clássicos, 10!
mas ouvi dizer que hdparm é arriscado para os dados, é verdade?
porisso nunca tentei nos dois anos que mexo com linux.

[3] Comentário enviado por cleberjsantos em 12/03/2009 - 09:14h

Opa, obrigado pelos comentários, sim pode ser usado com Sata também sem problemas, só lembre-se que ao invés de HDa elel muda para SDa, ou coisa assim.

Quanto a ser arriscado o uso do hdparm, sim, dependendo da situação pode ser arriscado, neste caso se aplica o dizer que: "Cada caso é um caso", por isso é importante que antes de aplicar testes como estes que fiz, você tenha entendido exatamente os parâmetros, os testes de analise não é preciso ter medo, pois são apenas testes para analisar o que seu HD tem suporte e como está a situação dele, é a partir dessa analise que você vai tirar os dados necessários para aplicar ao seu HD ;-)


Att,

Cleber J Santos
http://www.cleberjsantos.com.br

[4] Comentário enviado por neomvll em 12/03/2009 - 10:29h

Ótimo artigo, já ta no Favoritos. Valeu Cleber.

[5] Comentário enviado por erhnamdjinm em 12/03/2009 - 11:57h

"sim pode ser usado com Sata também sem problemas, só lembre-se que ao invés de HDa elel muda para SDa, ou coisa assim. " by cleberjsantos
Não, o hdparm não pode ser usado em SATA, porque ele foi feito para ajustar HD's IDE. Você consegue tirar informações sobre o HD SATA, mas não consegue ajustar parâmetros com ele. Para HD's SATA e SCSI, use o sdparm.

"porisso nunca tentei nos dois anos que mexo com linux" by albfneto
Putz, mexer em qualquer SO sem pelo menos ativar o DMA do HD IDE não deve ser divertido... Deve ficar muuuuito lento.
Faça pelo menos o hdparm -d1 /dev/hda que você notará a diferença.

[6] Comentário enviado por nicolo em 12/03/2009 - 12:14h

Artigo super interessante, uma vez que o disco é o dispositivo mais lento do sistema.
A maioria enche a máquina de megahertz, com um sistema operacional cheio de setings complicados
e esquece do disco.
Na BIOS modernas o DMA e o 32bits transfer podem ser acionados pelo SETUP.
Há controladoras aceleradoras que melhoram o desepenho do disco, mas os preços
não entusiasmam.
Gostei.

[7] Comentário enviado por albfneto em 12/03/2009 - 16:26h

bom minha DMA tá ativada na BIOS, e porisso não está tão lento, tá um pouco lento meu disco slave, mas o master não está;
eu tenho Vista, e Mandriva, Sabayon e Gentoo e Poseidon Linux distribuidos entre os dois hds, tudo 64 bits e tenho 4 giga de ram, é um DX2 6000, AMD 64, e os dois HDs são sata, um é 160 (slave) e o outro, o master é 500.
entendi, devo usar sdparm.

[8] Comentário enviado por cleberjsantos em 12/03/2009 - 16:39h

Opa nicolo, obrigado pela correção sobre o hdparm ;)

[9] Comentário enviado por JefersonLopes em 04/07/2013 - 22:47h

Cara... sei que já tem tempo isso.. mas você ao menos poderia me dar os créditos?

http://www.vivaolinux.com.br/artigo/Hdparm-Entendendo-seu-funcionamento-e-criando-um-script-para-Sla...

hehehe... abraço e boa sorte!

[10] Comentário enviado por cleberjsantos em 05/07/2013 - 08:40h

Jeferson, peço desculpas, não sei do por que não dei crédito, agora vem a questão... Não me lembro como edito artigos aqui no VOL :P se você puder me ajudar já insiro agora os crédito ;)

Abraços!

[11] Comentário enviado por JefersonLopes em 05/07/2013 - 09:17h

Olá Cleber.

Acredito que terás que falar com Fábio Berbert; atualizar artigos antigos creio que só ele!

Att.


Contribuir com comentário