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