Linux下磁盘io测试怎么用

126次阅读
没有评论

共计 2272 个字符,预计需要花费 6 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下 Linux 下磁盘 io 测试怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

这两天在测试 Dell 的 PS6000 存储,在 linux 下也懒得去找测试工具了,就直接使用 dd 命令进行 I / O 测试,但因为需要测试的数据很多,从 512b 到 4M 的块,每一档都要进行读写的测试,这要是人肉来做,那就太累了,于是就产生了下面这个脚本。

本脚本使用 perl 编写,根据测试用例,完成每次读或写测试。

本脚本共有 3 个参数,两个是必选参数,一个是可选参数

-r 测试读性能

-w 测试写性能

-c 可选参数,用于关闭文件系统的缓存

#!/bin/evn perl
use JSON;
use Data::Dumper;
use Cwd;
use File::Basename;
our $cache_flag =  
#  获取脚本所在目录
my $cwd;
if ( $0 =~ m{^/} ) {$cwd = dirname($0);
else {my $dir = getcwd();
$cwd = dirname( $dir/$0 
#  获得参数
if ( @ARGV   1 ) {
 usage;
exit;
elsif ( @ARGV == 1 ) {if ( ( $ARGV[0] ne  -r  )   ( $ARGV[0] ne  -w  ) ) {
print  Unrecognized Option\n 
 usage;
exit;
elsif ( @ARGV == 2 ) {if ( $ARGV[0] eq  -r  ) {
$cache_flag =  iflag=direct,nonblock 
elsif ( $ARGV[0] eq  -w  ) {
$cache_flag =  oflag=direct,nonblock 
elsif ( ( $ARGV[0] ne  -r  ) || ( $ARGV[0] ne  -w  ) ) {
print  Unrecognized Option\n 
 usage;
exit;
my $opt = $ARGV[0];
#  使用帮助
sub usage {print  Usage: iotest.pl [OPTION] [OPTION]\n 
print  \n 
print  -r\texecute read test\n 
print  -w\texecute write test\n 
print  -c\tiotest with local filesystem cache\n\n 
#  检查测试文件是否存在
sub check_file {if ( !-e  ./iotest  ) {
print  The test file dose not exist,please run write test first\n 
exit;
#  打开测试用例
open FH,  $cwd/iotest.json 
# Main #
while () {
chomp;
$json = new JSON;
#  将测试用例的 json 格式转成 hash
my %strings = %{ $json- decode($_) };
if ( $opt eq  -r  ) {
 check_file;
while ( ( $key, $value ) = each %strings ) {
open rfh,  iotestr.log 
my $cmd =
 /bin/dd if=./iotest of=/dev/null bs=$key count=$value $cache_flag   iotestr.log 2 1 
print rfh  IOTest Block: $key\n 
`$cmd`;
print rfh  \n 
elsif ( $opt eq  -w  ) {while ( ( $key, $value ) = each %strings ) {
open wfh,  iotestw.log 
my $cmd =
 /bin/dd if=/dev/zero of=./iotest bs=$key count=$value $cache_flag   iotestw.log 2 1 
print wfh  IOTest Block: $key\n 
`$cmd`;
print wfh  \n 
}

下面来看下测试用例的编写格式。这里蚊子采用了 json 串的方式,这样便于 perl 读取,文件内容如下

{512 : 4096000 , 1K : 2048000 , 2K : 1024000 , 4K : 512000 , 8K : 256000 , 16K : 128000 , 32K : 64000 , 64k : 32000 , 128k : 16000 , 256k : 8000 , 512k : 4000 , 1M : 2000 , 2M : 1000 , 4M : 500}

该文件主要就分两个字段,冒号前的是块大小,冒号后的 count 数,通过块大小和 count 数就能创建文件,蚊子这里统一生成的是 2G 大小的文件。该文件保存文件名为 iotest.json,将测试用例和测试脚本放到同一个目录下即可。使用方面很简单,进入到要测试的磁盘或目录下,执行

#perl /dir/to/iotest.pl  ndash;w

即可完成开启文件系统换的磁盘写测试。程序执行完毕后会在当前目录下创建.log 文件用于记录测试结果,下图是蚊子测试的结果,我做成了表格。

以上是“Linux 下磁盘 io 测试怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计2272字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)