在 vSphere 6.x VSAN 数据存储上使用 Oracle RAC (2126079) | VMware KB

	1  Ratings

Symptoms

免责声明: 本文为 Using Oracle RAC on vSphere 6.x VSAN Datastore (2121181) 的翻译版本。 尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。 有关最新内容,请参见英文版本。 #### Purpose VMware Virtual SAN 会阻止多个虚拟机以读写模式打开同一个虚拟磁盘 (VMDK),此问题与 VMFS 和 NFS 数据存储相关。 这是为了防止存储在虚拟磁盘上的数据由于大多数客户机操作系统所使用的非群集感知文件系统上出现多个写入器而受到损坏。

要启用客户机内系统(利用具有分布式写入(即多写入器)功能的群集感知文件系统),我们必须为所有适用的虚拟机和 VMDK 显式启用多写入器支持。

本文概述了创建驻留在 VMware Virtual SAN 上的可共享 VMDK 和启用多写入器模式的过程。 这样可允许多个虚拟机以读写模式访问同一个 VMDK,从而使客户机内共享存储群集解决方案(例如 Oracle RAC)可用。

警告

将虚拟机挂起

×

仅适用于现有适配器

热扩展虚拟磁盘

×

快照

× | 虚拟备份解决方案通过 vStorage API 利用快照;例如,VMware Data Recovery 和 vSphere Data Protection。 这些解决方案也不受支持。

只有共享磁盘必须处于独立持久模式

克隆

×

Storage vMotion

×

更改块跟踪 (CBT)

×

vSphere Flash Read Cache (vFRC)

× | 失效的写入会导致数据丢失和/或损坏

仅受 ORAC 支持,并且仅限于 8 个 ESX/ESXi 主机

  • Oracle RAC,其中的应用程序可确保从两个或更多不同虚拟机发出的写入不会导致数据丢失
  • 此配置已经过测试,并且仅在 vSphere 6.x 上受支持。

  • 由于 VMware Virtual SAN 不支持原始设备映射 (RDM),因此本文档仅适用于驻留在 VSAN 数据存储上的虚拟磁盘。
  • 在多写入器模式下,最多只能与 VSAN 共享 8 个 ESXi/ESX 6.x 主机。 对于只读访问(也就是 View、链接克隆和快速置备等用例),您仍可与 32 个主机共享虚拟磁盘

Resolution

概述

创建每个 RAC 群集时,必须为该群集执行一次以下过程:在 VSAN 数据存储上配置 Oracle RAC 群集。 此过程需要执行以下步骤:

  • 创建虚拟机存储策略,以将其应用到用作集群共享存储的虚拟磁盘。
  • 以快速置零模式创建共享虚拟磁盘。
  • 当前版本的 vSphere Web Client 缺少所需的配置选项。 这要求在 VSAN 群集中的相关 ESXi 主机上使用 CLI 或 PowerCLI。
  • 将共享磁盘附加到一个或多个虚拟机
  • 使用 ESXi 命令行,为虚拟机和磁盘启用多写入器模式。
  • 当前版本的 vSphere Web Client 缺少所需的配置选项。 这要求在相关 ESXi 主机上使用 CLI。
  • 将虚拟机存储策略应用到共享磁盘。

警告: 继续操作之前,所有将成为 Oracle RAC 节点的虚拟机都必须处于关闭电源状态。

创建虚拟机存储策略

根据虚拟机的设计规范,您需要定义虚拟机存储策略以将其应用到 RAC 共享磁盘。 创建类似于下图的存储策略:

1756815212148-2e6f441a-4052-4646-abd1-ce4763693ae0.png

  • 在本示例中,我们将虚拟机存储策略命名为“RAC”
  • 对象空间预留: 100%,此设置会在磁盘上预先分配所有对象的组件。
  • 允许的故障数: 默认设置是 1,可在另一个 VSAN 节点上提供镜像副本。 此设置可对主机/硬件组件故障提供 RAID 1 保护。 如对话框所示,这样将在 VSAN 数据存储上占用两倍的存储空间。
  • 每个对象的磁盘带数: 默认 VSAN 策略为 1。 请为此策略选择所需的磁盘带宽度。 这与 RAID 0 相似。 在本示例中,我们使用值 2。

