Azure的云存储一直是Azure比较自豪的东西,想到AWS的LSA后面有若干个9,搞得大家都以为它的存储最优秀,其实不然,Azure存储到现在没有丢过客户1bit的数据,但是Azure不会去说我们的LSA是100%,因为是自找麻烦,但是实际上无论从performance还是可靠性,Azure的普通存储或者SSD都是很优越的,口说无凭,必须让事实来说话,就是这么自信,好了,不废话了,直接进入主题。

本次测试中,笔者特地去GitHub上搜索了一下,排名第一的是cxcv/iops,所以本次测试我们选用该工具进行测试,在这里笔者说一下,我知道很多人喜欢用DD测试,但我个人并不推崇DD测试,这是DD测试的原理造成的,只能提供一个大概的结果,而且是连续IO而不是随机IO,理论上是文件越大,测试结果越准确,bs是io一次读的规模,理论上是bs越大,测试的性能越高,count为读了多少个bs,这就是DD测试的大致原理,但总感觉有失偏颇,还有很多人在测试的时候,会去测试虚拟机的C盘,我要提醒大家一句,C盘是vm的系统盘,并不适合进行大规模的读写测试,所以很多人问笔者,你们Azure的C盘IO性能好差啊,连普通磁盘的性能都不如,其实这么说是不对的,Azure的C盘是人为进行设定过的,是不支持大规模的读写测试的,但是笔者曾经测试过Azure的D盘,性能却非常优秀,但是D盘只是临时盘,所以笔者不建议将数据放在临时盘,以免丢失。

首先,说一下本次poc环境,先在中国东部起一台vm,如果有读者想测SSD磁盘的性能,笔者的建议是建一台DS系列的虚拟机,然后用DS系列挂载SSD磁盘,测试SSD磁盘(A系列的VM是不支持挂载SSD的),测试完成以后删除附加的SSD,我们将DS虚拟机降为A系列虚拟机,再挂载普通的HDD磁盘,进行测试,有读者不禁会问,那我可以先建一台A系列机,然后再升成DS系列虚拟机,其实真的是这样嘛?使用过Azure的人会发现有时候A系列虚拟机并不能升成DS系列,这是什么原因呢,在这里笔者先卖个关子,会在后续的博文中单独开一章来讲Azure的底层架构中再详细介绍,在本篇博文重点展示方法论,所以只测试HDD磁盘性能

虚拟机的建立这里不再介绍,如果有不会的读者可以自行百度或者翻看我前面的博文,结果如下

接下给该台虚拟机附加磁盘

点击确定就可以了

这里笔者想说一句,我们看到了IOPS最大为500,吞吐量最大为60MB/s,但是实测结果会有点偏差,有读者不禁会问,你还没测你怎么会知道,废话,我当然测试过了,不然就来写博客了?开个玩笑,还有一个重要的要点大家记得,就是测试的时候,记得关闭主机缓存,很多人不理解,是这样的,开了主机缓存在测试的时候它首先会查找上次的读写的数据源,如果能hit到性能提升,如果hit不到性能下降,所以笔者的建议是在测试的时候关闭,保证测试结果准确性。

SSH登陆虚拟机,输入sudo ls /dev 看到如下结果

sda为虚拟机系统盘,sdb为虚拟机临时盘,sdc为刚刚附加的磁盘

输入sudo fdisk -l 看到如下结果

磁盘容量为1TB

输入sudo fdisk /dev/sdc看到如下结果

输入p

按照步骤完成以下操作

这样,磁盘就被分好区了,这里为了操作简单,只有一个主分区

接下来格式化磁盘,用mkfs.ext4前,先看一下帮助文件

输入man mkfs.ext4,按空格找到lazy,看到如下截图

输入如下命令进行快速格式化

[yangyang@pocvm ~]$ sudo mkfs.ext4 -E lazy_itable_init /dev/sdc1

看到如下结果

我们发现1TB的硬盘瞬间就格式化完成

接下来我们挂载磁盘,看到如下结果说明磁盘挂载成功

