Hdparm - Entendendo seu funcionamento e criando um script para Slackware

Aqui nos concentraremos nas configurações e parâmetros do hdparm. Nosso principal objetivo é entender como o software funciona, também criaremos um script que pode ser usado na inicialização do Slackware, e que com alguns ajustes, pode ser adaptado para outras distribuições.

[ Hits: 27.326 ]

Por: Jeferson Lopes de Oliveira Mendes em 12/06/2006 | Blog: http://jefersonlopes.com.br


Script de inicialização



Podemos criar um script para ser executado na inicialização do sistema, evitando de você ter que digitar os mesmos comandos toda vez que reiniciar a máquina. Neste script coloquei todas as opções funcionais do hdparm para o meu sistema, então modifique algumas opções para o perfeito funcionamento em seu Linux. Copie e salve como o arquivo como /etc/rc.d/rc.hdparm no caso do Slackware.

Script:

#!/bin/sh
# Script para ajustar parâmetros dos seus HardDiscs e OpticDiscs
# Desenvolvido com base na página do manual do hdparm por Jeferson Lopes
# <memphis.br@gmail.com> e <darkcore@terra.com.br>
# Pode ser modificado e redistribuído conforme a GPL v.2
#### Vale ressaltar que as configurações aqui foram feitas para o padrão IDE
#### por exemplo: "hd" IDE para "sd" no caso de SATA ou SCSI
#### Não se esqueçam de verificar os parâmetros validos para seus dispositivos


# Parâmetros de configuração
HDP=/usr/sbin/hdparm
HD0=/dev/hda
HD1=/dev/hdb
DVD0=/dev/hdc
DVD1=/dev/hdd
IDMA0="-c1 -d1 -u1 -k1 -A1 -a256 -m16 -S60 -W1 -X udma2"
IDMA1="-c1 -d1 -u1 -k1 -A1 -a512 -m16 -S12 -W1 -X udma2"
IDMA2="-c1 -d3 -u1 -k1 -A1 -a256 -m16 -S60 -W1 -X udma4"
IDMA4="-c1 -d3 -u1 -k1 -A1 -a512 -m16 -S12 -W1 -X udma4"
IDMA_DV="-c1 -d1 -X66"
STDMA0="-c0 -d0 -a0 -u0 -k0 -m0 -S0 -W0 -X mdma2"
STDMA1="-c0 -d0"

init_hdparm() {
# Ajustar HardDisks
echo "Iniciando parâmetros para seus HardDiscs..."
$HDP $IDMA0 $HD0 1> /dev/null 2> /dev/null
$HDP $IDMA1 $HD1 1> /dev/null 2> /dev/null
echo "[OK...]"

# Ajustar OpticDisks
echo "Ajustando Ultra-DMA 2 para seus OpticDiscs..."
$HDP $IDMA_DV $DVD0 1> /dev/null 2> /dev/null
$HDP $IDMA_DV $DVD1 1> /dev/null 2> /dev/null
echo "[OK...]"
}

stop_hdparm() {
# Ajusta parâmetros dos drives de disco para seu funcionamento mais básico.
# Utilize esta opção caso queira parar o "hdparm" ou por configurações erradas/problemas de leitura nos dispositivos
echo "Parando serviço do hdparm em todos os seus dispositivos de armazenamento..."
$HDP $STDMA0 $HD0
$HDP $STDMA0 $HD1
$HDP $STDMA1 $DVD0
$HDP $STDMA1 $DVD1
}

status_hdparm() {
# Verifica Status de seus HDs e Drives Opticos
$HDP $HD0
$HDP $HD1
$HDP $DVD0
$HDP $DVD1
}

case "$1" in
"start")
init_hdparm
;;
"stop")
stop_hdparm
;;
"status")
status_hdparm
;;
*)
echo "Utilize rc.hdparm start | stop | status para iniciar | parar | ou verificar o status do hdparm..."
esac

Sua utilização é simples depois de implementado, podendo ser utilizado como por exemplo:

# ./rc.hdparm start
para iniciar;

# ./rc.hdparm stop
para parar

ou ainda:

# ./rc.hdparm status

para verificar o status de seus HDs ou Drives de CD/DVD.

Para automatizar a entrada do sistema, copie as seguintes linhas para o início ou fim de seu "rc.M" ou "rc.local":

# Inicia parâmetros em /etc/rc.d/rc.hdparm
if [ -x /etc/rc.d/rc.hdparm ]; then
    . /etc/rc.d/rc.hdparm start
fi
Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Informações sobre o HD e testes de desempenho no sistema
   3. Script de inicialização
   4. Finalizando
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Criando Arrays, Arrays Multidimensionais e Hashes em BASH Script

Brincando com vetores

Programando em Shell Script para iniciantes

KDialog com Shell Script - Conversão de slides JPG para projetores com suporte a miniaturas de imagens

