在本文中,我想谈谈与最流行的虚拟化平台之一-VMware vSphere一起使用的All Flash AccelStor阵列的功能。 特别是,专注于那些将有助于通过使用功能强大的工具(如All Flash)获得最大效果的参数。
所有Flash AccelStor NeoSapphire™阵列都是基于SSD的一或两个节点设备,采用根本不同的方法来实现使用自己的FlexiRemap®技术而不是非常流行的RAID算法来实现存储数据和组织对数据的访问的概念。 阵列通过光纤通道或iSCSI接口为主机提供块访问。 公平地说,我们注意到具有ISCSI接口的模型也具有文件访问权限,这是一个不错的选择。 但是在本文中,我们将重点介绍使用块协议作为全闪存最高效的方法。
在AccelStor阵列与VMware vSphere虚拟化系统之间部署然后设置协作的整个过程可以分为几个阶段:
- 实现SAN网络的连接拓扑和配置;
- 设置全闪存阵列;
- 配置ESXi主机;
- 配置虚拟机。
具有光纤通道和iSCSI的AccelStor NeoSapphire™阵列用作示例设备。 基本软件是VMware vSphere 6.7U1。
部署本文中所述的系统之前,强烈建议您熟悉VMware有关性能问题( VMware vSphere 6.7的性能最佳实践 )和iSCSI设置( 在iSCSI上运行VMware vSphere的最佳实践 )的文档。
连接拓扑和SAN配置
SAN网络的主要组件是ESXi主机,SAN交换机和阵列节点上的HBA。 这种网络的典型拓扑如下所示:
此处的术语交换机是指单个物理交换机或一组交换机(Fabric),或在不同服务之间共享的设备(对于光纤通道,是VSAN;对于iSCSI,是VLAN)。 使用两个独立的交换机/ Fabric消除了可能的故障点。
强烈建议不要将主机直接连接到阵列,尽管可以支持。 全闪存阵列的性能很高。 为了获得最大速度,您需要使用阵列的所有端口。 因此,至少需要在主机和NeoSapphire™之间进行一次切换。
在HBA主机上具有两个端口也是最大性能和容错能力的先决条件。
如果使用光纤通道接口,则需要配置分区,以避免启动器和目标之间可能的冲突。 区域基于“一个启动器端口-一个或多个阵列端口”的原理构建。
如果使用iSCSI连接,并且使用与其他服务共享的交换机,则必须将iSCSI通信隔离在单独的VLAN中。 强烈建议您启用巨型帧支持(MTU = 9000),以增加网络上数据包的大小,从而减少传输期间的开销。 但是,值得记住的是,为了正确操作,需要更改启动器-交换机-目标链上所有网络组件上的MTU参数。
设置所有闪存阵列
该阵列通过已组建的FlexiRemap®组交付给客户。 因此,无需执行任何操作即可将驱动器集成到单个结构中。 创建所需大小和数量的卷就足够了。
为方便起见,有一个功能可以一次批量创建给定卷的多个卷。 默认情况下会创建“精简”卷,因为这可以更合理地使用可用存储空间(包括感谢空间回收)。 就性能而言,薄体积和厚体积之间的差异不超过1%。 但是,如果要从阵列中“榨汁”,则始终可以将任何“稀”体积转换为“浓”。 但是应该记住,这种操作是不可逆的。
然后剩下的工作就是“发布”已创建的卷,并使用ACL(iSCSI的IP地址和FC的WWPN)以及阵列上端口的物理分隔从主机设置对它们的访问权限。 对于iSCSI型号,这是通过创建Target来完成的。
对于FC型号,发布是通过为阵列中的每个端口创建LUN来进行的。
为了加快配置过程,可以对主机进行分组。 此外,如果主机使用多端口FC HBA(在实践中最常发生),由于WWPN,系统会自动确定此类HBA的端口属于同一主机,两者相差一个。 此外,两个接口均支持批量创建目标/ LUN。
使用iSCSI接口时,重要的一点是一次为卷创建多个目标以提高性能,因为无法更改目标队列,而实际上这将成为瓶颈。
配置ESXi主机
在ESXi方面,基本配置是根据完全可以预期的方案完成的。 iSCSI连接步骤:
- 添加软件iSCSI适配器(如果已经添加或使用硬件iSCSI适配器,则不需要);
- 创建vSwitch,iSCSI流量将通过该vSwitch,并向其中添加物理上行链路和VMkernal;
- 向动态发现添加阵列地址;
- 创建数据存储
一些重要的注意事项:
- 当然,在一般情况下,您可以使用现有的vSwitch,但是在单独的vSwitch的情况下,管理主机设置将更加简单。
- 有必要将管理流量和iSCSI分为单独的物理链接和/或VLAN,以避免性能问题。
- 再次由于性能问题,VMkernal的IP地址和全闪存阵列的相应端口必须位于同一子网中。
- 为了确保VMware的容错能力,vSwitch必须至少具有两个物理上行链路
- 如果使用巨型帧,则必须同时更改vSwitch和VMkernal的MTU
- 一定要记得,根据VMware对于将用于iSCSI流量的物理适配器的建议,必须配置成组和故障转移。 特别是,每个VMkernal仅应通过一个上行链路工作,第二个上行链路必须切换为未使用模式。 为了容错,您需要添加两个VMkernal,每个VMkernal都将通过其上行链路工作。
VMkernel适配器(vmk#) | 物理网络适配器(vmnic#) |
---|
vmk1(Storage01) | 有源适配器 vmnic2 未使用的适配器 vmnic3
|
vmk2(Storage02) | 有源适配器 vmnic3 未使用的适配器 vmnic2
|
无需光纤通道连接。 您可以立即创建一个数据存储。
创建数据存储区后,您需要确保将循环策略用于通向目标/ LUN的路径,以提高生产力。
默认情况下,VMware设置根据方案提供此策略的使用:通过第一条路径的1000个请求,通过第二条路径的下1000个请求,等等。 与双控制器阵列的主机交互将不平衡。 因此,我们建议通过Esxcli / PowerCLI将Round Robin策略设置为1。
参量对于Esxcli:
esxcli storage nmp设备列表
esxcli storage nmp psp roundrobin deviceconfig set --type = iops --iops = 1 --device =“设备ID”
大多数现代应用程序旨在交换大数据包,以最大程度地利用带宽并减少CPU负载。 因此,默认情况下,ESXi最多可将I / O请求最大批量传输到存储设备32767KB。 但是,在许多情况下,交换较小的部分将更有效率。 对于AccelStor阵列,以下情况是:
- 虚拟机使用UEFI代替旧版BIOS
- 由vSphere Replication使用
对于这种情况,建议您将Disk.DiskMaxIOSize参数值更改为4096。
对于iSCSI连接,建议将Login Timeout参数更改为30(默认值为5),以提高连接的稳定性并关闭对转发的DelayedAck数据包的确认延迟。 这两个选项都在vSphere Client中:主机→配置→存储→存储适配器→iSCSI适配器的高级选项
一个相当微妙的一点是用于数据存储的卷数。 显然,为了易于管理,期望为阵列的整个体积创建一个较大的体积。 但是,多个卷以及相应的数据存储的存在对整体性能有有益的影响(在稍后的文本中,对队列的影响更大)。 因此,我们建议至少创建两个卷。
最近,VMware建议再次限制单个数据存储上的虚拟机数量,以便获得最佳性能。 但是,现在,尤其是随着VDI的普及,这个问题不再那么严重。 但这并不能取消长期存在的规则-将需要大量IO的虚拟机分布在不同的数据存储上。 确定每个卷的最佳虚拟机数量没有比在其基础架构中对AccelStor的全闪存阵列进行负载测试更好的了。
配置虚拟机
设置虚拟机时没有特殊要求,或者相当普通:
- 使用可能的最高版本的VM(兼容性)
- 在虚拟机密集放置时(例如,在VDI中)设置RAM大小更为准确(默认情况下,在启动时,创建的分页文件与RAM大小相当,这会消耗有用的容量并影响最终性能)
- 使用最高效的IO版本的适配器:网络类型VMXNET 3和SCSI类型PVSCSI
- 使用Thick Provision Eager Zeroed驱动器类型可实现最佳性能,而Thin Provisioning可实现最大存储利用率
- 如果可能,请使用虚拟磁盘限制来限制非关键I / O计算机的工作
- 确保安装VMware Tools
排队笔记
队列(或未完成的I / O)是在特定时间从特定设备/应用程序等待处理的I / O请求(SCSI命令)的数量。 如果队列溢出,则会生成QFULL错误,最终导致等待时间参数增加。 理论上,当使用磁盘(主轴)存储系统时,队列越高,它们的性能就越高。 但是,您不应滥用它,因为它很容易遇到QFULL。 一方面,在全闪存系统中,一切都比较简单:阵列的延迟降低了几个数量级,因此,通常无需单独调整队列的大小。 但是另一方面,在某些用例中(特定虚拟机对IO的要求有很大的偏见,为了获得最大性能而进行的测试等),如果不更改队列参数,则至少要了解可以实现哪些指标,并且,最重要的是,以什么方式。
AccelStor的全闪存阵列本身对卷或I / O端口没有限制。 如有必要,即使是单个卷也可以获取阵列的所有资源。 唯一的队列限制是iSCSI目标。 出于这个原因,上面指出了需要为每个体积创建多个(理想情况下最多8个)目标以克服此限制。 而且,AccelStor阵列是高生产率的解决方案。 因此,应该使用系统的所有接口端口以达到最大速度。
在主机的ESXi端,情况完全不同。 主持人本身对所有参与者都实行对资源的平等访问的做法。 因此,来宾OS和HBA有单独的IO队列。 来宾操作系统的队列从队列到虚拟SCSI适配器和虚拟磁盘的组合:
HBA的队列取决于特定的类型/供应商:
虚拟机的最终性能将由主机组件中的最低队列深度限制确定。
由于这些值,您可以评估我们可以在一种或另一种配置中获得的性能指标。 例如,我们想知道延迟为0.5ms的虚拟机(不绑定到块)的理论性能。 然后它的IOPS =(1,000 /延迟)*未完成的I / O(队列深度限制)
例子例子1
- FC Emulex HBA适配器
- 数据存储上一台虚拟机
- VMware半虚拟SCSI适配器
此处,队列深度限制由Emulex HBA确定。 因此,IOPS =(1000 / 0.5)* 32 = 64K
例子2
- VMware iSCSI软件适配器
- 数据存储上一台虚拟机
- VMware半虚拟SCSI适配器
在这里,“队列深度”限制已由准虚拟SCSI适配器定义。 因此,IOPS =(1000 / 0.5)* 64 = 128K
顶部的All AccelStor All Flash阵列(例如P710 )能够提供700K IOPS性能,以4K块进行记录。 在这样的块大小下,很明显单个虚拟机无法加载这样的阵列。 为此,您将需要11个(例如1)或6个(例如2)虚拟机。
因此,通过正确配置虚拟数据中心中所有已描述的组件,您可以获得非常出色的性能结果。
4K随机,读70%/写30%
实际上,用简单的公式描述现实世界要困难得多。 单个主机始终具有许多具有不同配置和IO要求的虚拟机。 是的,功能无限的主机处理器正在进行I / O处理。 因此,为了释放相同型号的全部潜能,实际上P710将需要三台主机。 另外,在虚拟机内部运行的应用程序也会进行调整。 因此,为了精确地确定大小,我们建议在客户基础架构内的所有Flash AccelStor阵列的测试模型的情况下使用测试,以完成当前的实际任务。