暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用 vSphere 部署 SQL Server 的最佳实践

原创 谭磊Terry 恩墨学院 2022-10-29
942

使用 vSphere 在带有 Windows Server(或 Linux)的 VM 中运行的经过适当设计的虚拟化 SQL Server 实例对于成功实施企业应用程序至关重要。

为关键数据库的性能而设计与为整合而设计之间的一个主要区别(这是虚拟化时的传统做法)是,当您为性能而设计时,您会努力尽可能减少 VM 之间的资源争用,甚至完全消除争用。在 VM 出现并开始承担 SQL 负载后,应实施持续监控并根据原始基线进行调整。调整 VM 大小是一个复杂的过程,应该在过度分配资源和低估工作负载要求之间做出明智的判断。

为了显着延长增加的粒度指标的保留时间,建议使用以下统计级别。(默认的 vCenter 服务器配置设置为统计信息收集的基本级别)。

image.png

VMware 推荐的用于设计和实施 vSphere 环境的做法,旨在优化 SQL Server 的最佳性能。

VMWARE VSPHERE 上的 SQL SERVER最佳实践清单

  1. vSphere HA 准入控制可以配置为强制预留足够的资源,从而保证启动关键任务 SQL Server 工作负载的能力。确保主机集群上有足够的备用资源来承受从集群中移除的预定数量的主机,无论是计划内的还是计划外的情况。
    image.png

  2. VMware 建议为托管 SQL Server 工作负载的集群启用 DRS 功能
    image.png

3.避免在没有适当用例的情况下启用 EVC -隐藏某些 CPU 功能可能会影响虚拟化 SQL Server 实例的性能。
image.png

.资源池不应该用作虚拟机的文件夹。资源池的不正确使用,尤其是嵌套资源池,可能会导致虚拟机性能下降。切勿将 VM 和资源池组合在同一层次结构级别中 - 这将导致 VM 与整个资源池具有相同的份额。

5.将物理服务器上的 BIOS/UEFI 固件更新到最新版本,并确保所有 I/O 设备都具有最新支持的固件版本。

6.建议高性能环境使用以下 BIOS/UEFI 设置(如果适用):

  • 启用涡轮增压。
  • 启用超线程。
  • 验证所有 ESXi 主机是否在 BIOS/UEFI 中启用了 NUMA。在某些系统(例如 HP 服务器)中,NUMA 是通过禁用节点交错来启用的。有关此功能的适用 BIOS 设置,请咨询您的服务器硬件供应商。
  • 启用高级 CPU 功能,例如 VT-x/AMD-V、EPT 和 RVI。
  • 按照服务器制造商的指导选择适当的 Snoop 模式。
  • 禁用任何未使用的设备(例如,串行端口)。
  • 将电源管理(或其特定于供应商的等效标签)设置为“操作系统控制”(或其特定于供应商的等效标签)。这将使 ESXi 管理程序能够根据所选策略控制电源管理。
  • 禁用所有处理器 C 状态(包括 C1E 暂停状态)。这些增强的电源管理方案可能会引入内存延迟和次优 CPU 状态更改(Halt-to-Full),从而降低 VM 的性能。

7.早期版本的 ESXi 默认使用“高性能”电源方案。vSphere 5.0 及更高版本默认为“平衡”电源方案。电源方案应更改为“高性能”。
image.png

在 vSphere Client 中浏览到主机。

  • 单击配置。
  • 在硬件下,选择电源管理并单击编辑按钮。
  • 为主机选择“高性能”电源管理策略,然后单击确定。策略选择保存在主机配置中,并且可以在引导时再次使用。您可以随时更改它,并且不需要重新启动服务器。

8.分配给所有 VM 的 vCPU 总数不应超过主机上可用的物理(非逻辑)内核总数。在虚拟化 SQL Server 实现时,采用更保守的大小调整方法有助于排除 CPU 资源争用可能导致性能欠佳的因素。确定要使用的容量过剩后,您可以考虑通过将更多工作负载添加到 vSphere 集群中并在可用物理内核之外分配虚拟 vCPU 来提高密度。

  1. ESXi 在将 vCPU 映射到物理内核时做出有意识的 CPU 管理决策,同时考虑到超线程。VMware 建议在 BIOS/UEFI 中启用超线程,以便 ESXi 可以利用此技术。

10.反映用于配置 Cores per Socket ratio 的底层硬件配置。应注意将正确的 vNUMA 拓扑暴露给 VM。

例子:

  • 一台共有 16 个 CPU 内核和 192 GB RAM(每个 pNUMA 节点中有 8 个内核和 96 GB RAM)的服务器用于托管具有 16 个 vCPU 的 VM。“每个插槽的核心数”设置为两 (2)。因此,具有八 (8) 个 NUMA 节点的 vNUMA 拓扑会暴露给 VM,这是次优的。
    image.png
  • 使用列出的配置示例将 vCPU 正确分配给 VM
    image.png
  1. VMware 建议不要默认启用 CPU 热插拔,尤其是对于需要 vNUMA 的 VM。SQL Server 企业版从 2008 及以上版本支持以这种方式添加 CPU;但是,如果以这种方式添加 CPU,则会影响 vNUMA 拓扑。这可能会导致性能下降,因为 NUMA 架构不反映底层物理服务器的架构。与依赖 CPU 热插拔相比,调整 VM 的 CPU 大小始终是更好的选择。(是否使用此功能应根据具体情况做出决定,而不是在用于部署 SQL 的 VM 模板中实现)。
    image.png

  2. VMware 建议不要使用 CPU 亲和性,因为它限制了 Hypervisor 在物理服务器上有效调度 vCPU 的能力。

