关于Linux 磁盘读写测试的工具其实有很多种,今天就DD命令详细解释一下。
我们如何有效的来测试真实的读写数据呢?
其实就用到下述几条关键命令。
dd if=/dev/zero of=$1 bs=$2 count=$3 conv=fdatasync 写入
dd if=$1 of=/dev/null bs=$2 读取
echo 3 > /proc/sys/vm/drop_caches 清除缓存
conv=fdatasync 其中这块是非常重要的必须写入磁盘
说了那些,我觉得要用起来比较麻烦,所以做了一个脚本。
#!/bin/bash
selfpath=$(cd "$(dirname "$0")"; pwd)
sum=0
sum1=0
count=$4
for ((i=1;i<=$count;i++))
do
echo -e "\033[31;33m ********************Block_Size:$2******Count:$3******************** \033[0m"
sync
echo 3 > /proc/sys/vm/drop_caches
dd if=/dev/zero of=$1 bs=$2 count=$3 conv=fdatasync 2>write.log
write_arry[$i]=$(echo $(echo $(cat write.log | awk 'END {print}')|awk -F ', ' '{print $4}') |awk -F 'MB/s' '{print $1}')
echo ${write_arry[*]}
sync
echo 3 > /proc/sys/vm/drop_caches
dd if=$1 of=/dev/null bs=$2 2>read.log
read_arry[$i]=$(echo $(echo $(cat read.log | awk 'END {print}')|awk -F ', ' '{print $4}') |awk -F 'MB/s' '{print $1}')
echo ${read_arry[*]}
rm -rf $1
sync
echo 3 > /proc/sys/vm/drop_caches
done
for x in ${write_arry[*]}
do
#echo $x
sum=$(echo $sum + $x |bc)
done
echo -e "\033[31;31m Avg_Write_Speed:$(printf "%.2f" `echo "scale=2;$sum/$count"|bc`)MB/s \033[0m"
for x in ${read_arry[*]}
do
#echo $x
sum1=$(echo $sum1 + $x |bc)
done
echo -e "\033[31;32m Avg_Read_Speed:$(printf "%.2f" `echo "scale=2;$sum1/$count"|bc`)MB/s \033[0m"
使用方式:
./xx.sh $1 $2 $3 $4
$1为文件路径 $2为文件块大小 $3为数量 $4为读写执行次数
看这样是不是测试明明白白,测试各类存储设备速度、稳定度是非常的方便。
前提系统中要安装bc工具哦。

411



被折叠的 条评论
为什么被折叠?



