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. 对于 Azure 托管磁盘:托管磁盘计数限制是区域性的,并且也取决于存储类型。 默认值(也是最大限制)为每个订阅、每个区域及每种存储类型 10,000 个。 例如,可以在一个订阅及一个区域中最多创建 10,000 个标准托管磁盘和 10,000 个高级托管磁盘。
托管快照和映像计入托管磁盘限制。
- 2. 标准存储帐户: 标准存储帐户的总请求率上限为 20,000 IOPS。 在标准存储帐户中,所有虚拟机磁盘的 IOPS 总数不应超过此限制。
可以根据请求率的限制,大致计算单个标准存储帐户可支持的重度使用磁盘数。 例如,对于基本层 VM,重度使用的磁盘数上限约为 66(每个磁盘 20,000/300 IOPS);对于标准层 VM,约为 40(每个磁盘 20,000/500 IOPS),如下表中所示。
- 3. 高级存储帐户:高级存储帐户的总吞吐量速率上限为 50 Gbps。 所有 VM 磁盘的总吞吐量不应超过此限制。
其他详细信息,请参考虚拟机大小:https://docs.azure.cn/zh-cn/virtual-machines/linux/sizes-general
- 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)
- 为VM添加P30数据磁盘
- 在门户里添加后,在VM里创建分区格式化挂盘/mnt
- 随机读,文件块大小为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
- 随机写,文件块大小为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
- 随机读写,文件块大小为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)
- 添加两块P30数据磁盘,创建分区的适合一定要改成Raid类型,两块盘都按如下方式设置成raid类型
- 做raid0,mdadm --create /dev/md0 --level 0 --raid-devices 2 /dev/sdc /dev/sdd
- 随机读,文件块大小为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
- 随机写,文件块大小为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
- 随机读写,文件块大小为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/
六. 总结
- FIO和IOmeter测试数据可以测试出官网对应IOPS对应最大值,基本上略高于一些;
- 合理使用测试工具,对测试参数进行调整,把压力打上去才能测试出最大效果;