[yangyang@pocvm ~]$ sudo mkdir /1T
[yangyang@pocvm ~]$ sudo mount /dev/sdc1 /1T
[yangyang@pocvm ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 30G .1G 29G % /
devtmpfs 829M 829M % /dev
tmpfs 839M 839M % /dev/shm
tmpfs 839M 8.3M 831M % /run
tmpfs 839M 839M % /sys/fs/cgroup
/dev/sdb1 69G 53M 66G % /mnt/resource
tmpfs 168M 168M % /run/user/
/dev/sdc1 1007G 77M 956G % /1T
[yangyang@pocvm ~]$ sudo mount /dev/sdc1 /1T

接下来我们开始测试iops,使用cxcv/iops

安装该pyton程序,代码链接

输入vim iops.py  将代码复制进去并保存

修改该文件权限,不然不具备可执行权限

[yangyang@pocvm ~]$ chmod  iops.py
[yangyang@pocvm ~]$ ll
total
-rwxr-xr-x. yangyang yangyang Dec : iops.py
[yangyang@pocvm ~]$ sudo ./iops.py /dev/sdc1
/dev/sdc1, 1.10 T, sectorsize=512B, #threads=, pattern=random:
B blocks: 729.3 IO/s, 373.4 kB/s ( 3.0 Mbit/s)
kB blocks: 405.3 IO/s, 415.1 kB/s ( 3.3 Mbit/s)
kB blocks: 336.6 IO/s, 689.3 kB/s ( 5.5 Mbit/s)
kB blocks: 243.7 IO/s, 998.3 kB/s ( 8.0 Mbit/s)
kB blocks: 246.4 IO/s, 2.0 MB/s ( 16.2 Mbit/s)
kB blocks: 253.7 IO/s, 4.2 MB/s ( 33.3 Mbit/s)
kB blocks: 241.1 IO/s, 7.9 MB/s ( 63.2 Mbit/s)
kB blocks: 177.4 IO/s, 11.6 MB/s ( 93.0 Mbit/s)
kB blocks: 102.3 IO/s, 13.4 MB/s (107.3 Mbit/s)
kB blocks: 105.0 IO/s, 27.5 MB/s (220.3 Mbit/s)
kB blocks: 69.0 IO/s, 36.2 MB/s (289.5 Mbit/s)
MB blocks: 35.7 IO/s, 37.4 MB/s (299.6 Mbit/s)
MB blocks: 21.8 IO/s, 45.7 MB/s (365.3 Mbit/s)
MB blocks: 11.1 IO/s, 46.4 MB/s (371.5 Mbit/s)
MB blocks: 9.7 IO/s, 81.5 MB/s (651.8 Mbit/s)
MB blocks: 4.9 IO/s, 82.7 MB/s (661.5 Mbit/s)
[yangyang@pocvm ~]$

我们可以看到iops峰值可以达到700+,吞吐量可以达到80+,说明azure普通磁盘的性能还是非常优秀的,但是每次测试结果可能会有点偏差,但是基本能保持稳定

接下来我们换成另一个测试工具,就是大家都喜欢的fio,我们可以直接到官网上去下载,这里下载的版本为fio-2.1.10 然后通过SSH将压缩包上传上去,关于如何通过SSH上传本地文件,这里就不再赘述,如果有不会的读者自行百度,当然你也可以通过安装epel源来安装fio。

接下来输入

[yangyang@pocvm ~]$ sudo tar -zxvf  fio-2.1..tar.gz
[yangyang@pocvm ~]$ sudo cd /home/yangyang/fio-2.1.
[yangyang@pocvm ~]$ sudo make
[yangyang@pocvm ~]$ sudo make install
[yangyang@pocvm ~]$ sudo cd /usr/local/bin
[yangyang@pocvm ~]$ ls

看到如下结果,说明安装成功

接下来我们开始测试,测试的方式有两种,一种是通过手动输入命令,另一种是通过通过建立配置文件来执行测试,这里我们选择第二种,如果对一种方式感兴趣的读者可以参考如下链接,fio配置测试

输入vim fio.conf  将以下内容拷贝进去并保存

[global]
ioengine=psync
direct=
thread=
norandommap=
randrepeat=
runtime=
ramp_time=
size=1g
directory=/path/to/test [read4k-rand]
stonewall
group_reporting
bs=4k
rw=randread
numjobs=
iodepth= [read64k-seq]
stonewall
group_reporting
bs=64k
rw=read
numjobs=
iodepth= [write4k-rand]
stonewall
group_reporting
bs=4k
rw=randwrite
numjobs=
iodepth= [write64k-seq]
stonewall
group_reporting
bs=64k
rw=write
numjobs=
iodepth=

以上就是各个测试配置的参数

这里共有4个测试,顺序读,随机读,顺序写,随机写,同时采取同步模式进行测试

笔者的习惯是修改一下该文件的权限,以防止因为权限不足不能执行

[yangyang@pocvm ~]$ sudo chmod  fio.conf

这里有一点要注意需要在根目录下建立如下文件夹,否则接下来的测试会找不到路径

[yangyang@pocvm ~]$ sudo mkdir /path/
[yangyang@pocvm ~]$ sudo mkdir /path/to/
[yangyang@pocvm ~]$ sudo mkdir /path/to/test/

接下来的步骤至关重要

输入如下命令

[yangyang@pocvm ~]$ sudo /usr/local/bin/fio fio.conf>sync.txt

这一步其实就是用fio来执行刚刚的配置文件fio.conf 并且将执行的结果写入sync.txt中,但是这里提醒大家一句,执行完该命令以后,会发现有长时间的卡停,这时候不要急于停止,因为在执行配置文件过程是比较漫长的,如果不等待配置文件中的内容执行完毕,会直接影响以下结果的输出!!!

输入如下命令

[yangyang@pocvm ~]$ grep iops sync.txt

显示sync.txt中的测试结果

[yangyang@pocvm ~]$ grep iops sync.txt
read : io=118608KB, bw=.1KB/s, iops=, runt= 60027msec
read : io=.9MB, bw=31403KB/s, iops=, runt= 60027msec
write: io=62180KB, bw=.8KB/s, iops=, runt= 60153msec
write: io=974336KB, bw=16782KB/s, iops=, runt= 58057msec

将配置文件中的ioengine=psync换成ioengine=libaio

[yangyang@pocvm ~]$ sudo /usr/local/bin/fio fio.conf>async.txt
[yangyang@pocvm ~]$ grep iops async.txt
read : io=194248KB, bw=.9KB/s, iops=, runt= 60441msec
read : io=.7MB, bw=36798KB/s, iops=, runt= 60097msec
write: io=66060KB, bw=.74KB/s, iops=, runt= 66211msec
write: io=.2MB, bw=23310KB/s, iops=, runt= 60848msec

我们会发现iops有所增加,主要表现在顺序读和写这两者增加比较多

有笔者在进行libaio测试的时候会遇到如下错误

这是由于缺少libaio devel这个安装包造成的

输入sudo yum install libaio-devel即可,但是装完必须重新解压fio 然后再make和make install,否则还是不行!!!

如何对Azure磁盘性能进行测试的更多相关文章

  1. Azure磁盘的吞吐量测试

    Azure的高级存储具有吞吐量大,延迟低的特点,非常适合时间关键型的应用程序(如SQL Server, Oracle, Redis等). 但高级存储同时具有价格高的特点,用户往往对其实际的性能数据较为 ...

  2. 使用iozone测试磁盘性能(测试文件读写)

    IOzone是一个文件系统测试基准工具.可以测试不同的操作系统中文件系统的读写性能.可以通过 write, re-write, read, re-read, random read, random w ...

  3. [AWS vs Azure] 云计算里AWS和Azure的探究(5) ——EC2和Azure VM磁盘性能分析

    云计算里AWS和Azure的探究(5) ——EC2和Azure VM磁盘性能分析 在虚拟机创建完成之后,CPU和内存的配置等等基本上是一目了然的.如果不考虑显卡性能,一台机器最重要的性能瓶颈就是硬盘. ...

  4. 理解及快速测定 Azure 虚拟机的磁盘性能

    随着越来越多的用户将生产系统迁移到 Azure 平台的虚拟机服务中,Azure 虚拟机的性能愈发被关注.传统的数据中心中,我们通常使用 CPU,内存,存储和网络的性能来衡量生产压力.特别是对于 IO ...

  5. 【虚拟机-磁盘管理】理解及快速测定 Azure 虚拟机的磁盘性能

    随着越来越多的用户将生产系统迁移到 Azure 平台的虚拟机服务中,Azure 虚拟机的性能愈发被关注.传统的数据中心中,我们通常使用 CPU,内存,存储和网络的性能来衡量生产压力.特别是对于 IO ...

  6. 使用SQLIO测试磁盘性能

    SQLIO 是一个用于测试存储系统能力的命令行工具,用以获取存储系统相关的性能指标,以判断系统的 I/O 处理能力. 在微软的网站可以下载 SQLIO 的安装包,安装后目录中会出现如下文件: EULA ...

  7. iozone测试磁盘性能

    什么是iozone? iozone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能. 可以测试 Read, write, re-read,re-write, read ...

  8. 使用iozone测试磁盘性能

    IOzone是一个文件系统测试基准工具.可以测试不同的操作系统中文件系统的读写性能.可以通过 write, re-write, read, re-read, random read, random w ...

  9. 【转】dd命令详解及利用dd测试磁盘性能

    dd命令详解及利用dd测试磁盘性能   linux下dd命令详解 名称: dd 使用权限: 所有使用者 manpage 定义: convert and copy a file 使用方式: dd [op ...

随机推荐

  1. svm训练显示信息说明

    现简单对屏幕回显信息进行说明: #iter 为迭代次数, nu  与前面的操作参数 -n nu  相同, obj 为 SVM 文件转换为的二次规划求解得到的最小值, rho  为判决函数的常数项 b  ...

  2. Linux系统1.md

    计算机 介绍 电子计算机(英语:computer),亦称电脑,是一种利用电子学原理,根据一系列指令对数据进行处理的工具. 在现代,机械计算机的应用已经完全被电子计算机所替换,其所相关的技术研究叫计算机 ...

  3. 错误提示:LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt 的解决方法

    最近在win7 系统下,打算利用 cmake 生成项目文件,然后用vs2010进行编译.但是在cmake的时候出现错误弹窗:

  4. OllyUni.dll

    OllyUni.dll 周银辉 好像很多人找不到OllyUni.dll ,下载在这里:http://www.phenoelit.org/win/index.html 注:在OllyDBG2.0中用不了 ...

  5. java并发编程学习: 守护线程(Daemon Thread)

    在正式理解这个概念前,先把 守护线程 与 守护进程 这二个极其相似的说法区分开,守护进程通常是为了防止某些应用因各种意外原因退出,而在后台独立运行的系统服务或应用程序. 比如:我们开发了一个邮件发送程 ...

  6. 阅读ArrayBlockingQueue源码了解如何利用锁实现BlockingQueue

    BlockingQueue是多线程里面一个非常重要的数据结构.在面试的时候,也常会被问到怎么实现BlockingQueue.本篇根据Java7里ArrayBlockingQueue的源码,简单介绍一下 ...

  7. Word2Vec 使用总结

    word2vec 是google 推出的做词嵌入(word embedding)的开源工具. 简单的说,它在给定的语料库上训练一个模型,然后会输出所有出现在语料库上的单词的向量表示,这个向量称为&qu ...

  8. C#扩展方法知多少

    前言:上篇 序列化效率比拼——谁是最后的赢家Newtonsoft.Json 介绍了下序列化方面的知识.看过Demo的朋友可能注意到了里面就用到过泛型的扩展方法,本篇打算总结下C#扩展方法的用法.博主打 ...

  9. JavaScript语法规范

    推荐的JavaScript编码规范 阅读 247 评论 0 喜欢 0 作为前端开发人员,我相信每一个人都或多或少的用到原生的JavaScript,也正是因为用的人多,导致编码风格也是多种多样的,而不规 ...

  10. Win10 PC一周年更新正式版14393.447 32位/64位更新补丁KB3200970下载 Flash补丁Kb3202790下载

    微软在今天凌晨推送了Win10 PC一周年更新正式版14393.447,本次更新补丁代号为KB3200970,面向Win10一周年更新正式版的PC用户. 更新日志 • 提升了多媒体音频.远程桌面以及I ...