有关存储策略配置选项的详细信息,请参见 VMware Virtual SAN 文档

将存储控制器添加到 Oracle RAC 虚拟机

: 在每个 Oracle RAC 虚拟机上,创建类型相同并处于相同位置(SCSI 地址)的控制器。

  1. 在 vSphere Web Client 中右键单击虚拟机,然后选择。
  1. 在后续窗口的底部,从 下拉菜单中选择 ,然后单击。
  1. 展开条目。
  1. 使模式保持为“无”,然后选择所需的类型(、 或 )。

: 一般建议将准虚拟控制器类型用于 RAC 共享磁盘。

  1. 单击
1756815212252-827d65c9-7467-4142-82fc-f2ad7c5f8eab.png
  1. 对其余 RAC 虚拟机重复以上过程。

创建快速置零磁盘 (PowerCLI)

  1. 启动 PowerCLI 并使用 Connect-VIServer 连接到 vCenter。

有关 PowerCLI 约定和登录等的更多指导,请参见 VMware vSphere PowerCLI Documentation。[

](https://www.vmware.com/support/developer/PowerCLI/)

  1. 使用以下格式的 New-HardDisk cmdlet 创建新硬盘:

New-HardDisk -VM <VM name> -CapacityGB <size> -Datastore <VSAN datastore name> -StorageFormat EagerZeroedThick -Controller <controller name> -Persistence IndependentPersistent

,要在附加到数据存储“vsanDatastore”上的“SCSI Controller 1”的“RAC_0”虚拟机上创建一个大小为 10 GB 的磁盘,请使用以下命令:

New-HardDisk -VM “RAC_0” -CapacityGB 10 -Datastore “vsanDatastore” -StorageFormat EagerZeroedThick -Controller “SCSI Controller 1” -Persistence IndependentPersistent

The name of the storage controller will match the name of the device we added to the VMs in the previous section.

  1. 对要创建的其余共享磁盘重复以上过程。

创建快速置零磁盘(ESXi 命令行)

  1. 导航到 Oracle RAC 群集中第一个虚拟机的目录:

cd /vmfs/volumes/<vsan datastore>/<VM_Name>

cd /vmfs/volumes/vsanDatastore/RAC_0

  1. 使用以下 vmkfstools 命令创建要共享的快速置零厚置备虚拟磁盘:

vmkfstools -c <size> -W vsan -d eagerzeroedthick pwd/<vmdk-file-name>

vmkfstools -c 12G –W vsan –d eagerzeroedthick pwd/RAC_0_1.vmdk

  1. 对要创建的所有共享磁盘重复步骤 2。

将共享磁盘添加到一个或多个虚拟机 (vSphere Web Client)

创建快速置零磁盘后,您需要将其添加到其余 RAC 虚拟机。 您可以通过 vSphere Web Client 或 PowerCLI 执行此操作。 本节概述了 vSphere Web Client 方法。

虚拟磁盘应添加到每个虚拟机上的相同 SCSI 位置。 如果某个磁盘位于一个虚拟机上的位置 1:0,则在 RAC 群集中,该磁盘应位于所有虚拟机上的位置 1:0。

  1. 右键单击相应的虚拟机,然后选择编辑设置…
  1. 在后续窗口中,从下拉菜单中选择,然后单击。
  1. 导航到适当的目录,然后选择所需的磁盘。
  1. 单击。
  1. 展开条目,然后适当地修改。
  1. 将更改为
  1. 单击以保存更改。
1756815212322-76cc9029-60e1-426e-aa30-aabb3c0b9d74.png
  1. 对其余虚拟机和共享磁盘重复以上过程。

将共享磁盘添加到一个或多个虚拟机 (PowerCLI)

创建快速置零磁盘后,您需要将其添加到其余 RAC 虚拟机。 您可以通过 vSphere Web Client 或 PowerCLI 执行此操作。 本节概述了 PowerCLI 方法。

  1. 启动 PowerCLI 并使用以下命令连接到 vCenter: Connect-VIServer。
  1. 使用以下格式的 New-HardDisk cmdlet 添加现有磁盘:

New-HardDisk -VM <VM Name> -DiskPath “[<datastore name>] <folder>/<disk file>” -Controller <controller name> -Persistence IndependentPersistent

:要将文件夹“RAC_0”中的数据存储“vsanDatastore”上的磁盘“RAC_0_1.vmdk”添加到虚拟机“RAC_1”并将其附加到“SCSI Controller 1”,请使用以下命令:

New-HardDisk -VM RAC_1 -DiskPath “[vsanDatastore] RAC_0/RAC_0_1.vmdk” -Controller “SCSI Controller 1” -Persistence IndependentPersistent

  1. 对其余虚拟机和共享磁盘重复以上过程。

使用 ESXi shell 为虚拟机和磁盘启用多写入器模式

此时无法通过 vSphere Web Client 添加多写入器标记。 要在适用的虚拟机和磁盘上启用多写入器模式,我们需要使用 ESXi shell。

: 由于此过程涉及修改和加载虚拟机配置,因此建议向同一个 ESXi 主机注册所有 RAC 虚拟机以进行这些更改,从而不必登录到多个主机。 进行这些更改后,虚拟机可以分布到整个 vSphere 群集。

  1. 要为特定磁盘启用 SCSI 总线共享,请运行以下命令:

echo ‘scsi<N>:<D>.sharing = “multi-writer”’ >>

:要为数据存储“vsanDatastore”上的虚拟机“RAC_0”的 SCSI 设备 1:0 启用多写入器,请使用以下命令:

echo ‘scsi1:0.sharing = “multi-writer”’ >> /vmfs/volumes/vsanDatastore/RAC_0/RAC_0.vmx

  1. 为所有适用的磁盘和虚拟机完成步骤 2,并适当地修改 SCSI 位置。 例如,要共享四个磁盘,我们应将以下条目全部添加到 VMX 文件:

scsi1:0.sharing = "multi-writer"

scsi1:1.sharing = "multi-writer"

scsi1:2.sharing = "multi-writer"

scsi1:3.sharing = "multi-writer"

  1. 刷新虚拟机配置以使更改生效。 我们必须先识别虚拟机才能进行刷新。 请使用以下命令:

vim-cmd vmsvc/getallvms |grep -i <VM name>

:要列出所有向主机注册的名称包含“RAC”的虚拟机,请运行以下命令:

vim-cmd vmsvc/getallvms |grep -i RAC

生成的输出将显示虚拟机注册,并在最左端的列中显示 VMID。 VMID 是一个简单的整数编号。

  1. 刷新配置以使更改生效:

vim-cmd vmsvc/reload <VMID>

: 如果其中一个 RAC 虚拟机的 VMID 是“24”,则应使用以下命令:

vim-cmd vmsvc/reload 24

  1. 重新加载所有适用的虚拟机。

将虚拟机存储策略应用到共享磁盘。

请注意,创建磁盘并将其添加到所有虚拟机后,我们必须应用为 RAC 共享磁盘创建的存储策略。 该策略必须应用到所有 RAC 虚拟机上所有适用的磁盘。

  1. 在 vSphere Web Client 中,右键单击虚拟机,然后选择编辑设置…
  1. 展开相应的硬盘条目。
  1. 从下拉列表中选择所需的虚拟机存储策略。
  1. 验证磁盘模式是否为
  1. 单击。
1756815212379-5f6eb980-aef2-4df9-9f82-f23c311d7e0c.png
  1. 对所有适用的虚拟机和磁盘重复以上过程。

: 如果要在以后将其他存储策略应用到 RAC 共享磁盘,您必须对所有共享磁盘所有共享该磁盘的虚拟机执行策略更改。