天天看點

在虛拟化平台(vSphere 或vSAN)上部署Oracle RAC叢集注意事項

作者:青荷露尖520

1、在vSAN上部署Oracle RAC概述

VMware vSAN 或vSphere 會阻止多個虛拟機以讀寫模式打開同一個虛拟磁盤 (VMDK),此問題與 VMFS 和 NFS 資料存儲特性相關,最主要的是為了防止存儲在虛拟磁盤上的資料由于大多數客戶機作業系統所使用的非群集感覺檔案系統上出現多個寫入器而受到損壞。

要啟用客戶機内系統(利用具有分布式寫入(即多寫入器)功能的群集感覺檔案系統),我們必須為所有适用的虛拟機和 VMDK 顯示啟用多寫入器支援。

本文重點讨論在 VMware vSAN 上建立可共享 VMDK 和啟用多寫入器模式的過程。這樣可允許多個虛拟機以讀寫模式通路同一個 VMDK,進而使客戶機内共享存儲群集解決方案(例如 Oracle RAC)可用。

警告:除非客戶機上的應用程式能夠安全地對正在通路同一個存儲的多個系統進行仲裁和協調,否則請勿為任何虛拟機/VMDK 組合啟用多寫入器模式。為不使用客戶機内群集感覺檔案系統的磁盤啟用多寫入器模式會導緻資料損壞。

注意:啟用多寫入器模式會導緻部分虛拟機操作和 vSphere 功能變得不受支援。啟用多寫入器模式時,請參考下表以了解操作/功能的可支援性:

2、受支援和不受支援的操作或功能

操作或功能 受支援 不受支援 備注
打開和關閉虛拟機電源以及重新啟動虛拟機
挂起虛拟機 ×
熱添加虛拟磁盤 僅适用于現有擴充卡
熱移除裝置
熱擴充虛拟磁盤 ×
連接配接和斷開裝置
快照 × 虛拟備份解決方案通過 vStorage API 利用快照;例如,VMware Data Recovery 和 vSphere Data Protection。這些解決方案也不受支援。
包含獨立持久磁盤的虛拟機的快照 隻有共享磁盤必須處于獨立持久模式
克隆 ×
Storage vMotion ×
更改塊跟蹤 (CBT) ×
vSphere Flash Read Cache (vFRC) × 失效的寫入會導緻資料丢失和/或損壞
vMotion 僅受 ORAC 支援,并且僅限于 8 個 ESX/ESXi 主機

Oracle RAC使用說明:

  • Oracle RAC,其中的應用程式可確定從兩個或更多不同虛拟機發出的寫入不會導緻資料丢失
  • 此配置已經過測試,并且僅在 vSphere 6.x 及更高版本上受支援。
  • vSAN 6.5 及更高版本中的 vSAN iSCSI 目标支援虛拟化 Oracle RAC。對于部署在 vSAN 群集上的 Oracle RAC 虛拟機,建議使用 vSAN 本機解決方案。對于在非 vSAN 群集上運作的 Oracle RAC 虛拟機,可以在 Oracle RAC 虛拟機中将 iSCSI 啟動器配置為使用 vSAN iSCSI 目标中的存儲。

