dd命令和fio命令测试磁盘性能 以及lsblk 接口类型

 

###dd命令测试磁盘io性能
——————————————————–
1、先熟悉两个特殊的设备:
(1)/dev/null:回收站、无底洞。
(2)/dev/zero:产生字符。

2、测试磁盘写能力
time dd if=/dev/zero of=/testw.dbf bs=4k count=100000
因为/dev//zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。命令结尾添加oflag=direct将跳过内存缓存,添加oflag=sync将跳过hdd缓存。

3、测试磁盘读能力
time dd if=/dev/sdb of=/dev/null bs=4k
因为/dev/sdb是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,所以,这个命令的IO只发生在/dev/sdb上,也相当于测试磁盘的读能力。(Ctrl+c终止测试)

4、测试同时读写能力
time dd if=/dev/sdb of=/testrw.dbf bs=4k
在这个命令下,一个是物理分区,一个是实际的文件,对它们的读写都会产生IO(对/dev/sdb是读,对/testrw.dbf是写),假设它们都在一个磁盘中,这个命令就相当于测试磁盘的同时读写能力。

###fio测试磁盘iops
——————————————————–
fio测试磁盘性能
fio 是一款出色的磁盘性能测试工具。其参数如下:

参数 说明
-direct=1 表示测试时忽略I/O缓存,数据直写。
-iodepth=128 表示使用AIO时,同时发出I/O数的上限为128。
-rw=randwrite 表示测试时的读写策略为随机写(random writes)。作其它测试时可以设置为:randread(随机读random reads)read(顺序读sequential reads)write(顺序写sequential writes)randrw(混合随机读写mixed random reads and writes)。
-ioengine=libaio 表示测试方式为libaio(Linux AIO,异步I/O)。应用使用I/O通常有二种方式:同步和异步。同步的I/O一次只能发出一个I/O请求,等待内核完成才返回。这样对于单个线程iodepth总是小于1,但是可以透过多个线程并发执行来解决。通常会用 16−32 根线程同时工作将iodepth塞满。异步则通常使用libaio这样的方式一次提交一批I/O请求,然后等待一批的完成,减少交互的次数,会更有效率。
-bs=4k 表示单次I/O的块文件大小为4k。未指定该参数时的默认大小也是4k。测试IOPS时,建议将bs设置为一个比较小的值,如本示例中的4k。测试吞吐量时,建议将bs设置为一个较大的值,如本示例中的1024k。
-size=1G 表示测试文件大小为1G。
-numjobs=1 表示测试线程数为1。
-runtime=1000 表示测试时间为1000秒。如果未配置,则持续将前述-size指定大小的文件,以每次-bs值为分块大小写完。
-group_reporting 表示测试结果里汇总每个进程的统计信息,而非以不同job汇总展示信息。
-filename=iotest 指定测试文件的名称,比如iotest。测试裸盘可以获得真实的磁盘性能,但直接测试裸盘会破坏文件系统结构,请在测试前提前做好数据备份。
-name=Rand_Write_Testing 表示测试任务名称为Rand_Write_Testing,可以随意设定。
测试随机写 IOPS:

fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Write_Testing
测试随机读 IOPS:

fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Read_Testing
测试顺序写吞吐量:

fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Write_PPS_Testing
测试顺序读吞吐量:

fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Read_PPS_Testing

 

 

用法

      fio分顺序读  -rw=read ,随机读 -rw=randread,顺序写 -rw=write,随机写-rw=randwrite ,混合随机读写模式  -rw=randrw

参数:

       filename: 指定文件(设备)的名称。可以通过冒号分割同时指定多个文件,如filename=/dev/sda:/dev/sdb。

       directory: 设置filename的路径前缀。在后面的基准测试中,采用这种方式来指定设备。

       name: 指定job的名字,在命令行中表示新启动一个job。

       direct: bool类型,如果设置成true (1),表示不使用io buffer。

        ioengine: I/O引擎,现在fio支持19种ioengine。默认值是sync同步阻塞I/O,libaio是Linux的native异步I/O。

       iodepth: 如果ioengine采用异步方式,该参数表示一批提交保持的io单元数。该参数可参考文章“Fio压测工具和io队列深度理解和误区”。

       rw: I/O模式,随机读写,顺序读写等等。

       bs: I/O block大小,默认是4k。

       size: 指定job处理的文件的大小。

       numjobs: 指定job的克隆数(线程)。

       time_based: 如果在runtime指定的时间还没到时文件就被读写完成,将继续重复知道runtime时间结束。

       runtime: 指定在多少秒后停止进程。如果未指定该参数,fio将执行至指定的文件读写完全完成。

       group_reporting: 当同时指定了numjobs了时,输出结果按组显示。

 

 

 

 

lsblk -S

 

 

 

spi接口介绍

SPI = Serial Peripheral Interface,是串行外围设备接口,是一种高速,全双工,同步的通信总线。

 

硬盘接口类型
并行(口) (接口速率)

ide:133MB/s
SCISI:640MB/s
串行(接口速率)

SATA:6Gbps
SAS:6Gbps
USB:480MB/s
/dev/DEV_FILE

磁盘设备的设备文件命名
IDE:/dev/hd

SCSI,SATA,SAS,USB:/dev/sd

不同设备:a-z
/dev/sda,/dev/sdb
同一设备上的不同分区:1,2,…
/dev/sda1,/dev/sda5
 

 

磁盘与主板连接接口有哪几类

硬件接口

 

有SATA、SAS、IDE与SCSI等。若考虑外接式磁盘,那还包括USB、SATA等接口。不过目前IDE已经SATA取代,而SCSI则被SAS替换,因此我们下面将仅介绍SATA、USB、与SAS接口

ATA、SATA、SCSI、SAS、FC

 

scsi和iscsi区别

小型计算机系统接口(英语:Small Computer System Interface; 简写:SCSI),一种用于计算机和智能设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。 SCSI是一种智能的通用接口标准。它是各种计算机与外部设备之间的接口标准。

http://baike.baidu.com/view/611524.htm?fromId=5739

iSCSI:Internet 小型计算机系统接口 (iSCSI:Internet Small Computer System Interface)。
  Internet 小型计算机系统接口(iSCSI)是一种基于 TCP/IP的协议,用来建立和管理 IP 存储设备、主机和客户机等之间的相互连接,并创建存储区域网络(SAN)。SAN 使得 SCSI 协议应用于高速数据传输网络成为可能,这种传输以数据块级别(block-level)在多个数据存储网络间进行。

 http://baike.baidu.com/view/120148.htm

        iSCSI技术是一种由IBM公司研究开发的,是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换资料。

SCSI与ISCSI是两种不同的概念:


   iSCSI,即internet SCSI,是IETF制订的一项标准,用于将SCSI数据块映射成以太网数据包。从根本上说,iSCSI协议是一种跨过IP网络来传输潜伏时间短的 SCSI数据块的方法;简单的说, iSCSI可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。

SCSI 的意义是小型计算机系统接口(Small Computer System Interface);今天的SCSI已划分为SCSI-1和SCSI-2,以及最新的SCSI-3三个类型。不过,目前最为流行的版本还要算是SCSI-2

 

 

 

 

 

 

转载摘录:

https://www.hrers.com/?p=320

https://blog.51cto.com/shaonian/2319175

https://new.qq.com/omn/20200205/20200205A0OJEG00.html?pc

https://zhidao.baidu.com/question/559504411783768204.html

https://blog.csdn.net/yujin2010good/article/details/8693638

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值