在本文中,我想谈谈全闪存 AccelStor 阵列与最流行的虚拟化平台之一 VMware vSphere 配合使用的功能。 特别要关注那些可以帮助您从使用全闪存这样强大的工具中获得最大效果的参数。
AccelStor NeoSapphire™ 全闪存阵列
速源阵列与VMware vSphere虚拟化系统联动的部署及后续配置的整个过程可以分为几个阶段:
- SAN网络连接拓扑和配置的实现;
- 设置全闪存阵列;
- 配置ESXi主机;
- 设置虚拟机。
AccelStor NeoSapphire™ 光纤通道阵列和 iSCSI 阵列用作示例硬件。 基础软件是VMware vSphere 6.7U1。
在部署本文中描述的系统之前,强烈建议您阅读 VMware 提供的有关性能问题的文档 (
连接拓扑和 SAN 网络配置
SAN 网络的主要组件是 ESXi 主机中的 HBA、SAN 交换机和阵列节点。 此类网络的典型拓扑如下所示:
这里的术语“交换机”既指单独的物理交换机或一组交换机(Fabric),也指不同服务之间共享的设备(光纤通道中的 VSAN 和 iSCSI 中的 VLAN)。 使用两个独立的交换机/结构将消除可能的故障点。
尽管支持将主机直接连接到阵列,但强烈不建议这样做。 全闪存阵列的性能相当高。 为了获得最大速度,必须使用阵列的所有端口。 因此,主机和 NeoSapphire™ 之间至少存在一个交换机是强制性的。
主机 HBA 上存在两个端口也是实现最大性能和确保容错的强制性要求。
使用光纤通道接口时,必须配置分区以消除启动器和目标之间可能发生的冲突。 区域的构建原则是“一个启动器端口 - 一个或多个阵列端口”。
如果您在使用与其他服务共享的交换机的情况下使用通过 iSCSI 的连接,则必须在单独的 VLAN 内隔离 iSCSI 流量。 还强烈建议启用对巨型帧 (MTU = 9000) 的支持,以增加网络上数据包的大小,从而减少传输过程中的开销信息量。 然而,值得记住的是,为了正确操作,有必要更改“发起者-交换机-目标”链上所有网络组件上的 MTU 参数。
设置全闪存阵列
该阵列交付给已经组建团体的客户
为了方便起见,可以一次性批量创建多个给定大小的卷。 默认情况下,会创建精简卷,因为这样可以更有效地使用可用存储空间(包括对空间回收的支持)。 在性能方面,“薄”卷和“厚”卷之间的差异不超过1%。 但是,如果您想从阵列中“榨取所有汁液”,则始终可以将任何“薄”卷转换为“厚”卷。 但应该记住,这样的操作是不可逆的。
接下来,仍然是“发布”创建的卷,并使用 ACL(iSCSI 的 IP 地址和 FC 的 WWPN)和阵列端口的物理隔离从主机设置对它们的访问权限。 对于 iSCSI 模型,这是通过创建目标来完成的。
对于 FC 型号,通过为阵列的每个端口创建 LUN 来进行发布。
为了加快设置过程,可以将主机组合成组。 此外,如果主机使用多端口 FC HBA(这种情况在实际中最常发生),则由于 WWPN 相差 XNUMX,系统会自动确定此类 HBA 的端口属于单个主机。 这两个接口还支持批量创建目标/LUN。
使用 iSCSI 接口时的一个重要注意事项是一次为卷创建多个目标以提高性能,因为目标上的队列无法更改并且实际上会成为瓶颈。
配置 ESXi 主机
在ESXi主机端,根据完全预期的场景进行基本配置。 iSCSI 连接过程:
- 添加软件 iSCSI 适配器(如果已添加,或者如果您正在使用硬件 iSCSI 适配器,则不需要);
- 创建 iSCSI 流量将通过的 vSwitch,并向其添加物理上行链路和 VMkernal;
- 将数组地址添加到动态发现中;
- 数据存储创建
一些重要的注意事项:
- 当然,在一般情况下,您可以使用现有的 vSwitch,但在单独的 vSwitch 的情况下,管理主机设置会容易得多。
- 有必要将管理和 iSCSI 流量分离到单独的物理链路和/或 VLAN 上,以避免出现性能问题。
- 同样由于性能问题,VMkernal 的 IP 地址和全闪存阵列的相应端口必须位于同一子网内。
- 为了根据 VMware 规则确保容错,vSwitch 必须至少有两个物理上行链路
- 如果使用巨型帧,则需要更改 vSwitch 和 VMkernal 的 MTU
- 需要提醒您的是,根据 VMware 对用于处理 iSCSI 流量的物理适配器的建议,有必要配置分组和故障转移。 特别是,每个 VMkernal 必须仅通过一个上行链路工作,第二个上行链路必须切换到未使用模式。 为了实现容错,您需要添加两个 VMkernal,每个 VMkernal 将通过其自己的上行链路工作。
VMkernel 适配器 (vmk#)
物理网络适配器 (vmnic#)
vmk1(存储01)
有源适配器
虚拟网卡2
未使用的适配器
虚拟网卡3
vmk2(存储02)
有源适配器
虚拟网卡3
未使用的适配器
虚拟网卡2
通过光纤通道连接不需要任何预备步骤。 您可以立即创建数据存储。
创建数据存储后,您需要确保目标/LUN 路径的循环策略被用作最高性能。
默认情况下,VMware 设置根据方案提供此策略的使用:通过第一条路径的 1000 个请求,通过第二条路径的接下来的 1000 个请求,依此类推。 主机和双控制器阵列之间的这种交互将是不平衡的。 因此,我们建议通过 Esxcli/PowerCLI 设置 Round Robin 策略 = 1 参数。
参数
对于 Esxcli:
- 列出可用的 LUN
esxcli存储nmp设备列表
- 复制设备名称
- 更改循环策略
esxcli storage nmp psp roundrobin deviceconfig set —type=iops —iops=1 —device=“Device_ID”
大多数现代应用程序都设计用于交换大数据包,以最大限度地提高带宽利用率并减少 CPU 负载。 因此,ESXi 默认情况下以最多 32767KB 的块向存储设备发出 I/O 请求。 然而,对于某些场景,交换较小的块会更有效率。 对于 AccelStor 阵列,有以下场景:
- 虚拟机使用 UEFI 而不是 Legacy BIOS
- 使用 vSphere Replication
对于此类场景,建议将Disk.DiskMaxIOSize参数的值更改为4096。
对于 iSCSI 连接,建议将登录超时参数更改为 30(默认为 5),以提高连接稳定性并禁用转发数据包确认的 DelayedAck 延迟。 这两个选项均位于 vSphere Client 中:主机 → 配置 → 存储 → 存储适配器 → iSCSI 适配器的高级选项
一个相当微妙的问题是用于数据存储的卷的数量。 显然,为了便于管理,希望为阵列的整个卷创建一个大卷。 然而,多个卷的存在以及相应的数据存储对整体性能有有益的影响(更多关于下面的队列的信息)。 因此,我们建议至少创建两个卷。
直到最近,VMware 还建议限制一个数据存储上的虚拟机数量,同样是为了获得尽可能高的性能。 不过,现在,尤其是随着VDI的普及,这个问题不再那么严重了。 但这并没有取消长期存在的规则——将需要密集IO的虚拟机分布在不同的数据存储上。 要确定每个卷的最佳虚拟机数量,没有什么比
设置虚拟机
设置虚拟机时没有特殊要求,或者说很普通:
- 使用尽可能高的VM版本(兼容性)
- 当虚拟机密集放置时,例如在 VDI 中,设置 RAM 大小会更加谨慎(因为默认情况下,启动时会创建与 RAM 大小相当的页面文件,这会消耗有用容量并影响系统性能)最终表演)
- 使用 IO 方面最高效的适配器版本:网络类型 VMXNET 3 和 SCSI 类型 PVSCSI
- 使用厚置备置零磁盘类型以获得最大性能,使用精简置备来获得最大存储空间利用率
- 如果可能,使用虚拟磁盘限制限制非 I/O 关键计算机的操作
- 一定要安装VMware Tools
队列注意事项
队列(或未完成的 I/O)是特定设备/应用程序在任何给定时间等待处理的输入/输出请求(SCSI 命令)的数量。 如果队列溢出,则会发出 QFULL 错误,最终导致延迟参数增加。 当使用磁盘(主轴)存储系统时,理论上,队列越高,其性能越高。 但是,您不应该滥用它,因为它很容易遇到 QFULL。 就全闪存系统而言,一方面,一切都比较简单:毕竟,阵列的延迟要低几个数量级,因此,大多数情况下,不需要单独调节队列的大小。 但另一方面,在某些使用场景下(特定虚拟机的IO需求强烈倾斜、测试最大性能等)是必要的,如果不改变队列的参数,那么至少要了解哪些指标能不能实现,主要是通过什么方式实现。
AccelStor 全闪存阵列本身没有卷或 I/O 端口方面的限制。 如果需要,即使是单个卷也可以接收阵列的所有资源。 队列的唯一限制是 iSCSI 目标。 正是出于这个原因,上面指出需要为每个卷创建多个(理想情况下最多 8 个)目标来克服此限制。 我们还要重申一下,AccelStor 阵列是非常高效的解决方案。 因此,您应该使用系统的所有接口端口以达到最大速度。
在ESXi主机端,情况完全不同。 主办方本身采用所有参与者平等访问资源的做法。 因此,客户操作系统和 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
全闪存 AccelStor 阵列的顶级型号(例如,
因此,通过正确配置虚拟数据中心的所有描述的组件,您可以获得非常令人印象深刻的性能结果。
4K 随机,70% 读取/30% 写入
事实上,现实世界比用简单的公式描述的要复杂得多。 一台主机始终承载多个具有不同配置和 IO 要求的虚拟机。 I/O处理由主机处理器处理,其能力不是无限的。 因此,要释放相同的全部潜力
来源: habr.com