适用于VMware vSphere的AccelStor AFA配置指南

在本文中,我想谈谈与最流行的虚拟化平台之一-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连接步骤:


  1. 添加软件iSCSI适配器(如果已经添加或使用硬件iSCSI适配器,则不需要);
  2. 创建vSwitch,iSCSI流量将通过该vSwitch,并向其中添加物理上行链路和VMkernal;
  3. 向动态发现添加阵列地址;
  4. 创建数据存储

一些重要的注意事项:


  • 当然,在一般情况下,您可以使用现有的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:


  • 打印可用的LUN

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阵列的测试模型的情况下使用测试,以完成当前的实际任务。

Source: https://habr.com/ru/post/zh-CN447390/


All Articles