3、限制和要求:

  • 由于 VMware vSAN 不支援原始裝置映射 (RDM),是以本文檔僅适用于駐留在 vSAN 資料存儲上的虛拟磁盤。
  • vSAN 僅支援 vSAN 版本 6.7 U3 的 SCSI-3 永久預留。早期版本的 vSAN 不支援 SCSI-3 永久預留。但是,Oracle Clusterware 不會将 SCSI3-PR 用于 IO 防護,是以,應使用采用多寫入器模式的基于主機的防護,而不是基于存儲的防護。
  • 在 vSAN 6.7 Patch 01 之前,使用多寫入器模式時,虛拟磁盤必須為快速置零厚置備 (EZT)。在 vSAN 上建立 EZT 磁盤時,磁盤不會自動置零。如果需要置零,必須使用 vmkfstools -w 指令将所有塊全部置零。有關詳細資訊,請參見 A virtual machine fails to power on with the error: Thin/TBZ disks cannot be opened in multiwriter mode.VMware ESX cannot open the virtual disk for clustering.(1033570)。
  • 從 VMware vSAN 6.7 Patch 01 開始,vSAN 上的 Oracle RAC 不需要将共享設定為 VMDK 快速置零厚置備 (OSR = 100) 即可啟用多寫入器模式。共享 VMDK 為精簡置備 (OSR = 0) 時即可啟用多寫入器模式。對于遷移到此 vSAN 6.7 Patch 01 vSAN 版本或更高版本的現有 Oracle RAC 部署,可以使用 SPBM(基于存儲政策的管理)将現有存儲政策從 OSR = 100 更改為 OSR = 0(如果需要,反之亦然)。這是一個線上更改,不需要停機。
  • 熱添加虛拟磁盤會移除多寫入器标記。有關詳細資訊,請參見 Hot adding a virtual disk in ESXi 5.5 removes the multi-writer flag (2078540)。
  • 多寫入器磁盤共享受到基礎檔案系統的并發鎖定支援的限制。最多 8 個裝置可同時共享鎖定。從 vSphere 6.7 Update 1 開始,将移除此限制。有關基于生成的鎖定的詳細資訊,請參見以下注意。

注意:

最多 支援8 個 Oracle RAC 客戶機可使用多寫入器标記同時共享一個磁盤對象。VMware 建議使用反關聯性規則,以防止加入同一 RAC 群集的多個 Oracle RAC 客戶機位于同一 ESXi 主機上。

但是,從 vSphere 6 7 Update 1 開始,在多寫入器中共享支援的虛拟磁盤已擴充到 8 個以上主機。“這也适用于 VMFS5/VMFS6”。為了啟用此功能,您需要啟用 /VMFS3/GBLAllowMW 進階配置選項,需登入到 ESXi 主機并執行以下指令:

#esxcli system settings advanced set -i 1 -o /VMFS3/GBLAllowMW

在共享環境(如裸裝置映射 (RDM) 磁盤)中,您無法對超過 8 個 ESXi 主機上的虛拟機使用多寫入器鎖定。如果将虛拟機遷移到第九個主機,可能無法打開該主機的電源并顯示錯誤消息“無法打開 xxxx.vmdk 或其依賴的快照之一。(使用者過多)(Could not open xxxx.vmdk or one of the snapshots it depends on. (Too many users))。此修複使進階配置選項 /VMFS3/GBLAllowMW 可見。您可以使用基于生成的鎖定為超過 8 個主機手動啟用或禁用多寫入程式鎖定。

實際用例:

vSAN 6.5 及更高版本提供 vSAN iSCSI 目标功能支援,可将基于 vSAN 的存儲作為 iSCSI LUN 提供給 iSCSI 啟動器。如果在 Oracle RAC 實體機中配置了 iSCSI 啟動器,則這些啟動器可以共享 vSAN 6.5 及更高版本提供的 iSCSI LUN。有關配置 vSAN iSCSI 目标的說明,請參考 vSAN 官方文檔。

使用多寫入器标記啟用或禁用 VMFS 提供的同步寫入保護 (1034165): https://kb.vmware.com/s/article/1034165

4、建立RAC叢集,虛拟機層面(不含資料庫和RAC叢集層面)部署過程

建立每個 RAC 群集時,必須為該群集執行一次以下過程:在 vSAN 資料存儲上配置 Oracle RAC 群集。此過程需要執行以下步驟:

  • 建立虛拟機存儲政策,以将其應用到用作叢集共享存儲的虛拟磁盤。
  • 在 vSAN 6.7 Patch 01 之前,需要在快速置零模式下建立共享虛拟磁盤。從 VMware vSAN 6.7 Patch 01 開始,共享磁盤不需要針對多寫入器屬性進行快速置零厚置備 (EZT)。
  • 将共享磁盤附加到一個或多個虛拟機
  • 為虛拟機和磁盤啟用多寫入器模式。
  • 将虛拟機存儲政策應用到共享磁盤。

建立虛拟機存儲政策

根據虛拟機的設計規範,您需要定義虛拟機存儲政策以将其應用到 RAC 共享磁盤。

vSAN 6.7 Patch 01 和更高版本的示例存儲政策:具有多寫入器屬性的共享 vmdk 可以進行精簡置備 (OSR = 0%)

在虛拟化平台(vSphere 或vSAN)上部署Oracle RAC叢集注意事項

vSAN 6.7 P01 之前版本的示例存儲政策:具有多寫入器屬性的共享 vmdk 必須進行厚置備 (OSR = 100%)

在虛拟化平台(vSphere 或vSAN)上部署Oracle RAC叢集注意事項

注意:

  • 在本示例中,我們将虛拟機存儲政策命名為“RAC”
  • 對象空間預留:100%,此設定會在磁盤上預先配置設定所有對象的元件。僅在先前版本的 vSAN 6.7 Patch 01 中需要此項
  • 從 vSAN 6.7 Patch 01 開始,共享磁盤的對象空間預留 (OSR) 可以設定為 0%
  • 允許的故障數:預設設定是 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 Parallel、LSI SAS 或 Paravirtual)。

    注意:一般建議将準虛拟控制器類型用于 RAC 共享磁盤。

  5. 單擊确定
  6. 對其餘 RAC 虛拟機重複以上過程。

對于 VMware vSAN 6.7 P01 和更高版本:

在 VMware vSAN 6.7 Patch 01 之前,vSAN 上的 Oracle RAC 需要将共享 VMDK 設定為快速置零厚置備 (OSR = 100) 才能啟用多寫入器模式。從 VMware vSAN 6.7 P01 開始,vSAN 上的 Oracle RAC 不需要将共享 VMDK 設定為快速置零厚置備 (OSR = 100) 即可啟用多寫入器模式。

在第一個虛拟機上建立共享磁盤

要使用 vSphere Web Client 在第一個虛拟機上建立共享磁盤,請按照 vSphere 版本 6.5 一節中所示的步驟進行操作。

從 vSAN 6.7 Patch 01 開始,唯一的更改是共享 vmdk 無需進行快速置零厚置備 (EZT)。您可以選擇将 OSR 設定為精簡置備的存儲政策。

其餘步驟與“vSphere 版本 6.5 或更高版本,但低于 vSAN 6.7 Patch 01”一節所述相同。

在虛拟化平台(vSphere 或vSAN)上部署Oracle RAC叢集注意事項

對于低于 vSAN 6.7 P01 的所有 vSAN 6.5 和更高版本:

在第一個虛拟機上建立共享磁盤

從 vSphere 版本 6.5 開始,vSphere Web Client 可以選擇在 vSAN 資料存儲上建立快速置零厚置備磁盤 (EZT)。

注意:虛拟磁盤應添加到每個虛拟機上的相同 SCSI 位置。如果某個磁盤位于一個虛拟機上的位置 1:0,則在 Oracle RAC 中,該磁盤應位于所有虛拟機上的位置 1:0。

使用 vSphere Web Client

要使用 vSphere Web Client 在第一個虛拟機上建立共享磁盤,請執行以下操作:

  1. 右鍵單擊相應虛拟機,然後選擇編輯設定。
  2. 從新裝置下拉菜單中選擇新硬碟,然後單擊添加。
  3. 展開新硬碟條目,然後在磁盤置備下拉菜單中選擇厚置備快速置零選項。
  4. 在共享下拉菜單中,選擇多寫入器選項。
  5. 将磁盤模式更改為獨立持久。

注意:由于獨立持久磁盤模式不是啟用多寫入器選項的硬性要求,是以,生成虛拟機快照時,預設的從屬磁盤模式會導緻“無法生成共享磁盤的快照 (cannot snapshot shared disk)”錯誤。使用獨立持久磁盤模式将允許生成作業系統磁盤快照,而共享磁盤需要通過第三方供應商軟體單獨進行備份。

  1. 根據需要修改虛拟裝置節點。
  2. 單擊确定以儲存更改。
  3. (可選)由于在 vSAN 上建立的 EZT 磁盤不會自動置零,是以,在需要置零時,必須使用指令“vmkfstools -w <path-to-vmdk>”将所有塊全部置零。在置零期間,請注意 vSAN 上額外的 IO 工作負載。
  4. 對其餘共享磁盤重複以上過程。
在虛拟化平台(vSphere 或vSAN)上部署Oracle RAC叢集注意事項

将共享磁盤添加到一個或多個虛拟機要使用 vSphere Web Client 将共享磁盤添加到一個或多個虛拟機,請執行以下操作:

  1. 右鍵單擊相應虛拟機,然後選擇編輯設定。
  2. 從新裝置下拉菜單中選擇現有硬碟,然後單擊添加。
  3. 導航到适當的目錄,然後選擇磁盤。
  4. 單擊确定。
  5. 展開新硬碟條目,然後相應修改虛拟裝置節點。
  6. 在共享下拉菜單中,選擇多寫入器選項。
  7. 将磁盤模式更改為獨立持久。

注意:由于獨立持久磁盤模式不是啟用多寫入器選項的硬性要求,是以,生成虛拟機快照時,預設的從屬磁盤模式會導緻“無法生成共享磁盤的快照 (cannot snapshot shared disk)”錯誤。使用獨立持久磁盤模式将允許生成作業系統磁盤快照,而共享磁盤需要通過第三方供應商軟體單獨進行備份。

  1. 單擊确定以儲存更改。
  2. 對其餘虛拟機和共享磁盤重複以上過程。
在虛拟化平台(vSphere 或vSAN)上部署Oracle RAC叢集注意事項

對于低于 6.5 的 vSphere 6.0 Update 1 或更高版本建立快速置零磁盤 (PowerCLI)

在 vSphere 6.0 U1 或更高版本,但低于 6.5 的版本(示例:6.0 U3)中,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 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

    存儲控制器的名稱将與上一節添加到虛拟機中的裝置的名稱相比對。

  3. (可選)由于在 vSAN 上建立的 EZT 磁盤不會自動置零,是以,在需要置零時,必須使用指令 vmkfstools -w <path-to-vmdk> 将所有塊全部置零。在置零期間,請注意 vSAN 上額外的 IO 工作負載。
  4. 對要建立的其餘共享磁盤重複以上過程。

建立快速置零磁盤(ESXi 指令行)

在 vSphere 6.0 U1 或更高版本,但低于 6.5 的版本(示例:6.0 U3)中,vSphere Web Client 無法在 vSAN 資料存儲上建立快速置零磁盤。雖然 vSAN 資料存儲支援快速置零磁盤,但目前未在 vSphere Web Client 中提供此功能。要适應目前版本中的此限制,我們必須使用 PowerCLI 或 ESXi 指令行來建立快速置零磁盤。本節概述了用于建立磁盤的 ESXi 指令行方法。

注意:您必須啟用對主機的本地 ESXi shell 或 SSH 通路并以特權 (root) 使用者身份登入才能完成以下過程。

  1. 導航到 Oracle RAC 群集中第一個虛拟機的目錄:

    cd /vmfs/volumes/vsan_datastore/VM_Name

    例如:

    cd /vmfs/volumes/vsanDatastore/RAC_0

  2. 使用以下 vmkfstools 指令建立要共享的快速置零厚置備虛拟磁盤:

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

    例如:

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

  3. (可選)由于在 vSAN 上建立的 EZT 磁盤不會自動置零,是以,在需要置零時,必須使用指令“vmkfstools -w <path-to-vmdk>”将所有塊全部置零。在置零期間,請注意 vSAN 上額外的 IO 工作負載

vmkfstools -w `pwd`/vmdk_file_name

例如:

vmkfstools -w `pwd`/RAC_0_1.vmdk

  1. 對要建立的所有共享磁盤重複步驟 2。

将共享磁盤添加到一個或多個虛拟機

建立快速置零磁盤之後,必須使用 vSphere Web Client 或 PowerCLI 将其添加到其餘 RAC 虛拟機。

注意:虛拟磁盤應添加到每個虛拟機上的相同 SCSI 位置。如果某個磁盤位于一個虛拟機上的位置 1:0,則在 RAC 群集中,該磁盤應位于所有虛拟機上的位置 1:0。

使用 vSphere Web Client

要使用 vSphere Web Client 将共享磁盤添加到一個或多個虛拟機,請執行以下操作:

  1. 右鍵單擊相應的虛拟機,然後選擇編輯設定。
  2. 從新裝置下拉菜單中選擇現有硬碟,然後單擊添加。
  3. 導航到适當的目錄,然後選擇磁盤。
  4. 單擊确定。
  5. 展開新硬碟條目,然後适當地修改虛拟裝置節點。
  6. 在“共享”下拉菜單中,選擇多寫入器選項。
  7. 将磁盤模式更改為獨立持久。

注意:由于獨立持久磁盤模式不是啟用多寫入器選項的硬性要求,是以,生成虛拟機快照時,預設的從屬磁盤模式會導緻“無法生成共享磁盤的快照 (cannot snapshot shared disk)”錯誤。使用獨立持久磁盤模式将允許生成作業系統磁盤快照,而共享磁盤需要通過第三方供應商軟體單獨進行備份。

  1. 單擊确定以儲存更改。
  2. 對其餘虛拟機和共享磁盤重複以上過程。

使用 PowerCLI

  1. 啟動 PowerCLI 并使用 Connect-VIServer 連接配接到 vCenter Server。
  2. 使用以下格式的 New-HardDisk cmdlet 添加現有磁盤:

    New-HardDisk -VM VM_Name -DiskPath “[datastore_name] folder/disk_file” -Controller controller_name -Persistence IndependentPersistent

    例如,要從 vsanDatastore 資料存儲上的 RAC_0 檔案夾中将磁盤 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

注意:由于獨立持久磁盤模式不是啟用多寫入器選項的硬性要求,是以,生成虛拟機快照時,預設的從屬磁盤模式會導緻“無法生成共享磁盤的快照 (cannot snapshot shared disk)”錯誤。使用獨立持久磁盤模式将允許生成作業系統磁盤快照,而共享磁盤需要通過第三方供應商軟體單獨進行備份。

  1. 對其餘虛拟機和共享磁盤重複以上過程。

對于 vSphere 6.0 Update 1 之前的版本

使用 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”’ >>path_to_VMX_file

    例如,要為 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. 重新整理虛拟機配置以應用更改。 使用以下指令确定要重新整理的虛拟機:

    vim-cmd vmsvc/getallvms |grep -i VM_name

    例如,要列出所有注冊到主機且名稱中包含 RAC 的虛拟機,請運作以下指令:

    vim-cmd vmsvc/getallvms |grep -i RAC

    輸出中包含虛拟機注冊資訊,其中 VMID 在最左列中顯示。VMID 是一個簡單的整數編号。重新整理配置:

    vim-cmd vmsvc/reload VMID

    例如,如果其中一個 RAC 虛拟機的 VMID 是 24,請運作以下指令:

    vim-cmd vmsvc/reload 24

  4. 重新加載所有适用的虛拟機。

将虛拟機存儲政策應用到共享磁盤

使用上述三種方法之一建立共享磁盤并添加到所有虛拟機後,必須應用為 RAC 共享磁盤建立的存儲政策。該政策必須應用到所有 RAC 虛拟機上所有适用的磁盤。

  1. 在 vSphere Web Client 中,右鍵單擊虛拟機,然後單擊編輯設定。
  2. 展開相應的硬碟條目。
  3. 從下拉清單中選擇所需的虛拟機存儲政策。
  4. 驗證磁盤模式是否為獨立持久。

注意:由于獨立持久磁盤模式不是啟用多寫入器選項的硬性要求,是以,生成虛拟機快照時,預設的從屬磁盤模式會導緻“無法生成共享磁盤的快照 (cannot snapshot shared disk)“錯誤。使用獨立持久磁盤模式将允許生成作業系統磁盤快照,而共享磁盤需要通過第三方供應商軟體單獨進行備份。

  1. 單擊确定。
  2. 對所有适用的虛拟機和磁盤重複以上過程。

    注意:如果要在以後将其他存儲政策應用到 RAC 共享磁盤,您必須對所有共享磁盤以及所有共享該磁盤的虛拟機執行政策更改。

本文參考VMware 官網KB:

https://kb.vmware.com/s/article/2121181?lang=zh_cn