• 基于 NVMe 命名空间的 VMware vSAN 性能优化

    引言

    本文主要展示了基于 NVMe 协议命名空间与 VMware vSAN 虚拟化的性能优化,从而实现 SSD 每秒输入输出操作(IOPS)性能的提升。文中包含了硬件和软件调优、测试过程、方法、结果以及分析,所使用的配置特性包括一台搭载 AMD EPYC™ CPU 的 Dell EMC PowerEdge R7525 机架服务器,该服务器支持最多 24 个 PCIe® 4.0 NVMe SSD。测试表明,采用 12 块 KIOXIA CM6 系列 PCIe 4.0 NVMe SSD 的配置可以实现高达 896,555 IOPS 的随机读取性能。

    此外,本文还提供了些参考,旨在帮助存储架构师、系统集成商、渠道合作伙伴及其他关键利益相关者创建灵活的设计,以满足数据中心的计算和存储需求。文中还介绍了一种优化配置,帮助应用管理员和存储架构师在该配置下实现最佳存储性能。附带的其他优势包括:

    • 使用 Dell EMC PowerEdge R7525 服务器和 KIOXIA CM6 系列 PCIe 4.0 NVMe SSD 的集群演示了在 vSAN HCI 环境下,极高的 IOPS 和吞吐量性能,并且延迟极低。

    • 随着集群和硬盘数量的增加,vSAN 虚拟化性能随着集群规模和可用 SSD 的增多而提升。

    • NVMe 协议命名空间与 vSAN 虚拟化的结合,使得 CM6 系列 SSD 的容量得以充分利用,包括缓存和容量层。

    • 计算和存储资源的高效扩展可以在不牺牲性能的情况下降低数据中心成本。

    • vSAN 虚拟化与 NVMe 命名空间适用于多种业务工作负载。


    背景

    企业依赖 IT 专家为各自的数据中心组建计算、存储和网络资源,以应对诸如数据量激增、技术进步以及硬件资源不断更新等关键需求。每次更新硬件以满足不同资源池的需求,不仅费用高昂,还会造成生产资源的浪费,因为硬件升级需要额外的测试来确定与现有基础设施的兼容性。

    这些硬件挑战促使许多 IT 部门转向软件定义的超融合基础设施(HCI)方式,该方式通过使用商用服务器硬件和超高速 SSD 本地存储来虚拟化计算和存储资源。虚拟化集群中的每个超融合计算/存储节点都运行一个虚拟化软件,该软件将其资源共享给其他超融合节点。管理软件可控制这些虚拟化软件,以形成和管理服务器集群,并根据每个虚拟机(VM)的需求分配资源。HCI 方法使数据中心能够根据其独特的业务需求,通过小型服务器集群和/或按需扩展的存储来发展。

    在本参考架构中,我们使用的是 VMware Inc.的组件,包括 VMware ESXi™ 虚拟化软件、VMware vSphere® 企业级虚拟化平台和 VMware vCenter® 管理软件,他们帮助我们实现了 HCI 的管理。这些平台能够将计算资源从不同主机抽象到一个可以为虚拟机或容器提供资源的集群中。当 VMware vSAN 企业级存储虚拟化软件与 VMware vSphere 结合使用时,IT 部门可以在一个平台中管理计算和存储资源。VMware vSAN 软件与 VMware vSphere 无缝集成,便于管理,而 SSD 和命名空间配置则有助于减少延迟并提供快速的 IOPS 性能。此外,vSAN 还可以利用 NVMe SSD 作为本地存储,使其能够划分为缓存层和数据存储层,从而提高性能。


    行业挑战

    在 HCI 架构中,整个磁盘要么用作缓存,要么用于数据存储。并且,对缓存设备和磁盘组的数量存在限制。在 VMware 软件中,每个缓存设备都要求整个磁盘被分配为缓存,且缓存容量限制为 600GB。为了从专用缓存 SSD 中获得最佳性能,系统管理员需要购买一块 3 DWPD、800GB 或 1.6TB 的 SSD,并将整个磁盘分配为缓存。这一过程效率低下,导致高端和高性能 SSD 的容量无法被充分利用,并使得存储容量难以独立于节点扩展,从而迫使系统管理员使用性能较低的 SSD 来满足缓存需求。


    系统架构

    为了确定最佳配置,选择了不同的 SSD 配置进行测试。选用的 KIOXIA CM6 系列 PCIe 4.0 NVMe SSD 容量为 7.68TB,具备 PCIe 4.0 支持和较高的 DWPD 值。为了支持命名空间(以便 SSD 既可作为缓存也可用于数据存储),选用了更大容量的驱动器,以便支持更高的数据每日写入量。

    比较如下:

    • 7.68TB × 1 DWPD = 每天可写入 7.68TB

    • 800GB × 3 DWPD = 每天可写入 2.4TB

    较大的驱动器允许比小容量 3 DWPD 的 SSD 更高的每日写入量。

    后续,我们将进行测试以展示运行NVMe命名空间和VMware vSAN软件的配置的性能。后续将提供一些测试的系统配置


    系统配置

    服务器: Dell EMC PowerEdge R7525 系统总数: 3 台 BIOS 版本: PowerEdge R7525 Version 1.7.3 操作系统版本: VMware ESXi 7.0.1 17325551 U1 P25 电源管理策略: 高性能

    处理器配置:

    项目 参数
    处理器数量 2
    厂商与型号 AMD EPYC 7552 48 核处理器
    核心数 48
    主频 2200 MHz
    步进号 0

    内存模块配置:

    项目 参数
    总系统内存 256 GB
    模块数量 16
    厂商与型号 Micron® MTA18ASF2G72PDZ-2G9E1TI 16GB 2RX8 PC4-2933Y-RE2-12
    容量 16 GB
    类型 ECC DDR-4
    速度 2933 MHz

    NVMe SSD 配置:

    项目 参数
    SSD 数量 12(每台系统 4 个)
    厂商与型号 KIOXIA KCM6XRUL7T68(CM6 系列)
    容量 7680 GB
    规格 2.5 英寸(15mm)PCIe Gen 4.0,NVMe v1.4

    硬件配置

    BIOS 处理器设置(Dell EMC PowerEdge R7525):

    • 启用逻辑处理器(Logical Processor Enabled)

    • 启用虚拟化技术(Virtualization Technology Enabled)

    • 启用 IOMMU 支持(IOMMU Support Enabled)

    • 启用 L1 与 L2 流硬件预取器

    • MADT 核心枚举设为线性(Linear)

    • 每个 Socket 设置为 1 个 NUMA 节点(NUMA Nodes Per Socket = 1)

    • 禁用将 L3 缓存作为 NUMA 域使用

    • 启用 x2APIC 模式

    • 每个处理器 CCD 与核心均启用

    BIOS 内存设置:

    • 禁用系统内存测试

    • 设置 DRAM 刷新为“性能”模式

    • 内存工作模式为“优化器模式”

    • 自动内存交错

    • 禁用机会性自刷新

    • 启用可纠错错误记录

    💡 说明: AMD EPYC 7552 处理器支持 96 核心配置,具备 128 条 PCIe Gen4 通道,能够提供更高性能。结合双插槽设计可支持高密度 SSD 配置。

    内存配置图示:

    服务器采用 16×16GB DIMM(红色区域),如下图所示:


    主机安装 / VMware vCenter 设置

    当硬件选型完成、设备上架并更新 BIOS 后,即可开始安装 VMware vSphere。在本次参考架构测试中,于每台主机本地安装了 VMware ESXi 7.0.1 版本(构建号:17325551 U1 P25)。每台主机的 ESXi hypervisor 安装于插槽 #1 的 NVMe SSD 上。

    ⚠️ 注意: 本次安装并未使用 BOSS(Boot Optimized Server Storage)卡提供冗余,此安装方式仅用于测试目的。

    完成 ESXi 安装后,为每台主机分配管理 IP 地址用于基本管理。随后安装了 VMware vCenter Server® Appliance(VCSA),版本为 7.0.1.00200 – 构建号 17327517,并将所有主机加入 vCenter。VCSA 是为运行 VMware vCenter Server 和相关服务而优化的预配置虚拟机,运行在 Linux® 操作系统上。通过 VCSA 可对主机配置和管理进行全面操作。


    网络配置

    VMware 主机的标准配置通常包含至少 4 个 VLAN,分别用于:

    • 智能平台管理接口(IPMI)

    • VMware 管理流量

    • vMotion(虚拟机热迁移)

    • vSAN 存储流量

    很多系统管理员更倾向于将这些流量通过不同 VLAN 进行分离,以隔离数据路径。常见配置中至少使用两个网络端口,有时会用三个端口,其中一个专用于 IPMI(如 Dell iDRAC)。该端口通常为 1Gb/s 速率。

    vSAN 推荐网络要求:

    • 最低要求为 10Gb/s 网络

    • 推荐配置为 4 个网络端口,其中:

      • 2 个端口用于 vSAN、管理和 vMotion 的 trunk

      • 2 个端口用于 VM 数据流量

    • 如果使用 100Gb/s 网络,推荐使用 2 个端口 实现冗余,这两个 trunk 即可处理所有流量

    网络规模应根据 VM 数量、密度、vSAN 和 vMotion 等流量情况合理规划。

    参考架构测试网络配置:

    每台主机配置了 双 100Gb/s 网络连接,接入 100Gb/s 物理交换机。配置如下:

    • 使用 VMware 分布式交换机(Distributed vSwitch)

    • MTU 设置为 9000(VMware 允许的最大值,减少数据包开销)

    • 创建两个 VLAN:一个用于 vSAN 流量,一个用于 VM、管理、vMotion 和部署流量

    随后,将三台主机添加至该分布式交换机,并迁移管理用的 VMkernel 端口至该交换机,同时将两个 100Gb/s NIC 添加进交换机。


    VMkernel 适配器配置

    配置完物理网络和分布式交换机后,下一步是设置 VMkernel 端口。技术上讲,最少只需一个 VMkernel 端口,但如果管理、vMotion 和 vSAN 使用不同 VLAN,则需要三个 VMkernel 端口。

    在本次参考架构中配置了两个 VMkernel 适配器:

    • 第一个适配器: 用于主机管理、vMotion 和虚拟机部署,确保主机可被 VCSA 管理,支持在线迁移(vMotion)与自动部署

    • 第二个适配器: 专用于 VMware vSAN 虚拟化流量

    ⚠️ 注意:vSphere 复制、vSAN 见证节点、VM 容错等未在测试中启用。如在实际部署中启用,建议另设 VLAN 及 VMkernel 端口进行隔离。


    NVMe 命名空间配置(NVMe Namespace)

    在参考架构中部署的每块 KIOXIA CM6 Series PCIe 4.0 NVMe SSD,均通过 ESXi Hypervisor 的 Shell 命令 esxcli nvme 进行命名空间的创建与挂载。

    示例:添加命名空间

    用作缓存(600GB):

    esxcli nvme device namespace create -A vmhba5 -c 1258291200 -p 0 -f 0 -m 0 -s 1258291200
    esxcli nvme device namespace attach -A vmhba5 -c 1 -n 1

    用作数据存储(925GB):

    esxcli nvme device namespace create -A vmhba5 -c 1939865600 -p 0 -f 0 -m 0 -s 1939865600
    esxcli nvme device namespace attach -A vmhba5 -c 1 -n 2

    删除命名空间:

    esxcli nvme device namespace detach -A vmhba5 -c 1 -n 1
    esxcli nvme device namespace delete -A vmhba5 -n 1

    NVMe 命名空间配置示例:

    配置类型 Namespace ID 层级 类型 容量(GB)
    1+1 1 缓存 Cache 600
    2 容量 Capacity 6400
    1+4 1 缓存 Cache 600
    2–5 容量 Capacity 各 1580
    1+7 1 缓存 Cache 600
    2–8 容量 Capacity 各 925

    在没有NVMe命名空间的第一种配置中,每个CM6系列SSD都被主机识别为一个NVMe控制器。在有命名空间的配置中,每个CM6系列SSD也被主机识别为一个NVMe控制器,并被表示为一个单一的目标,该目标具有与每个驱动器上配置的命名空间数量相对应的设备和路径。这在下面的截图中显示:

    当首次安装到主机上时,这些驱动器显示为单个磁盘设备。一旦创建了命名空间并将其附加到CM6系列SSD上,它们就会在VMware vCenter中显示为独特的本地存储驱动器,如下图所示:


    集群配置

    参考架构的下一步是创建服务器集群。使用三台 Dell EMC PowerEdge R7525 服务器和十二块 KIOXIA CM6 PCIe 4.0 NVMe SSD 创建了 vSphere 虚拟化平台中的服务器集群。SSD 在三台主机之间平均分配,每台主机使用 4 块 SSD。

    集群创建初期禁用了所有服务,并将主机以维护模式添加至集群。主机加入后,可根据需要启用高可用性(HA)和分布式资源调度(DRS)。为避免测试干扰,本次测试中 未启用 HA 和 DRS。

    集群计算和存储资源如 vCenter 管理界面截图所示。


    VMware vSAN 配置

    接下来启用 vSAN 服务并创建 vSAN 数据存储。使用 VMware vSAN 标准选项和 VMware Skyline™ 健康诊断工具,成功创建了虚拟化数据存储。

    vSAN 配置参数如下:

    配置项 设置
    空间效率 无(None)
    静态加密(Data-at-rest) 关闭
    传输中加密(Data-in-transit) 关闭
    大规模集群支持 关闭

    磁盘组构建:

    初始阶段,从每台主机选择一块 SSD 添加至 vSAN 平台,并以该 SSD 的命名空间创建第一个磁盘组。随后逐个添加其余三块 SSD,每个 SSD 分别构成一个新的磁盘组。

    每个磁盘组包含该 SSD 上的所有命名空间,有效地支持缓存写入和数据降级(de-staging)操作间的高效协作。

    最终,每台主机包含 4 个磁盘组,即每台主机的 4 块 SSD 均参与 vSAN。若每块 SSD 划分为 8 个命名空间,则:

    • 每主机:4 × 8 = 32 个命名空间设备

    • 整个集群:3 × 32 = 96 个虚拟磁盘

    • 实际物理磁盘数量为 12(每主机 4 块)

    在 vCenter 中,这些命名空间被识别为独立磁盘设备。

     

     


    创建故障域

    为每台主机分别建立一个故障域(Fault Domain),确保数据能在不同主机间复制,提高 vSAN 的数据可靠性。

    此配置在 vCenter 的故障域设置中完成,并于界面中可视化展示每个主机的分布。


    创建虚拟机存储策略

    在测试中,针对虚拟机创建了多种存储策略,所有策略参数均保持默认。策略中启用了厚置备(Thick Provisioning)以预留容量,但在 vSAN 中所有对象本质上都为薄置备(Thin Provisioning),不会写入 0 填充,因此不会影响性能测试。

    条带大小(Stripe Size)测试:

    为每种命名空间配置(如 1+1、1+4、1+7)设置了从 1 到 5 的不同条带大小进行测试。每轮测试前通过如下步骤设置策略:

    1. 在集群配置页的 vSAN 服务中,启用性能服务。

    2. 在 HCIBench 创建 VM 时,选择对应存储策略。


    vSAN 存储策略示例

    配置项 设置
    主机服务规则启用 关闭
    针对“vSAN”存储的规则 开启
    基于标签的规则 关闭

    可用性(Availability)

    站点容灾容忍 无(标准集群)
    容忍失败次数 1 次(RAID-1 镜像)

    高级策略(Advanced Policy Rules)

    每个对象的 IOPS 限制 0(不限制)
    空间预留 厚置备(Thick)
    读取缓存保留比例 0%
    禁用对象校验和 关闭
    强制置备 关闭


    测试方法

    系统配置使用 HCIBench 2.5.1 进行测试,它部署虚拟机并使用 VDBENCH 生成标准化工作负载。

    针对 vSAN 数据存储配置了不同的条带数(Stripe Number)和磁盘组(Disk Groups)数量,视具体硬盘安装数量而定。

    HCIBench 测试参数:

    参数项
    虚拟机数量(VMs) 12, 24, 30
    CPU 数量 4
    内存大小(GB) 8
    数据磁盘数量 1, 4, 8, 12, 16, 20, 24
    数据磁盘大小(GiB) 14

    其他测试参数:

    参数项
    磁盘组数量 2, 4
    条带数量 1, 2, 3, 4, 5

    ✅ 使用 HCIBench 中的标准 “easy run” 配置,可很好模拟现实工作负载。


    测试用例

    以下为在不同命名空间配置下的测试用例:

    测试编号 描述 读/写比 块大小 场景
    Test 1 大数据写入或虚拟机创建 0%读 / 100%写 256K 连续写入
    Test 2 常见随机读取负载 100%读 / 0%写 4K 分析类负载
    Test 3 企业常见虚拟机混合负载 70%读 / 30%写 4K 多 VM 工作负载
    Test 4 常见数据库混合读写负载 50%读 / 50%写 8K 数据库类场景

    测试结果

    以下为不同命名空间配置下的最佳测试结果对比(包括 IOPS、吞吐量和延迟):


    无 NVMe 命名空间配置

    测试 类型 比例 块大小 线程 IOPS 吞吐量(MB/s) 延迟(ms)
    Test 1 顺序写 0/100 256K 1 1,987.4 582.8 41.14
    Test 2 随机读 100/0 4K 4 232,483.0 881.6 1.71
    Test 3 混合 70/30 4K 4 96,241.3 396.2 3.78
    Test 4 混合 50/50 8K 4 35,209.9 333.2 9.02

    2 个 NVMe 命名空间配置

    测试 类型 比例 块大小 线程 IOPS 吞吐量(MB/s) 延迟(ms)
    Test 1 顺序写 0/100 256K 4 10,300.6 2,575.2 74.52
    Test 2 随机读 100/0 4K 4 697,25.8 2,723.2 1.12
    Test 3 混合 70/30 4K 4 379,858.8 1,483.8 2.04
    Test 4 混合 50/50 8K 4 236,972.6 1,851.3 3.23

    5 个 NVMe 命名空间配置

    测试 类型 比例 块大小 线程 IOPS 吞吐量(MB/s) 延迟(ms)
    Test 1 顺序写 0/100 256K 4 8,688.6 2,172.0 88.54
    Test 2 随机读 100/0 4K 4 693,480.5 2,708.9 1.10
    Test 3 混合 70/30 4K 4 437,519.9 1,709.0 1.75
    Test 4 混合 50/50 8K 4 277,119.2 2,165.0 2.76

    8 个 NVMe 命名空间配置

    测试 类型 比例 块大小 线程 IOPS 吞吐量(MB/s) 延迟(ms)
    Test 1 顺序写 0/100 256K 4 15,700.7 3,925.1 49.02
    Test 2 随机读 100/0 4K 4 896,555.8 3,502.1 0.86
    Test 3 混合 70/30 4K 4 480,309.0 1,876.1 1.60
    Test 4 混合 50/50 8K 4 421,026.9 3,289.2 1.84

    IOPS 性能总结

    提升NVMe命名空间的IOPS性能如下图所示:


     

     

     

    在四种不同的工作负载下使用NVMe命名空间的IOPS性能优势,在所有情况下都显著优于不使用NVMe命名空间的情况。八(8)个命名空间配置与无命名空间配置之间的性能差异如下所示:

    💡 总结:IOPS 性能提升对比(使用 8 个命名空间 vs 不使用)

    测试编号 命名空间 IOPS 非命名空间 IOPS 提升比例
    Test 1 15,700.7 1,987.4 ~790%
    Test 2 896,555.8 232,483.0 ~385%
    Test 3 480,309.0 96,241.3 ~499%
    Test 4 421,026.9 35,209.9 ~1195%

    RA测试结果表明,使用命名空间的四驱动器配置优于相同配置但不使用命名空间的情况。随着命名空间数量的增加,测试配置的IOPS性能也随之提高。根据测试用例的工作负载,使用命名空间时,IOPS性能提高了385%到1195%。

    吞吐量性能总结

    在四种不同的工作负载下使用NVMe命名空间的吞吐量性能优势,在所有情况下也都显著优于不使用NVMe命名空间的情况,如下所示:

     

     

    吞吐量提升对比(使用 8 个命名空间 vs. 无命名空间)

    测试编号 命名空间 吞吐量 (MB/s) 非命名空间 吞吐量 (MB/s) 提升比例
    Test 1 – 顺序写 3,925.1 582.8 ~575%
    Test 2 – 随机读 3,502.1 881.6 ~297%
    Test 3 – 混合 1,876.1 396.2 ~373%
    Test 4 – 混合 3,289.2 333.2 ~887%

    💡 结论: 使用命名空间配置能够大幅提升吞吐量,尤其是在高密度随机读取或混合负载的场景中


    测试分析

    在进行详细的测试分析时,我们考察了不同的磁盘组配置和命名空间数量对性能的影响。通过在 2、3、4 和 5 个磁盘组 设置中进行测试,我们发现,4 个磁盘组 是最优配置,尤其是当这 4 块驱动器分配到不同处理器的插槽时,表现最佳。

    条带大小(Stripe Size)对比:

    测试期间,条带大小设置从 1 到 5 都进行了调整,尽管在写入密集型的场景中,较大的条带大小通常会提升写入性能,但其对读取性能产生了一定的负面影响。VMware 推荐在不明确需要其他配置时,条带设置为 1,但可以根据 SSD 数量、读写比及操作特性进行调整。

    内存和 CPU 资源对虚拟机性能的影响:

    • 当为虚拟机提供更多 CPU、RAM 和更大的数据磁盘时,性能并没有显著改变。

    • 测试表明,虚拟机数量 增加到 24 后,性能趋于平稳,这表明在 vSAN 层出现了瓶颈。

    • 超过 8 个数据磁盘的配置对性能产生负面影响。

    性能瓶颈分析:

    随着虚拟机数量的增加,IOPS 性能趋于平稳,并在 24 台虚拟机 之后开始瓶颈。考虑到每台虚拟机的计算与存储资源,建议调整虚拟机数目或优化 vSAN 配置。


    推荐建议

    通过本次测试,使用 KIOXIA CM6 系列 SSDNVMe 命名空间 结合 VMware vSAN 虚拟化,可以显著提高存储性能,特别是在混合虚拟机负载和数据库负载的场景下,性能分别提升了近 500%和 1200%。这些结果表明,使用命名空间可以大幅度改善存储性能,并能有效降低延迟。

    存储架构师和 VMware 管理员应考虑:

    • 在 vSAN 配置中利用 命名空间,最大化虚拟机可用的存储性能。

    • 根据工作负载的不同,灵活调整虚拟机数量、条带大小等配置,避免过度扩展导致性能瓶颈。

    • 在设计服务器集群时,考虑硬件购买时包含命名空间支持,搭配合适的硬件配置以充分发挥性能。

    💡 结论: 本参考架构展示的配置能够在与现有市场上一些全闪存阵列解决方案竞争时,提供类似或更好的性能。


    最终总结

    Dell EMC PowerEdge R7525 服务器(配备 AMD PCIe 4.0 CPU)、VMware vSAN 软件和 KIOXIA CM6 系列 PCIe 4.0 SSD 的结合,展示了超融合基础设施(HCI)环境下的出色性能。通过结合 NVMe 命名空间 和对硬件与软件的优化设置,能够极大提升 vSAN 性能,充分利用 KIOXIA CM6 系列 SSD 在缓存和容量层的双重作用。


    性能提升总结

    • 在各种操作负载下,IOPS 性能提高了 385% 到 1,200%

    • 吞吐量性能显著提升,尤其是在随机读写密集型工作负载中,提升幅度达到 575% 到 887%

    • 延迟大幅降低,进一步优化了整体响应时间。

    💡 推荐: 在构建 vSAN 环境时,强烈建议采用支持命名空间的 NVMe SSD,并根据具体需求调优硬件和存储策略,以最大化存储性能。


    调优参数和设置总结

    AMD EPYC CPU 调优参数:

    配置项 设置
    IOMMU 支持 启用
    L1/L2 流硬件预取器 启用
    NUMA 节点每插槽 1
    x2APIC 模式 启用
    每个处理器 CCD 的核心数 全部启用

    内存设置:

    配置项 设置
    内存数量 16 DIMM
    内存工作模式 优化模式

    KIOXIA CM6 SSD 设置:

    配置项 设置
    缓存命名空间大小 1 × 600GB
    容量命名空间大小 7 × 925GB
    驱动功率 25W

    VMware vSAN 设置:

    配置项 设置
    网络 MTU 9000
    存储策略 厚置备

    «
    »
以专业成就每一位客户,让企业IT只为效果和安全买单

以专业成就每一位客户,让企业IT只为效果和安全买单

在线咨询
连接中...