通常情况下,广义的IOPS指得是服务器和存储系统处理的I/O数量。但是,由于在IO传输的过程中,数据包会被分割成多块(block),交由存储阵列缓存或者磁盘处理,对于磁盘来说这样每个block在存储系统内部也被视为一个I/O,存储系统内部由缓存到磁盘的的数据处理也会以IOPS来作为计量的指标之一。本文中提到的IOPS,是指得广义的IOPS,即由服务器发起的,并由存储系统中处理的I/O单位。

IOPS(Input/Output Operations Per Second)是一个用于计算机存储设备(如硬盘(HDD)、固态硬盘(SSD)或存储区域网络(SAN))性能测试的量测方式,可以视为是每秒的读写次数。和其他性能测试一样,存储设备制造商提出的IOPS不保证就是实际应用下的性能。

IOPS可以用应用程序来量测,例如一开始由微软开发的Iometer,像IOzone及FIO也有类似功能,IOPS主要会用在服务器,以找到最佳的存储配置。

IOPS通常对于小I/O,且传输I/O的数量比较大的情况下,是一个最主要的衡量指标。例如,典型的OLTP系统中,高的IOPS则意味着数据库的事务可以被存储系统处理。

Throughput吞吐量是用来计算每秒在I/O流中传输的数据总量。这个指标,在大多数的磁盘性能计算工具中都会显示,最简单的在Windows文件拷贝的时候,就会显示MB/s。通常情况下,Throughput吞吐量只会计算I/O包中的数据部分,至于I/O包头的数据则会被忽略在Throughput吞吐量的计算中。广义上的Throughput吞吐量,也会被叫做“带宽”,用来衡量I/O流中的传输通道,比如2/4/8Gbps Fibre Channel、60Mbps SCSI等等。但 “带宽”会包括通道中所有数据的总传输量的最大值,而Throughput吞吐量则是只保护传输的实际数据,两者还是有些许区别。

Throughput吞吐量衡量对于大I/O,特别是传输一定数据的时候最小化耗时非常有用。备份数据的时候是一个典型的例子。在备份作业中,我们通常不会关心有多少I/O被存储系统处理了,而是完成备份总数据的时间多少。IOPS和Throughput吞吐量之间存在着线性的变化关系,而决定它们的变化的变量就是每个I/O的大小。