块存储性能

性能指标

衡量块存储产品的性能指标主要包括:IOPS、吞吐量和访问时延。

  • IOPS

    IOPS是Input/Output Operations per Second,即每秒能处理的I/O个数,用于表示块存储处理读写(输出/输入)的能力。如果要部署事务密集型应用,典型场景比如数据库类业务应用,需要关注IOPS性能。

    最普遍的IOPS性能指标是顺序操作和随机操作,如下表所示。

     
    IOPS性能指标 描述
    总 IOPS 每秒执行的I/O操作总次数。
    随机读IOPS 每秒执行的随机读I/O操作的平均次数 对硬盘存储位置的不连续访问。
    随机写IOPS 每秒执行的随机写I/O操作的平均次数
    顺序读IOPS 每秒执行的顺序读I/O操作的平均次数 对硬盘存储位置的连续访问。
  • 吞吐量

    吞吐量是指单位时间内可以成功传输的数据数量。

    如果要部署大量顺序读写的应用,典型场景比如Hadoop离线计算型业务,需要关注吞吐量。

  • 访问时延

    访问时延是指块存储处理一个I/O需要的时间。

    如果您的应用对时延比较敏感,比如数据库(过高的时延会导致应用性能下降或报错),建议您使用ESSD云盘、SSD云盘、SSD共享块存储或本地SSD盘类产品。

    如果您的应用更偏重存储吞吐能力,对时延相对不太敏感,比如Hadoop离线计算等吞吐密集型应用,建议您使用本地HDD盘类产品,如d1或d1ne大数据型实例。

性能对比

以下是不同块存储产品的性能对比表。

块存储按照二进制单位计算,单位为GiB、KiB、TiB或者MiB。

安装 fio libaio

# 阿里云yum源

yum -y  install libaio-devel  fio

性能测试

Linux实例和Windows实例都推荐使用FIO工具进行测试块存储性能。

说明 您也可以使用其他工具测试块存储性能,但不同工具测试出来的硬盘基准性能会有差异,如dd、sysbench、iometer等工具可能会受到测试参数配置和文件系统影响,难以反映真实的磁盘性能。本文中所描述的性能参数,均为Linux实例下采用FIO工具的测试结果,以此作为块存储产品性能指标参考。

测试随机写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
-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塞满。

  • 异步

    异步的I/O通常使用libaio这样的方式一次提交一批I/O请求,然后等待一批的完成,减少交互的次数,会更有效率。
-bs=4k
表示单次I/O的块文件大小为4 KB。未指定该参数时的默认大小也是4 KB。

测试IOPS时,建议将bs设置为一个比较小的值,如本示例中的4k。

测试吞吐量时,建议将bs设置为一个较大的值,如本示例中的1024k。

-size=1G 表示测试文件大小为1 GiB。
-numjobs=1 表示测试线程数为1。
-runtime=1000 表示测试时间为1000秒。如果未配置,则持续将前述-size指定大小的文件,以每次-bs值为分块大小写完。
-group_reporting 表示测试结果里汇总每个进程的统计信息,而非以不同job汇总展示信息。
-filename=iotest 指定测试文件的名称,比如iotest。测试裸盘可以获得真实的硬盘性能,但直接测试裸盘会破坏文件系统结构,请在测试前提前做好数据备份。
-name=Rand_Write_Testing 表示测试任务名称为Rand_Write_Testing,可以随意设定。

摘录: https://help.aliyun.com/document_detail/25382.html?spm=5176.diskbuyv3.cloudDisk.1.5e903675IyKvEd

原文地址:https://www.cnblogs.com/fengjian2016/p/10605536.html

时间: 2024-07-30 18:21:00

块存储性能的相关文章

软件对存储性能的影响​

存储系统的核心是软件,在磁盘存储时代,存储系统软件设计的好坏似乎对性能的影响并不是很大,很多存储软件的设计并不会去考虑计算机的体系架构,也不用去关心操作系统调度.内存拷贝等因素带来的性能影响.对于磁盘存储,事情的确是这样的,原因在于磁盘的性能远远低于CPU处理和访存性能.磁盘存储的性能瓶颈点就在于磁盘本身,因此过多的体系结构级别.竞争资源同步的优化,不会对存储性能带来显著优化. 在很久以前做过这方面的实践,当时觉得临界区的资源竞争会对IO性能造成影响,因此,对我们做的一套存储虚拟化系统进行锁资源

架构设计:系统存储(2)——块存储方案(2)

接上文<架构设计:系统存储(1)--块存储方案(1)> 4-2.固态硬盘工作过程 本小节我们要解决一个关键问题:既然机械硬盘和固态硬盘从工作原理.制作工艺.技术规范等多个方面都完全不一样,那为什么无论硬件层是使用机械硬盘还是固态硬盘操作系统却都可以进行识别,并在其上进行数据读写呢? 这个问题中,计算机系统不同层次对数据操作最小单位的定义不一致都还是一个小问题:虽然机械硬盘上数据操作单元为512字节.固态硬盘上数据操作单元为4KB.操作系统层面定义的数据操作单元可能是1KB\2KB\4KB\8K