13.使用 NUMA 感知需要 SQL Server 企业版。避免在任何其他版本的 SQL Server 上使用宽 NUMA 配置。如果无法避免宽 NUMA 配置,请在实施配置之前执行广泛的性能测试。转移到生产后,应对重要的 CPU 计数器实施监控。SQL Server Management Studio 在服务器实例的处理器属性下显示 NUMA 拓扑。

image.png

一般规则(适用于从 5.0 开始的所有 vSphere 版本):

  • vNUMA 不会针对分配的 vCPU 少于九 (9) 个(默认)的任何 VM 公开。
  • vNUMA 不会暴露给任何 vCPU 小于主机 pNUMA 大小的 VM(默认值)。
  • 如果启用了“CPU 热添加”功能,则不会暴露 vNUMA

14.避免在 ESXi 主机级别过度使用内存(HostMem >= 总和(VM 内存 + 开销)。如果物理服务器有 256GB 的 RAM,则不要为驻留在其上的 VM 分配超过该数量的内存,从而将内存开销引入考虑也是如此。

15.在为运行 SQL Server 的 VM 收集性能指标以决定大小时,请使用 SQL Server 提供的指标(在 DMV 中可用:sys.dm_os_process_memory)。不要使用 vSphere 或 Windows 来宾操作系统提供的内存指标(例如,vSphere 提供的“内存消耗”,尤其是“内存活动”)。

16.检查硬件 pNUMA 内存分配以确定在不跨越 pNUMA 边界的情况下可以分配给 VM 的最大内存量。

17.检查内存预留是否等于预配内存。保留所有内存将允许 SQL Server 访问已配置的所有内存,并禁用可节省磁盘空间的交换文件的创建(特别是对于分配了大量内存的 VM)。即使拥塞条件消失,交换的 VM 内存仍将保持交换状态。目标是消除任何发生分页的机会。

image.png

18.在 vSphere 6.7 版中引入了对 PMem 的支持,可以与 Windows Server 2016 和 SQL Server 2016 SP1 及更高版本中的原生 PMem 支持相结合,从而提高高负载数据库的性能。将 vPMem 设备暴露给具有 Windows Server 2016 操作系统或更高版本的 VM 后,它将被检测为存储类模块并应格式化为 DAX 卷。SQL Server 可以使用该 DAX 卷通过在配置为 DAX 的 SCM 卷上放置一个额外的日志文件来启用“tail-of-log-cache”。只需要 20 MB 的 PMem 空间(SQL Server 将只使用 20 MB 来存储日志缓冲区),一个 PMem 模块可以在同一主机上运行的多个 VM 之间有效共享。

ALTER DATABASE 添加日志文件(名称 = ,文件名 = ‘’,大小 = 20 MB)

19.一些 SQL Server 工作负载比其他工作负载对网络延迟更敏感。虚拟网络流量类型应该分开,以保持相同的流量包含在指定的网络中。vSphere 可以使用单独的接口进行管理、vSphere vMotion 和基于网络的存储流量。额外的接口可用于 VM 流量。在 VM 中,可以使用不同的接口来分隔某些流量。使用 802.1q VLAN 标记和虚拟交换机端口组在逻辑上分离流量。使用单独的物理接口和专用端口组或虚拟交换机来物理分离流量。如果使用 iSCSI,网络适配器应专用于网络通信或 iSCSI,但不能同时用于两者。

20.使用 VMXNET3 半虚拟化 NIC。VMXNET 3 是专为提高性能而设计的最新一代半虚拟化 NIC。它提供了多种高级功能,包括多队列支持、接收端缩放、IPv4/IPv6 卸载和 MSI/MSI-X 中断传递。遵循 SQL Server 工作负载的配置准则。

21.利用多网卡 vMotion。借助多 NIC vMotion,每个 vMotion 操作都使用多个端口链接,甚至是单个 VM vMotion 操作。这加快了 vMotion 操作并降低了大型内存密集型 VM 上的 SDPS 风险。

22.升级到最新版本的 VMWare Tools 将为 VMXNET3 网络适配器或 PVSCSI 虚拟控制器等虚拟硬件设备提供最新的增强功能以​​及错误和安全修复。例如,VMware Tools 版本 10.2.5 使 RSS 缩放成为任何新安装的默认设置。需要再次强调的是,VMware Tools 升级本质上是一个驱动程序升级过程,它会影响核心操作系统,因此应该在非生产环境中谨慎进行初步测试。

  1. VMware 建议在将新的物理硬件引入环境时升级虚拟机兼容性。虚拟机兼容性升级应谨慎计划和小心。如果由于某种原因未安装 VMware Tools,请确保已安装它们以获得 SQL Server 的最佳性能。

24.使用 SQL Server 进行精简配置:

  • 将 vmdks 配置为 eagerzeroedthick 以避免空间配置的 I/O 开销。Server 2008 之前的系统可能需要对齐分区以提高性能。有关此过程的详细信息,请参阅制造商。

原文标题:Best Practices for Deploying SQL Server Using vSphere
原文作者:Ken Haff
原文地址:https://virtual-dba.com/blog/best-practices-for-deploying-sql-server-using-vsphere/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论