如今,不仅在“大企业”领域,而且在SMB和家庭用户中,都需要虚拟化技术。 特别是对于小型公司,虚拟化服务器可用于实施许多资源不是很密集的服务。 这通常是指基于单处理器或双处理器平台的独立服务器,具有32-64 GB的相对较少的RAM,并且没有特殊的高性能存储系统。 但是,除了全部优点之外,您还需要意识到,就性能而言,虚拟系统与真实系统有所不同。 在本文中,我们将比较几种虚拟机配置的各种类型本地驱动器(HDD,SSD和NVMe)的速度,以估计其虚拟化带来的损失。 没有人认为在虚拟化系统的“正确”实施中最好使用外部存储,但是在预算版本中,您可以使用本地磁盘。
测试是在以下配置的服务器上进行的:Asus Z10PE-D16主板,两个Intel Xeon E5-2609 v3处理器,64 GB RAM。 选择了基于Debian的开源系统Proxmox VE 5.2版作为虚拟化环境。 在安装过程中,使用了单独的SATA SSD,并将经过测试的驱动器分别连接到其他接口和端口。
首先,从主机平台测试驱动器。 第二种选择是转发到虚拟机(使用KVM和Debian 9,分配了2个核心和8 GB RAM)作为物理磁盘。 第三种配置是LVM上的虚拟磁盘。 第四个是具有ext4文件系统的卷上的RAW文件。 在最后两个选项中,选择了64 GB的磁盘大小。 因此,本文的另一个结果可能是比较LVM和RAW用于存储虚拟磁盘映像。
具有连续读写模式(具有256 KB块)和具有4 KB块的随机操作的fio实用程序将用于测量速度。 为了模拟不同的负载,使用iodepth参数从1到256进行了测试。 对于顺序操作,我们以MB / s为单位估算速度,对于随机操作-IOPS。 此外,我们查看了平均延迟(测试报告中的平均值)。
让我们从传统的硬盘驱动器开始,它是老年人HGST HUH728080ALE640的角色-具有SATA接口和2 TB容量的驱动器。 如果您完全保存或“从原样中雕刻”并且不考虑此选项,则在描述的小负载低成本虚拟化方案中,使用单个硬盘驱动器(尤其是在没有卷需求的情况下)可以被视为典型选择。
阅读时,除最后一个选项外,所有选项在190 MB / s的水平上都显示大致相同的结果(仅在iodepth = 256的高负载下,直通和LVM的结果减小到150 MB / s)。 而原始数据(由于在主机上进行缓存)“飞入了太空”,其他内容在其背景下不再可见。 一方面,我们可以说使用的测试和系统设置不允许我们正确评估此配置的速度,并显示的不是RAM,而是RAM。 另一方面,缓存是提高生产力的最有效,最常用的技术之一,如果可行,拒绝缓存会很奇怪。 但不要忘记在这种配置中可靠的电源。
录制不再有这种影响,因此在顺序操作中,所有配置都大致相同-最大速度约为190 MB / s。 尽管raw的行为仍然与其他行为不同-负载较小时,它的运行速度较慢,但最大程度而言,它的运行速度不会像其他情况一样慢。 延迟没有差异。
主机缓存的使用在随机读取操作中也很明显-原始数据始终是最快的,最高可显示950 IOPS。 速度大约是lvm的两倍-高达450 IOPS。 好吧,硬盘驱动器本身(包括“转发”到客户系统)显示约200 IOPS。 延迟时间表上参与者的分布与速度一致。
在随机写入操作中,事实证明,lvm配置是最佳的,它提供了高达400 IOPS的性能。 紧随其后的是原始数据(约330 IOPS),最后两个有290 IOPS的参与者关闭了列表。 延迟方面没有明显差异。
通常,如果不需要lvm提供的功能,并且关键条件不是随机写入速度,则在将虚拟磁盘放置在本地存储上时,最好使用原始速度。 在这种情况下,将物理磁盘转发到虚拟机的技术应用不会提供性能优势。 但是如果要将具有现有数据的驱动器连接到虚拟机,可能会很有趣。
第二位测试参与者是三星850 EVO SSD。 考虑到他的年龄和在没有TRIM的系统中的工作,在一些测试(尤其是顺序记录)中,他已经输给了硬盘驱动器。 但是,由于在传统硬盘驱动器上进行随机操作可显着提高性能,因此虚拟机也非常有趣。
原始模式下顺序读取的结果可以与带有硬盘的变量类似地进行注释。 但是这里更有趣的是,前两个配置在重负载下显示稳定的370 MB / s,而lvm仅能够显示190 MB / s。 此模式的延迟也更高。
如前所述,在写入操作中,此固态硬盘当前状态看起来并不十分有趣,其速度为100 MB / s。 至于配置的比较,在此测试中,原始负载在速度和延迟方面均处于低负载状态。
随机操作是主要的“王牌” SSD。 在这里,我们看到,任何“虚拟”选项都明显丢失了“干净”驱动器-它们仅提供30,000 IOPS,而SSD本身的运行速度可提高三倍。 显然,这里的限制是硬件和软件平台。 但是,此测试中的延迟不超过7 ms,因此一般应用程序不太可能注意到IOPS的这种差异。
在随机记录上,力量的平衡有所不同。 “真实”光盘已经丢失,尽管有轻微损失。 它最多可以显示4,200 IOPS。 lvm和passthrough多了一两百,而raw已达到5500 IOPS。 在明显有趣的视频的延迟图上,iodepth = 32的断裂。
测试表明,在这种情况下,SSD的行为不同于HDD。 首先,使用lvm的顺序读取明显落后于其他选项。 其次,SSD上的虚拟磁盘会明显丢失随机读取IOPS。
第三个参与者在某种程度上讲是“便宜”的,但是该产品本身对于磁盘操作的通用“加速器”非常有趣,并且不仅可以与单个驱动器竞争速度,而且还可以与RAID阵列竞争。 这是关于英特尔傲腾。 在这种情况下,我们将900P模型用于PCIe 3.0 x4总线,容量为280 GB。
英特尔傲腾已经能够在此测试中与RAM竞争。 区别不再像其他参与者一样大一个数量级,而只有两到三倍。 此外,随着负载的增加,实际值会进行比较。 对于原始配置,上述测试中的延迟较低。
在顺序写入操作中,“干净”驱动器甚至会输给其他参与者-随着负载的增加,它们达到稳定的2 150 MB / s,并将速度降低到大约1,700 MB / s。 这种情况下的延迟无法比较。
从主机访问此SSD模型时,对其进行随机读取操作可提供近200,000 IOPS(速度将达到760 MB / s的水平)。 但是,所有其他连接方案(如我们上面针对具有SATA接口的SSD所看到的)都限制为35,000 IOPS,这不免让人不安。 因此,它们具有较高的延迟,大约是五倍。
在随机记录中,这种毫无疑问的独特驱动器模型显示的结果几乎与随机读取时的结果相同-直接连接约为190,000 IOPS,其他选项约为35,000 IOPS。 延迟也与读取操作的曲线图一致。 另一方面,以小块形式随机记录的速度超过700 MB / s-仍需要搜索此类结果。
对于所研究的问题使用Intel Optane驱动器表明,来宾操作系统中顺序操作的速度不会显着降低。 但是,如果您需要较高的IOPS来进行随机读取或写入,则该平台将性能限制为35,000 IOPS,尽管驱动器本身的速度要快五倍。
测试表明,为虚拟服务器构建存储系统时,如果速度对虚拟机很重要,则应注意虚拟化带来的某些损失。 在大多数经过测试的配置中,虚拟磁盘显示的性能指标与物理设备明显不同。 但是,对于传统的硬盘驱动器,两者之间的差异通常相对较小,因为它们本身并没有那么快。 对于SATA SSD,对于随机访问,可以注意到IOPS的重大伤亡,但是即使如此,它们在这些任务中的运行速度仍然比Winchesters快得多。 英特尔Optane驱动器在虚拟环境中的随机操作肯定会损失很多,但是即使在这种情况下,它在记录时仍保持惊人的速度。 在随后的手术中,他没有任何评论。 该设备的另一个重要优点是其性能稳定-不需要任何特殊的清洁操作,因此无论状态和过去的历史以及操作系统及其设置如何,速度都可以随时保持恒定。 但是,像往常一样,免费提供免费服务。 英特尔Optane 900P不仅速度极快,而且价格昂贵。