对象存储VS块存储

在今天的IT环境中,云计算已经作为一个时代的代名词,而在云的存储基础设施中,对象存储和块存储是两个最基本的存储形式,也是各家云提供商最常提供的两种基础存储服务.那么对象存储与块存储有什么联系和区别呢,下面我将从基础层面为各位看官慢慢道来. 通常意义上来说,对象存储也就是键值存储,一般提供使用HTTP协议通过简单的PUT .GET等接口,适合在云环境中进行大规模的非结构化数据存储使用.而块存储主要指能够模拟或表现为计算机裸盘,能够被计算主机当做硬盘使用的存储形式.从这个角度看,对象存储和块存储并没

【恒天云技术分享系列10】OpenStack块存储技术

原文:http://www.hengtianyun.com/download-show-id-101.html 块存储,简单来说就是提供了块设备存储的接口.用户需要把块存储卷附加到虚拟机(或者裸机)上后才可以与其交互.这些卷都是持久的,它们可以被从运行实例上解除或者重新附加而数据保持完整不变.OpenStack 中的实例是不能持久化的,需要挂载 volume,在 volume 中实现持久化.Cinder 就是提供对 volume 实际需要的存储块单元的实现管理功能. 1.单机块存储 1.1 LV

块存储、对象存储和文件系统: 它们对容器而言意味着什么?

当管理员首次开始使用Docker容器时,通常会使其感到惊讶的是, 容器本身采用的是非永久性存储.当容器被移除时, 容器的存储也被移除了. 当然,如果没有办法实现永久存储,则容器应用程序的使用将会非常受限.幸运的是,有些方法在容器化的环境中可以实现持久存储.尽管容器本身的原生存储是非持久性的,但可以将容器连接到容器外部的存储区.此操作允许持久性数据的存储,因为当容器停止时,该外部存储不会被移除. 决定如何为容器实现持久存储的第一步是确定您将使用的存储系统的基础类型.在这方面, 通常有三种主要选项:

磁盘工作原理、文件系统及i节点、块存储、文件存储、对象存储、DAS、NAS、还有SAN

(一)磁盘工作原理 一般硬盘正面贴有产品标签,主要包括厂家信息和产品信息,如商标.型号.序列号.生产日期.容量.参数和主从设置方法等.这些信息是正确使用硬盘的基本依据,下面将逐步介绍它们的含义. 硬盘主要由盘体.控制电路板和接口部件等组成,如图1-1所示.盘体是一个密封的腔体.硬盘的内部结构通常是指盘体的内部结构:控制电路板上主要有 硬盘BIOS.硬盘缓存(即CACHE)和主控制芯片等单元,如图1-2所示:硬盘接口包括电源插座.数据接口和主.从跳线,如图1-3所示. 图1-1 硬盘的外观 图1-

存储性能优化方向整理

0概述 0.1 存储性能优化指标 io速率:速率提升数值和百分比 iops:iops提升数值和百分比 0.2 优化方向概述 块存储优化方向:优化的工作,基本上都是在底层,上层只是一些配置. 这些底层的技术适用于ceph块设备,主要是ceph还有自身的一些配置.缓存方案可以拿过来用,在最后补充一下. 底层包括qemu/kvm/kernel三个层面,kernel又主要是filesystem.scsi和block这部分和存储关系最大,也是存储系统由上而下的三部分.我认为如果优化的话,主要工作在这几个方

性能优化——存储性能优化

核心知识点: 存储性能优化无非从磁盘类型.数据结构以及存储备份方式来进行,根据业务场景选择最合适的方案. 1.机械vsSSD(磁盘类型) a.机械:由于每次访问数据,都需要移动磁头臂,因此连续访问和随机访问性能差别比较大.快速顺序读写.慢速随机读写 b.SSD:使用硅晶体存储数据,因此像内存一样随机访问,功耗和噪音也比较小,但是可靠性和性价比有待提高. 2.B+树 vs LSM树(数据结构) a.为了优化磁盘的随机读写能力,文件系统或数据库系统会先将数据排序,保证数据更新.插入.删除之后依然有序

块存储、文件存储和对象存储

一.块存储 典型设备:磁盘阵列,硬盘 块存储主要是将裸磁盘空间整个映射给主机使用的,就是说例如磁盘阵列里面有5块硬盘(为方便说明,假设每个硬盘1G),然后可以通过划逻辑盘.做Raid.或者LVM(逻辑卷)等种种方式逻辑划分出N个逻辑的硬盘.(假设划分完的逻辑盘也是5个,每个也是1G,但是这5个1G的逻辑盘已经于原来的5个物理硬盘意义完全不同了.例如第一个逻辑硬盘A里面,可能第一个200M是来自物理硬盘1,第二个200M是来自物理硬盘2,所以逻辑硬盘A是由多个物理硬盘逻辑虚构出来的硬盘.) 接着块