在 vSphere 6.x vSAN 数据存储上使用 Oracle RAC
search cancel

在 vSphere 6.x vSAN 数据存储上使用 Oracle RAC

book

Article ID: 340648

calendar_today

Updated On:

Products

VMware vSAN

Issue/Introduction

免责声明:本文为 Using Oracle RAC on a vSphere 6.x vSAN Datastore (2121181) 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。



VMware vSAN 会阻止多个虚拟机以读写模式打开同一个虚拟磁盘 (VMDK),此问题与 VMFS 和 NFS 数据存储相关。这是为了防止存储在虚拟磁盘上的数据由于大多数客户机操作系统所使用的非群集感知文件系统上出现多个写入器而受到损坏。

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

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


警告:除非客户机能够安全地对正在访问同一个存储的多个系统进行仲裁和协调,否则请勿为任何虚拟机/VMDK 组合启用多写入器模式。为不使用客户机内群集感知文件系统的磁盘启用多写入器模式会导致数据损坏。

注意:启用多写入器模式会导致部分虚拟机操作和 vSphere 功能变得不受支持。有关启用多写入器模式时的操作/功能可支持性,请参见以下列表:

支持和不支持的操作或功能

操作或功能

支持

不支持

注释

打开和关闭虚拟机电源以及重新启动虚拟机


将虚拟机挂起


×


热添加虚拟磁盘


仅适用于现有适配器

热移除设备



热扩展虚拟磁盘


×


连接和断开设备



快照


×

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

包含独立持久磁盘的虚拟机的快照


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

克隆


×


Storage vMotion


×


更改块跟踪 (CBT)


×


vSphere Flash Read Cache (vFRC)


×

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

vMotion



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


用例

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

限制和要求

注意

8 个主机的限制仅适用于多写入器模式共享虚拟磁盘。对于其他情况,vSphere 群集大小最多可达到所用许可证支持的最大大小。


Symptoms:


Environment

VMware vSAN 6.0.x
VMware vSAN 5.5.x
VMware vSAN 6.2.x
VMware vSAN 6.1.x
VMware vSAN 6.5.x

Resolution

概述

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

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

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

创建虚拟机存储策略

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

注意

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

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

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

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

  1. 在 vSphere Web Client 中右键单击虚拟机,然后选择编辑设置
  2. 在后续窗口的底部,从新设备: 下拉菜单中选择 SCSI 控制器,然后单击添加
  3. 展开新的 SCSI 控制器条目。
  4. 使总线共享模式保持为“无”,然后选择所需的类型(LSI ParallelLSI SASParavirtual)。

    注意: 一般建议将准虚拟控制器类型用于 RAC 共享磁盘。
  5. 单击确定



  6. 对其余 RAC 虚拟机重复以上过程。

创建快速置零磁盘 (PowerCLI)

在当前版本中,vSphere Web Client 无法在 vSAN 数据存储上创建快速置零磁盘。 虽然 vSAN 数据存储支持快速置零磁盘,但目前未在 vSphere Web Client 中提供此功能。 要适应当前版本中的此限制,我们必须使用 PowerCLI 或 ESXi 命令行来创建快速置零磁盘。 本节概述了用于创建磁盘的 PowerCLI 方法,并指明这是首选方法。
  1. 启动 PowerCLI 并使用 Connect-VIServer 连接到 vCenter。
    有关 PowerCLI 约定和登录等的更多指导,请参见 VMware vSphere PowerCLI Documentation

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

    New-HardDisk -VM -CapacityGB -Datastore -StorageFormat EagerZeroedThick -Controller -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.


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

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

使用最新版本的 vSphere Web Client 时,无法在 vSAN 数据存储上创建快速置零磁盘。虽然 vSAN 数据存储支持快速置零磁盘,但目前未在 vSphere Web Client 中提供此功能。要适应当前版本中的此限制,我们必须使用 PowerCLI 或 ESXi 命令行来创建快速置零磁盘。本节概述了用于创建磁盘的 ESXi 命令行方法。

注意: 您必须启用对主机的本地 ESXi shell 或 SSH 访问并以特权 (root) 用户身份登录才能完成以下过程。
  1. 导航到 Oracle RAC 群集中第一个虚拟机的目录:

    cd /vmfs/volumes//

    例如

    cd /vmfs/volumes/vsanDatastore/RAC_0

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

    vmkfstools -c -W vsan -d eagerzeroedthick `pwd`/

    例如

    vmkfstools -c 12G –W vsan –d eagerzeroedthick `pwd`/RAC_0_1.vmdk
  3. 对要创建的所有共享磁盘重复步骤 2。

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

创建快速置零磁盘之后,必须使用 vSphere Web Client 或 PowerCLI 将其添加到其余 RAC 虚拟机。

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

使用 vSphere Web Client

要使用 vSphere Web Client 将共享磁盘添加到一个或多个虚拟机,请执行以下操作:
  1. 右键单击相应的虚拟机,然后选择编辑设置
  2. 新设备下拉菜单中选择现有硬盘,然后单击添加
  3. 导航到适当的目录,然后选择所需的磁盘。
  4. 单击确定
  5. 展开新硬盘条目,然后适当地修改虚拟设备节点
  6. 共享下拉菜单中,选择多写入器选项。

    注意
    :该选项只在 vSphere Web Client 6.0 Update 1 及更高级版本中才可用。对于 6.0 GA (没有任何更新),则需要手动编辑,操作步骤请见下文“使用 ESXi shell 为虚拟机和磁盘启用多写入器模式”部分。
  7. 磁盘模式更改为独立持久。
  8. 单击确定以保存更改。



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

使用 PowerCLI

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

  2. 使用以下格式的 New-HardDisk cmdlet 添加现有磁盘:

    New-HardDisk -VM -DiskPath “[] /” -Controller -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

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

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

无法通过 6.0 Update 1 以前的 vSphere Web Client 版本添加多写入器标记。如果未安装 vSphere 6.0 Update 1 或更高版本,请使用 ESXi shell 在适用的虚拟机和磁盘上启用多写入器模式。

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

  1. 要为特定磁盘启用 SCSI 总线共享,请运行以下命令:
    echo ‘scsi:.sharing = “multi-writer”’ >>

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

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

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

    scsi1:0.sharing = "multi-writer"
    scsi1:1.sharing = "multi-writer"
    scsi1:2.sharing = "multi-writer"
    scsi1:3.sharing = "multi-writer"


  3. 刷新虚拟机配置以应用更改。

    请使用以下命令:

    1. 使用以下命令确定要刷新的虚拟机:

      vim-cmd vmsvc/getallvms |grep -iVM_name

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

      vim-cmd vmsvc/getallvms |grep -i RAC

      输出将显示虚拟机注册,并在最左端的列中显示 VMID。VMID 是一个简单的整数编号。
    2. 刷新配置:

      vim-cmd vmsvc/reloadVMID

      如果其中一个 RAC 虚拟机的 VMID 是24,请运行以下命令:

      vim-cmd vmsvc/reload 24

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

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

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

  1. 在 vSphere Web Client 中,右键单击虚拟机,然后选择编辑设置
  2. 展开相应的硬盘条目。
  3. 从下拉列表中选择所需的虚拟机存储策略。
  4. 验证磁盘模式是否为独立持久。
  5. 单击确定



  6. 对所有适用的虚拟机和磁盘重复以上过程。

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

Additional Information

有关在 VMFS 数据存储上执行的相似过程的详细信息,请参见:

Using Oracle RAC on a vSphere 6.x vSAN Datastore