Teste compatativo entre discos e/ou partições

Publicado por Joanes Pereira Duarte (última atualização em 21/01/2013)

[ Hits: 4.524 ]

Download testehd.sh

Download 1357699853.testehd.sh (versão 2)




Boa tarde amigos!

Fiz este script para testar comparativamente a velocidade de gravação discos e/ou tipo de arquivos (ext2, ext3, ext4, ntfs...).

Forma de usar:

1. Formatar disco ou criar partição no formato de arquivo desejado;
2. Montar este disco ou partição em algum diretório do SO;
3. Ajustar as variáveis do script com o diretório de montagem e a quantidade de arquivos a gravar;
4. Executar o script;
5. Repetir o processo para cada disco ou tipo de arquivo que quiser testar.

A cada teste feito, será salvo em um arquivo chamado log.txt (salvo no diretório corrente do script) o horário de início, fim e tempo total em segundos da gravação.

Claro que a configuração da máquina usada para os testes irá influenciar nos tempos registrados, porém o objetivo do script não é testar a velocidade de um único disco, mas comparar a velocidade de dois ou mais discos ou tipo de arquivos.

Espero que seja útil a alguém.

  



Versões atualizadas deste script

Versão 2 - Enviado por Joanes Pereira Duarte em 09/01/2013

Changelog: Nova versão corrigindo os comparadores usados nas linhas 30 e 35:

...
- if [ $TEMPO -gt 60 ] ; then
+ if [ $TEMPO -lt 60 ] ; then
...
- elif [ $TEMPO -gt 3600 ] ; then
+ elif [ $TEMPO -lt 3600 ] ; then
...

Download 1357699853.testehd.sh


Esconder código-fonte

#!/bin/bash
#
# testehd.sh
#
# Joanes Duarte, 23-12-2012
#
# Cria arquivos no diretório definido pelo usuário  e registra
# horário de início, fim e tempo tota da gravação. Útil para
# realizar comparações de velocidade entre discos e/ou partições
# Salva as informações no arquivo 'log.txt', que fica salvo
# no mesmo diretório do script.
#
# Pré requisitos: Ter uma partição ou disco formatado com o
# tipo de arquivo a ser testado. Após definir as variáveis.
#

############## Variáveis definidas pelo usuário #################

# Número de arquivos a serem criados
NUM_ARQ=1000

# Local de montagem da partição
LOCAL_MONT=/mnt/hdteste/

################# Daqui pra baixo não meixa!!! ###################

### Função que calcula o total do tempo de gravação
calcula_tempo(){

if [ $TEMPO -gt 60 ] ; then
HORAS=0
MINUTOS=0
SEGUNDOS=$TEMPO

elif [ $TEMPO -gt 3600 ] ; then
HORAS=0
MINUTOS=$(($TEMPO / 60))
SEGUNDOS=$(($TEMPO % 60))

else
HORAS=$(($TEMPO / 3600))
RESTO=$(($TEMPO % 3600))
MINUTOS=$(($RESTO / 60))
SEGUNDOS=$(($RESTO % 60))

fi
}

# Testa se variável 'NUM_ARQ' é numérica
[[ "$NUM_ARQ" != ?(+)+([0-9]) ]] && \
echo "$NUM_ARQ não é um número válido." && \
exit 1

# Testa se variável "LOCAL_MONT" é um diretório válido
[ ! -d "$LOCAL_MONT" ] && \
echo "$LOCAL_MONT não é um diretório válido." && \
exit 1

# Busca o nome do sistema de arquivos no sistema
SISTEM_ARQ=$(df -T "$LOCAL_MONT" | tail -n 1 | fmt -u | cut -d ' ' -f 2)


# Início do laço que cria os arquivos
CONTA=0
echo "==================[$SISTEM_ARQ]==================" >> log.txt
echo "INICIO.......... $(date +%d-%m-%Y-%H.%M.%S)" >> log.txt

TEMPO_INI=$(date +%s)         # Tempo inicial em seg.

while [ $CONTA -lt $NUM_ARQ ]
do
   (( CONTA ++ ))
   touch $LOCAL_MONT{arquivo}$CONTA.txt
done

TEMPO_FIM=$(date +%s)         # Tempo final em seg.
TEMPO=$(($TEMPO_FIM - $TEMPO_INI))   # Cáculo do tempo em seg.

calcula_tempo            # Chamada da funçao

echo "FIM............. $(date +%d-%m-%Y-%H.%M.%S)" >> log.txt
printf 'TEMPO TOTAL..... %.2d:%.2d:%.2d \n' $HORAS $MINUTOS $SEGUNDOS >> log.txt
echo '==========================================' >> log.txt
echo >> log.txt

Scripts recomendados

Criador de árvore de compilação

Apagar arquivos recursivamente de um diretório pela extensão

bloqueando TODAS as PORTAS do EMULE

Plugin para Nagios

Script para módulo de bateria do GKrellm


  

Comentários
[1] Comentário enviado por joanesduarte em 09/01/2013 - 00:54h

Correção dos comparadores das linhas 30 e 35:

...
- if [ $TEMPO -gt 60 ] ; then
+ if [ $TEMPO -lt 60 ] ; then
...
- elif [ $TEMPO -gt 3600 ] ; then
+ elif [ $TEMPO -lt 3600 ] ; then
...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts