服务器虚拟化对存储性能的影响分析

H3C目前已经部署了Hyper-V、VMware、OVM、CAS等虚拟化产品,应用包括邮件、Notes、中间件、数据库、防病毒、文件服务等在内,近150个应用运行在约450台虚拟机上。虚拟化给企业节省了硬件成本,提高了资源利用率,方便管理员部署系统。但虚拟化性能损耗大、响应缓慢等问题也随之而来。本文专门针对虚拟机所挂载存储的性能进行了测试,希望通过此文能给大家提供一个参考,找到不同虚拟化产品与存储之间的结合点。

文/倪泽峰

虚拟化对存储系统性能影响的主要有5个因素:

- 虚拟化平台操作系统对存储的读写操作机制;

- 不同操作系统对存储的读写操作机制;

- 半虚拟化驱动与全软件模拟;

- Cache缓存的配置;

- 测试软件的压力机制及稳定性。

除此以外,HBA卡的型号,服务器和存储的连接模式,网线的类型都能影响存储的性能。

我们通过测试分析对比各虚拟化平台及物理机分别对IP SAN存储和FC SAN存储的性能影响,及在虚拟化平台下半虚拟化和全软件模拟的性能差异,虚拟化平台下Cache机制的不同对存储性能的影响。

一、 测试方法

本次测试重点关注存储的IOPS,IOPS (Input/Output Per Second)即每秒的读写次数,是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。随机读写频繁的应用,如OLTP(Online Transaction Processing)。对于存储的带宽则需多台客户端一起并行测试,故对测试环境拓扑的要求更为复杂,不利突出虚拟化对存储性能的影响,在测试过程中,为了减小各个环节的影响,测试采用直连的模式,在IP SAN存储中直接通过服务器的网卡连接存储设备,避免了中间环节以太网交换机对测试的影响,在FC SAN存储中直接通过服务器的HBA卡连接存储设备,避免了中间环节光纤交换机对测试的影响。

l Windows系统:采用SPC专业存储测试软件

SPC是专业的存储性能测试工具,得到业界存储厂商的认可,故在此测试中对Windows系统采用SPC软件进行测试。其中,SPC-1用于测试存储子系统在具有随机读写操作的同时进行查询更新操作等特征的应用环境中的性能表现,此类应用的代表有OLTP(联机事务处理)系统、数据库系统和邮件服务系统等,测试结果对IOPS特别敏感。

SPC-1测试工具由SPC官方发布,负责为ASU(Applications Storage Units)生成I/O请求,完成结果统计,并生成测试数据统计结果。

每个ASU的I/O流上可并发运行的实例的数目由BSU(Business Scaling Units)的数目指定。BSU在模型中用于模拟应用中的用户规模,一个BSU最多能模拟50个IOPS。BSU数目是测试的输入,通过调节BSU的数目来对I/O流量进行调节。

SPC-1要求I/O平均响应时间在30ms以内,因此若测试结束后平均响应时间小于30ms,那么该BSU可被认为是存储系统能达到的BSU数值,并得到相应的IOPS数值,在读写比例上,读占40%左右,写占60%左右,模拟了OLTP(联机事务处理)、数据库和邮件服务等应用的生产环境场景。

l Linux系统:采用FIO开源软件测试

FIO是一款Linux下开源的IO性能测试工具, 非常灵活,可以通过多线程或进程模拟各种IO操作,支持各种不同的I/O引擎。由于SPC License的影响,而且FIO是基于Linux下开源的工具,该软件作者也是Linux内核IO部分的开发者,故对Linux系统采用FIO开源软件进行测试。此次测试读写模式采用随机读和随机写的方式,单次IO大小设为8K,同spc测试工具,多线程数量为8,调用Linux自带异步IO模块Libaio。把Direct参数调为1,测试过程会绕过机器自带的Buffer,使测试结果更真实。

二、 测试方案

本次测试分析以VMware、Hyper-V和KVM为对象构建模拟环境,并采用专业的存储测试软件SPC和FIO工具进行测试。所测试的存储分别为一台FC存储和一台IP SAN存储。分析基于HP DL380 G5服务器为客户端,客观的模拟了生产环境的各个要素(IOPS、块大小、读写比例等),真实的反应了各虚拟化平台对存储的性能影响,本次测试也很好的反应了半虚拟化驱动在环境中的应用效果,突出了在不同Cache机制下对存储性能的影响(如表1所示)。

产品

产 品 版 本

VMware

VMware ESXi 5.1.0

Hyper-V

WindowsServe 2012 R2 Hyper-V

KVM

Red Hat Enterprise Linux 6.4 KVM

服务器

HP ProLiant DL380 G5,CPU Intel Xeon E5110 @1.6 GHZ 2*2核,内存8G, 2×146G 万转SAS硬盘做RAID1

虚拟机

4个vCPU,4G内存,OS Windows Server 2012和RHEL64

测试工具

FIO 2.1和 SPC

表1 虚拟化对存储性能影响的测试配置表

本次专项测试搭建的存储系统使用配置如表2所示:

存储类型

硬盘类型

硬盘转速(rpm)

硬盘数量(块)

硬盘大小(GB)

RAID级别

FC SAN

FC

15K

12

146

RAID10

IP SAN

SATA

7200

12

500

RAID10

表2 被测存储系统配置表

三、 测试数据

l Windows 2012平台

存储类型

虚拟化平台

IOPS

RAID级别

响应时间

容量

FC SAN存储

Native(非虚拟化 )

2901.87

RAID10

30.55

100GB

KVM

3801.24

RAID10

30.839

100GB

VMware

3903.13

RAID10

30.944

100GB

Hyper-V

2902.15

RAID10

30.11

100GB

IP SAN存储

Native(非虚拟化 )

1598.48

RAID10

22.365

100GB

VMware

1599.62

RAID10

28.553

100GB

Hyper-V

1598.41

RAID10

23.518

100GB

KVM

1584

RAID10

29.075

100GB

l Linux:RHEL64平台

存储类型

 虚拟化平台

读写类型

IOPS

带宽

响应时间

FC SAN存储

Native(非虚拟化)

随机写

3507

28071KB/s

58.66

随机读

3113

24916KB/s

65.5

VMware

随机写

3503

28038KB/s

61.08

随机读

4053

32436KB/s

55.06

Hyper-V

随机写

3300

26415KB/s

64.58

随机读

2088

16718KB/s

98.04

KVM

随机写

3122

24990KB/s

69.75

随机读

3117

24949KB/s

66.23

IP SAN存储

Native(非虚拟化)

随机写

1438

11520KB/s

143.08

随机读

1190

9530KB/s

171.01

VMware

随机写

1437

11508KB/s

144.32

随机读

1188

9516.6KB/s

171.93

Hyper-V

随机写

1436

11496KB/s

143.99

随机读

1187

9507.3KB/s

171.87

KVM

随机写

1433

11474KB/s

144.21

随机读

1189

9524.7KB/s

171.79

四、 测试数据对比分析

1. FC SAN在Linux平台上对比

图1 在Linux平台下对FC SAN存储IOPS的比较

从图1可以看出,读IOPS在VMware平台上虚拟的Linux操作系统性能最优,甚至高于裸机性能的30%,高于最低性能平台Hyper-V的94%。写IOPS在各虚拟化平台上,VMware也是性能最好的产品,性能和裸机相近,总体差异不大

图2 在Linux平台下对FC SAN存储延迟的比较

图2比较的是性能测试另一指标延迟,FIO测试工具体现的IO延迟基本上与IOPS成反比,IOPS越高,延迟越低,相反IOPS越低,延迟越高,故在延迟方面VMware也是最优。

2. FC SAN在Windows平台上对比

图3 Windows平台下对FC SAN存储IOPS的比较

3. 从图3可以看出,IOPS最好的虚拟化平台是VMware和KVM,SPC1测试软件本身定义了读写比例,在此IOPS值更能友好地体现应用整体性能。在延迟方面SPC1要求是测试结束后平均响应时间小于30ms,因此在这里不做比较。

4. IP SAN在Linux平台上对比

IP SAN存储性能测试的场景同FC SAN,测试工具同FC SAN,故能相对的反应出这两种不同类型存储性能的差异。

图4 在Linux平台下对IP SAN存储IOPS的比较

从图4的测试数据看出,IP SAN存储的性能对于不同虚拟化平台影响不大。

图5 在Linux平台下对IP SAN存储延迟的比较

如图5所示,从存储延迟方面的比较也说明了IP SAN存储的性能在不同虚拟化产品的差异不大。

5. IP SAN在Windows平台上对比

图6 Windows平台下对FC SAN存储IOPS的比较

从图6的测试数据看出,通过不同的测试工具SPC,IP SAN存储的性能对于不同虚拟化平台影响也不大,综合两种测试环境得出,IP SAN存储性能在不同虚拟化平台下的影响不大。

6. FC SAN在KVM虚拟化产品上不同配置的对比

相对VMware和Hyper-V,KVM开源产品更具灵活性,可以设置缓存机制及是否半虚拟化驱动,因此我们针对KVM产品进行了如下测试。

l 是否采用半虚拟化驱动

KVM是必须使用硬件虚拟化辅助技术(如Intel VT-x、AMD-V)的Hypervisor,在CPU运行效率方面有硬件支持,其效率是比较高的,在有Intel EPT特性支持的平台上,内存虚拟化的效率也较高。QEMU/KVM提供了全虚拟化环境,可以让客户机不经过任何修改就能运行在KVM环境中。不过,KVM在I/O虚拟化方面,传统的方式是使用QEMU纯软件的方式来模拟I/O设备,其效率并不非常高。在KVM中,可以在客户机中使用半虚拟化驱动(Paravirtualized Drivers,PV Drivers)来提高客户机的性能(特别是I/O性能)。目前,KVM中实现半虚拟化驱动的方式是采用了Virtio这个Linux上的设备驱动标准框架。

图7 半虚拟化驱动对读写IOPS的比较

从图7的测试数据看出,Virtio半虚拟化驱动的方式可以获得很好的I/O性能,比纯软件模拟高于4倍多,其性能几乎可以达到和Native(即:非虚拟化环境中的原生系统)差不多的I/O性能。所以,在使用KVM之时,如果宿主机内核和客户机都支持VirtIO的情况下,一般推荐使用Virtio达到更好的性能。当然,Virtio的也是有缺点的,它必须要客户机安装特定的Virtio驱动使其知道是运行在虚拟化环境中,且按照Virtio的规定格式进行数据传输,不过客户机中可能有一些老的Linux系统不支持Virtio和主流的Windows系统需要安装特定的驱动才支持Virtio。不过,较新的一些Linux发行版(如RHEL 6等)默认都将Virtio相关驱动编译为模块,可直接作为客户机使用Virtio,而且对于主流Windows系统都有对应的Virtio驱动程序可供下载使用。

图8 半虚拟化驱动对读写延迟的比较

从图8的测试数据看出,VirtIO半虚拟化驱动的方式可以获得很好的IO延迟,从另一个层面验证了半虚拟化驱动在KVM发挥的性格优势。

l 是否采用缓存机制

对于存储技术来说,数据写入到硬盘中,有多种针对硬盘缓存的写策略,其中常见的有Writethrough、Writeback及Nocache,而KVM虚拟的硬盘支持多种写策略。

? Writethrough

此模式先将数据写入Host Pagecache,等到数据落地之后,才算写完,而操作系统接收到硬盘返回来的已成功写入的信号之后,才会写下一段数据,但是Disk Write Cahce是关闭的,因此此cache模拟保证了数据的完整性。由于Host Pagecache是打开的,读性能对于此模拟相对可以,Disk Write是关闭的,对写的性能有影响。

? Writeback

此模式把Host Pagecache和Disk Write Cache都打开了,故IO性能是最优的,但是如果出现电源故障,数据是不被保护,因此此模拟只适合测试,不适合企业生产环境。

? Nocache

此模式把Host Pagecache关掉,但是把Disk Write Cache打开,由于写操作越过了Host Page Cache,直接到了Disk Write Cache,因此写性能是最佳的。此模拟下,如果发生电源故障,数据的完整性可以保证。由于关掉了pagecache,因此读性能比Write Through差,性能数据比较如图9所示。

图9 Cache机制对读写IOPS的比较

从图9的测试数据看出,Writeback的读性能是最好的,比Writethough高出100%,Writeback和Writethough的读性能相差不大,比Nocache高出29%。

图10 Cache机制对读写延迟的比较

从图10的测试数据看出Nocahe延迟和Wirtethough写延迟相对很低,原因是都避开了Host Pagecache。

五、 测试结论

根据本次测试结果,对被测存储系统的性能影响具体结论如下:

l 针对FC SUN存储,读IOPS在VMware平台上虚拟的Linux操作系统性能最优,甚至高于裸机性能的30%,高于最低性能平台Hyper-V的94%,写IOPS在各虚拟化平台上,VMware也是性能最好的产品,性能和裸机相近,但总体差异不大,虚拟的Windows操作系统中,VMware和KVM在IOPS上表现最好,高于裸机性能的53%.

l 针对IP SUN存储,由于网卡虚拟化对于各虚拟化厂商来说,已是非常成熟的技术,存储的读写性能在不同虚拟化平台下影响不大。

l 在虚拟化应用中,Cache机制对存储性能的影响起到了关键作用,考虑企业数据的完整性,建议使用Nocache作为KVM的缓存机制,既考虑了存储性能有兼顾了数据安全性。Virtio半虚拟化驱动的方式可以获得很好的I/O性能,比纯软件模拟高于4倍多,其性能几乎可以达到和Native(即:非虚拟化环境中的原生系统)差不多的I/O性能。所以,在使用KVM之时,如果宿主机内核和客户机都支持VirtIO的情况下,一般推荐使用Virtio达到更好的性能。

六、 结束语

未来虚拟化将在企业中应用逐渐广泛, 传统存储架构无法有效管理虚拟机产生的复杂随机性I/O,势必会消耗存储性能,存储虚拟化也随之成为了虚拟化存储问题的解决方案之一,重复数据删除与自动化精简配置等新技术的应用可以使存储虚拟化更高效,减少数据中心的开支。

感谢您对本刊物的关注,如果您在阅读时有何感想,请点击反馈。