Linux com boot no Pendrive, com todas as facilidades: Smart-USB_Key-Mania, PLOP Boot Manager e outros métodos

  
Comentários
[1] Comentário enviado por removido em 12/06/2006 - 20:12h

o meu tá com o ultra dma 5 ativado, ele é habilitado por padrão na instalação do Ubuntu, olha ae o resultado:

tiagozc@linux:~$ sudo hdparm -tT /dev/hda

/dev/hda:
Timing cached reads: 880 MB in 2.01 seconds = 438.31 MB/sec
Timing buffered disk reads: 154 MB in 3.03 seconds = 50.87 MB/sec

:D

[2] Comentário enviado por lothar_m em 13/06/2006 - 17:37h

na mesma situação de tiagozc
o resultado foi:

*****@gandalf:~$ sudo hdparm -Tt /dev/hda

/dev/hda:
Timing cached reads: 888 MB in 2.01 seconds = 442.30 MB/sec
Timing buffered disk reads: 108 MB in 3.00 seconds = 35.96 MB/sec

[3] Comentário enviado por tarso em 13/06/2006 - 18:09h

Muito bom

[4] Comentário enviado por JefersonLopes em 13/06/2006 - 18:14h

Amigos, existem distribuições que já ativam o DMA que seu HD suporta, outras não!!!

Também meu HD não é tão privilegiado como o de vocês. Um bom conjunto de HD e placa mão já é de ótima ajuda.

:)



[5] Comentário enviado por patrickbrandao em 15/06/2006 - 10:07h

Excelente artigo, até que enfim alguem explicou como sabendo do assunto e não recortando de receita de bolo!

Continue assim slack.

[6] Comentário enviado por joabes em 20/09/2006 - 13:11h

Caro amigo:

Preciso de uma ajudinha, quais as sequências de comandos que devo usar baseada nessas informações, meu disco preciso ativar o dma ou ultra dma do disco:

/dev/hda:

Model=SAMSUNG SP2514N, FwRev=VF100-41, SerialNo=S08BJ1FL709733
Config={ Fixed }
RawCHS=16383/16/63, TrkSize=34902, SectSize=554, ECCbytes=4
BuffType=DualPortCache, BuffSize=8192kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=268435455
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
AdvancedPM=no WriteCache=enabled
Drive conforms to: unknown:

* signifies the current active mode


/dev/hda:

Model=SAMSUNG SP2514N, FwRev=VF100-41, SerialNo=S08BJ1FL709733
Config={ Fixed }
RawCHS=16383/16/63, TrkSize=34902, SectSize=554, ECCbytes=4
BuffType=DualPortCache, BuffSize=8192kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=268435455
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
AdvancedPM=no WriteCache=enabled
Drive conforms to: unknown:

* signifies the current active mode



/dev/hda:
multcount = 16 (on)
IO_support = 1 (32-bit)
unmaskirq = 1 (on)
using_dma = 0 (off)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 30401/255/63, sectors = 488397168, start = 0

O que preciso fazer para ativar o dma, quais os comando corretos a usar?

Cordialmente
Joabes

[7] Comentário enviado por JefersonLopes em 20/09/2006 - 13:27h

Olá Joabes

Vendo a linhas UDMA, ele suporta Ultra DMA 2, então:

hdparm /dev/hda -m16 -c1 -d1 -X udma2

Você pode também habilitar as opções "-A1" e "-a" para manter uma leitura otimizada do buffer. Também habilite o mascaramento de I/O (-u) IRQ que ajuda a sustentação de acesso a 32 bits.

Resumindo, você pode habilitar estas opções:

hdparm hdparm -m16 -c1 -d1 -u1 -X udma2 -A1 -a256


Caso estas opções apresentem algum problema de leitura, você pode ir fazendo alguns testes até encontrar as opções ideais para seu hd.


Espero que isso ajude.

Flw

[8] Comentário enviado por joabes em 23/09/2006 - 18:41h

Usando: hdparm -m16 -c1 -d1 -u1 -X udma2 -A1 -a256 /dev/hda

/dev/hda:
setting fs readahead to 256
BLKRASET failed: Invalid argument
setting 32-bit IO_support flag to 1
setting multcount to 16
setting unmaskirq to 1 (on)
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
setting xfermode to 66 (UltraDMA mode2)
Segmentation fault


O que fazer?

Cordialmente
Joabes

[9] Comentário enviado por JefersonLopes em 26/06/2007 - 01:59h

Eita... quase um ano depois que eu entro aqui... rsrsrs

Bom Joabe, não sei se ainda você passa por este problema, mas tente diminuir o valor da leitura antecipada para 128, ou mesmo deixar só a opção -A1 eliminando a -a256 da configuração.

Abs

[10] Comentário enviado por JefersonLopes em 26/06/2007 - 02:00h

Também baixe o Ultra DMA para 1 (udma1)... caramba... realmente faz tempo que não entre aqui no VoL.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts