硬盘测试shell脚本使用dd&cp命令中的问题
基础 <Linux shell脚本攻略> 第9章 明察秋毫
监视磁盘使用情况
使用du(disk usage)&df(disk free),根据二者的参数选项获取磁盘使用情况,具体使用用法在Linux下可以使用man du & man df进行学习或者直接查阅《Linux shell脚本攻略》即可。
实际测试
裸读写测试(不带文件系统)
在实际测试环境下,进入测试板系统后会发现系统中BusyBox支持du(disk usage)&df(disk free),但很多命令选项会被取消,因此实际测试 Linux环境下对开发板上的硬盘进行性能测试,一般使用脚本进行自动化测试!这种情况下使用shell脚本进行测试!
这里要求点较多:
1 使用awk&sed获取硬盘的容量信息,这点暂时不做!
2 假设1中要求的数据disk_size得到了,使用dd或cp命令对硬盘进行裸数据读写测试,怎么控制读写偏移呢?
以下为部分参考代码:
#!/bin/bash count=0 while [ $count -lt disk_size ] do echo ***$count copy file*** time dd if=/tmp/file_test_10MB of=/dev/sda bs=1M count=10 time dd if=/dev/sda of=/tmp/file_test_10MB_sda bs=1M count=10 cmp /tmp/file_test_10MB_sda /tmp/file_test_10MB if [ $? -eq 0]; then echo ***test $count cmp Ok **** else echo ***test $count cmp failed **** fi echo ***test $count over*** rm /tmp/file_test_10MB_sda sync count=$(($count+1)) done
以上code只是对/dev/sda硬盘的从0~10M区间重复读写disk_size次,对于全盘测试意义不大,那么如何在整个sda硬盘区间均进行读写测试呢?
使用到以下命令选项:
skip=blocks #从输入文件开头跳过blocks个块后再开始复制。
seek=blocks #从输出文件开头跳过blocks个块后再开始复制.
改善版本:
#!/bin/bash count_size=0 while [ $count_size -lt disk_size ] do echo ***$count copy file*** time dd if=/tmp/file_test_10MB of=/dev/sda bs=1M count=10 seek=$(($count_size)) time dd if=/dev/sda of=/tmp/file_test_10MB_sda bs=1M count=10 skip=$(($count_size)) cmp /tmp/file_test_10MB_sda /tmp/file_test_10MB if [ $? -eq 0]; then echo ***test $count cmp Ok **** else echo ***test $count cmp failed **** fi echo ***test $count over*** rm /tmp/file_test_10MB_sda sync count=$((count+1)) count_size=$(($count_size+10)) done
至此,整盘裸读写测试实现!
磁盘文件系统读写
基本思路为使用Linux命令cp文件 --- 待完成
如何从fdisk -l获取磁盘容量数据?
待《AWK & sed》学习后分析实现。
网址:硬盘测试shell脚本使用dd&cp命令中的问题 https://m.mxgxt.com/news/view/2040519
相关内容
shell 脚本中 空格的注意问题:= 赋值两边不能有空格,而if比较判断时 = 两边必须加空格hdtune硬盘检测工具如何随机存取测试?hdtune硬盘检测工具随机存取测试的方法
命中桃花测试
使用docker部署单机测试版starrocks
磁盘性能测试(iops、)
CP合盘的学问一直都...
iftop监控网络流量命令
测试人员的价值=自动化测试的水平?
测试基础理论
抖音测吉凶大全免费测试(恋爱契合度测试,情侣默契度测试题)
