代码改变世界

Azure 磁盘IOPS测试

2018-03-12 00:26 by WangSong技术点滴, ... 阅读, ... 评论, 收藏, 编辑

Azure  磁盘IOPS测试

 

本文介绍分为以下几个部分:

l  Azure上的磁盘知识点梳理

l  FIO测试工具安装

l  磁盘IOPS测试(CentOS-7.3,标准 DS4 (8 vcpu,28 GB 内存),托管磁盘,单块P30,官网IOPS 5000)

l  磁盘IOPS测试(CentOS-7.3,标准 DS4 (8 vcpu,28 GB 内存),托管磁盘,两块P30做Raid 0,可以达到10000IOPS)

l  Windows VM IOPS测试

l  总结

 

一.              Azure上的磁盘知识点梳理

磁盘性能是客户使用VM的重要考量因素之一,Azure上的VM磁盘性能的设计,每块HDD固定为500IOPS,SSD根据类型不同,IOPS也不同,最高为7500,本文将介绍如何使用FIO工具进行IOPS测试。

Azure 虚拟机支持附加许多的数据磁盘。 为了获得最佳性能,需要限制附加到虚拟机的、重度使用的磁盘数,以避免可能的性能限制。 只要不是所有磁盘在同一时间都重度使用,存储帐户就可以支持更多的磁盘。

  1. 1.       对于 Azure 托管磁盘:托管磁盘计数限制是区域性的,并且也取决于存储类型。 默认值(也是最大限制)为每个订阅、每个区域及每种存储类型 10,000 个。 例如,可以在一个订阅及一个区域中最多创建 10,000 个标准托管磁盘和 10,000 个高级托管磁盘。

托管快照和映像计入托管磁盘限制。

  1. 2.       标准存储帐户: 标准存储帐户的总请求率上限为 20,000 IOPS。 在标准存储帐户中,所有虚拟机磁盘的 IOPS 总数不应超过此限制。

可以根据请求率的限制,大致计算单个标准存储帐户可支持的重度使用磁盘数。 例如,对于基本层 VM,重度使用的磁盘数上限约为 66(每个磁盘 20,000/300 IOPS);对于标准层 VM,约为 40(每个磁盘 20,000/500 IOPS),如下表中所示。

  1. 3.       高级存储帐户:高级存储帐户的总吞吐量速率上限为 50 Gbps。 所有 VM 磁盘的总吞吐量不应超过此限制。

其他详细信息,请参考虚拟机大小:https://docs.azure.cn/zh-cn/virtual-machines/linux/sizes-general

  1. 4.       托管和非托管磁盘信息参考如下:

 

二.    FIO测试工具安装

FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。FIO与libaio-devel这个有依赖关系,安装之前需要先安装此包;

  1. yum install libaio*
  2. wget http://brick.kernel.dk/snaps/fio-3.5.tar.gz
  3. tar zxvf fio-3.5.tar.gz
  4. cd fio-3.5
  5. make
  6. make install

 

三.              磁盘IOPS测试(CentOS-7.3,标准 DS4 (8 vcpu,28 GB 内存),托管磁盘,单块P30,官网IOPS 5000

  1. 为VM添加P30数据磁盘

 

  1. 在门户里添加后,在VM里创建分区格式化挂盘/mnt

 

 

 

  1. 随机读,文件块大小为4KB

/home/azureuser/fio-3.5/fio  -filename=/mnt/randread -direct=1 -iodepth 128 -rw=randread -ioengine=libaio -bs=4k -size=4G -numjobs=1 -runtime=30 -group_reporting -name=iopstest

 

  1. 随机写,文件块大小为4KB

/home/azureuser/fio-3.5/fio  -filename=/mnt/randwrite -direct=1 -iodepth 128 -rw=randwrite -ioengine=libaio -bs=4k -size=4G -numjobs=1 -runtime=30 -group_reporting -name=iopstest

 

  1. 随机读写,文件块大小为4KB

/home/azureuser/fio-3.5/fio  -filename=/mnt/randrw -direct=1 -iodepth 128 -rw=randrw -ioengine=libaio -bs=4k -size=4G -numjobs=1 -runtime=30 -group_reporting -name=iopstest

 

四.              磁盘IOPS测试(CentOS-7.3,标准 DS4 (8 vcpu,28 GB 内存),托管磁盘,两块P30做Raid 0,可以达到10000IOPS

  1. 添加两块P30数据磁盘,创建分区的适合一定要改成Raid类型,两块盘都按如下方式设置成raid类型

 

  1. 做raid0,mdadm --create /dev/md0 --level 0 --raid-devices 2 /dev/sdc /dev/sdd

 

  1. 随机读,文件块大小为4KB

/home/azureuser/fio-3.5/fio  -filename=/mnt/randread -direct=1 -iodepth 128 -rw=randread -ioengine=libaio -bs=4k -size=4G -numjobs=1 -runtime=30 -group_reporting -name=iopstest

 

  1. 随机写,文件块大小为4KB

/home/azureuser/fio-3.5/fio  -filename=/mnt/randwrite -direct=1 -iodepth 128 -rw=randwrite -ioengine=libaio -bs=4k -size=4G -numjobs=1 -runtime=30 -group_reporting -name=iopstest

 

  1. 随机读写,文件块大小为4KB

/home/azureuser/fio-3.5/fio  -filename=/mnt/randrw -direct=1 -iodepth 128 -rw=randrw -ioengine=libaio -bs=4k -size=4G -numjobs=1 -runtime=30 -group_reporting -name=iopstest

 

五.              Windows VM IOPS测试

使用IOmeter测试工具,具体参考我同事韩老师的博客:http://aubreyhan.net/undefined/49750/

六.              总结

  1. FIO和IOmeter测试数据可以测试出官网对应IOPS对应最大值,基本上略高于一些;
  2. 合理使用测试工具,对测试参数进行调整,把压力打上去才能测试出最大效果;