天天看點

幹貨分享之vSphere Oracle RAC叢集虛拟機存儲遷移

作者:青荷露尖520

注:本文翻譯自VMware官方部落格的文章

Storage vMotion for Oracle RAC Workloads within same vSphere Cluster - Virtualize Applications

在業務關鍵型應用程式領域,尤其是 IO 密集型 Oracle 工作負載,始終需要根據要求苛刻的工作負載配置檔案進行存儲遷移。

例如–

  • 将 Oracle 資料庫存儲從存儲陣列中的一個層遷移到存儲陣列中的另一個層,由同一 vSphere 群集通路
  • 将 Oracle 資料庫存儲從一個陣列遷移到另一個陣列(資料中心内和資料中心之間),以實作相同的資料存儲類型 [ VMFS .NFS、iSCSI、vVOL 、vSAN],由同一 vSphere Cluster 通路
  • 跨不同的資料存儲類型将 Oracle 資料庫存儲從一個陣列遷移到另一個陣列(資料中心内和資料中心之間) [ VMFS .NFS, iSCSI , vVOL , vSAN] ,由同一 vSphere Cluster 通路

存儲遷移在各種排列群組合之間無縫實作,隻需使用 vmdk,這是上述所有 VMware 資料存儲的虛拟機存儲的共同點。

本文介紹如何為在 VMware vSphere 上運作的 Oracle 資料庫以及任何類型的底層存儲執行存儲遷移。遷移是使用兩種關鍵技術的組合完成的,具體取決于資料庫部署模型

  • VMware Storage vMotion
  • Oracle 自動存儲管理 (ASM)。

在介紹此技術之前,我們首先回顧一些關鍵概念,包括 Oracle 在 vSphere 上的部署模型和 Storage vMotion 的基礎知識。

本部落格重點介紹了我們如何 存儲 vMotion Oracle RAC 叢集 ,從一個資料存儲到存儲陣列内的另一個資料存儲,或者在 2 個存儲陣列之間,由同一個 vSphere 叢集通路,沒有任何停機時間。

關鍵要點

  • Oracle RAC 叢集從一個資料存儲遷移到另一個資料存儲,在存儲陣列内或 VMware SDDC 上的 2 個存儲陣列之間遷移具有挑戰性,因為 Oracle RAC VM 将共享的 vmdk/s 用于 RAC 資料庫。并且不能單獨使用 VMware Storage vMotion,如下所述。VMware Storage vMotion 将遷移所有 vmdk,包括 Oracle 資料庫 ASM 磁盤、作業系統和 Oracle 二進制檔案 vmdk,但不會存儲 vMotion 叢集 vmdk,它隻能用于非共享 vmdk 的 [KB 1034165]Oracle 自動存儲管理 (ASM) 技術将僅遷移 Oracle 資料庫 ASM 磁盤,但不會遷移作業系統或 Oracle 二進制檔案 vmdk。
  • 本部落格重點介紹如何在不停機的情況下存儲 vMotion Oracle RAC 叢集。
  • 我們部署了一個兩步流程,該流程結合了Oracle ASM和存儲vMotion技術,如上所述使用 Storage vMotion 技術遷移 RAC VM 的作業系統和 Oracle 非叢集 vmdk – RAC VM 的作業系統和 Oracle 二進制檔案 vmdk 現在可以從一個資料存儲遷移到現有陣列上或 2 個陣列之間的新資料存儲使用 Oracle ASM 技術遷移叢集資料庫資料 – RAC 資料庫可以從一個資料存儲遷移到現有陣列上的新資料存儲,也可以在兩個陣列之間遷移

在介紹此技術之前,我們首先回顧一些關鍵概念,包括 Oracle 在 vSphere 上的部署模型和 Storage vMotion 的基礎知識。

vSphere 上的 Oracle 布局

有 3 種主要的 Oracle 資料庫部署模型,所有這些模型都受支援,并且可以部署在 VMware SDDC 堆棧上。

  • 甲骨文單執行個體
  • Oracle RAC叢集
  • Oracle RAC one node(使用與多寫入器标志共享 vmdk 的相同概念)

vmdk 共享模式有 3 個值

  • 未指定
  • 無共享
  • 多寫入器 – 用于群集
幹貨分享之vSphere Oracle RAC叢集虛拟機存儲遷移

一個Oracle RAC叢集将有多個虛拟機,每個虛拟機都有2種類型的vmdk:

  • 非資料庫 VMDK 的容納根檔案系統的作業系統磁盤 (/)Oracle 二進制檔案 vmdk,包含 Oracle 二進制檔案(Grid 和 RDBMS 二進制檔案)/u01)
  • 共享資料庫 VMDK 的使用多寫入器屬性

VMware Storage vMotion

借助 VMware Storage vMotion 技術,我們可以将虛拟機遷移到虛拟機,以便在虛拟機打開電源時将虛拟機和虛拟磁盤的配置檔案從一個資料存儲重新定位到另一個資料存儲。

vSphere 文檔詳細介紹了存儲 vMotion 要求和限制

多寫入器磁盤和存儲 vMotion 的注意事項

用于在虛拟機之間共享vmdk的多寫入器功能在VMware SDDC上的Oracle RAC部署中起着重要作用。

VMFS 是一個群集檔案系統,預設情況下禁止多個虛拟機打開和寫入同一虛拟磁盤(.vmdk 檔案)。這可以防止多個虛拟機無意中通路同一個 .vmdk 檔案。

多寫入器選項允許多個虛拟機共享 VMFS 支援的磁盤。此選項可用于禁用對某些群集感覺應用程式的保護,例如Oracle Clusterware,其中應用程式確定來自兩個或多個不同VM的寫入不會導緻資料丢失,并確定資料一緻性和并發性。

使用多寫入器功能的共享 vmdk 不支援的操作包括

  • Storage vMotion
  • 快照
  • 更改塊跟蹤 (CBT)

嘗試 RAC 虛拟機的存儲 vMotion 将導緻錯誤:

幹貨分享之vSphere Oracle RAC叢集虛拟機存儲遷移

使用多寫入器屬性的支援和不支援的操作/功能可以在知識庫1034165中找到。

幹貨分享之vSphere Oracle RAC叢集虛拟機存儲遷移

請參閱部落格 為Oracle RAC ASM / OCFS2線上添加共享vmdk,而無需停機,了解如何将帶有多寫入器标志的共享vmdk線上添加到Oracle RAC叢集。

了解 Oracle 存儲遷移方法

有幾種方法可以将 Oracle 工作負載存儲從一個資料存儲遷移到另一個資料存儲,在現有陣列内或在 2 個單獨的陣列之間遷移。

  1. Oracle 自動存儲管理 (ASM) 技術,用于将 Oracle 資料塊從資料存儲上的一個 vmdk 遷移到相同/不同資料存儲上的新 vmdk

該過程是将新磁盤添加到現有 ASM 磁盤組并從同一 ASM 磁盤組中删除舊磁盤,同時資料庫繼續通路磁盤組中的檔案。在磁盤組中添加或删除磁盤時,Oracle ASM 會自動重新分發檔案内容,并在重新分發内容時無需停機。删除磁盤時,将通過将所有檔案擴充資料塊從丢棄的磁盤移動到磁盤組中的其他磁盤來重新平衡磁盤組。

有關詳細資訊,請參閱從磁盤組中删除磁盤。

電源設定參數ASM_POWER_LIMIT确定再平衡操作發生的速度。值的範圍是 0 到 1024。預設值為 1。值為 0 将禁用重新平衡。較高的數值使重新平衡操作能夠更快地完成,但可能會導緻更高的 I/O 開銷和更多的重新平衡過程。使用此參數,DBA 能夠控制遷移吞吐量,進而避免在生産高峰時段造成潛在性能

Oracle ASM 遷移方法使用 Oracle ASM 技術在 ASM 磁盤和 ASM 磁盤之間遷移 Oracle 塊

  • 将僅遷移 Oracle 資料庫 ASM 磁盤不會遷移作業系統 vmdk 或 Oracle 二進制檔案 vmdk

使用 Oracle ASM 技術進行存儲的步驟是将 Oracle 資料庫存儲從一個資料存儲遷移到現有陣列上或兩個陣列之間的新資料存儲

  • 将新資料存儲(現有或新陣列)中的新 vmdk/s 添加到虛拟機使用适當的分區偏移量對新裝置進行分區如果使用 ASMLIB 則需要,而 Linux udev 則不需要在新磁盤上建立 ASM 裝置将新的 ASM 磁盤添加到現有 ASM 磁盤組從現有 ASM 磁盤組中删除舊的 ASM 磁盤删除磁盤時,通過将删除的磁盤中的所有檔案擴充資料塊移動到磁盤組中的其他磁盤來重新平衡磁盤組從虛拟機中删除舊的 vmdk/s

在此步驟結束時

  • 資料庫 vmdk 位于新資料存儲上但是,作業系統和Oracle二進制檔案VMDK仍然在舊的資料存儲上。

2. 使用 VMware Storage vMotion 方法将 vmdk 從一個資料存儲移動到新資料存儲

VMware Storage vMotion

  • 将遷移所有 vmdk,包括 Oracle 資料庫 ASM 磁盤、作業系統 vmdk 和 Oracle 二進制檔案 vmdk隻能用于非共享 vmdk 的 [KB 1034165]

任何基于存儲的遷移(無論是存儲 vMotion 還是基于陣列的遷移)都比 Oracle ASM 添加、删除和重新平衡磁盤的方法更快。但是,遷移速度不受管制或控制。這可能會導緻生産高峰時段的潛在性能。

要從現有陣列遷移到新陣列,必須在 vSphere 群集上挂載兩個陣列中的資料存儲

還有其他遷移存儲的方法,這些方法也需要時間來設定和切換,超出了本部落格的範圍

  • 将目标 Oracle RAC 作為源 Oracle RAC 叢集的實體備用資料庫
  • 使用資料泵 / RMAN / 金門 / 第三方複制産品在源資料庫和新建立的目标 RAC 資料庫之間移動資料

Oracle RAC prac19c 的測試設定

Below is a setup of a 2 node Oracle RAC prac19c with 2 RAC Instances prac19c1 and prac19c2. Th Operating system is OEL 7.9 with Grid Infrastructure and RDBMS 19.8 with Oracle ASM with ASMLIB.

Both RAC VM’s prac19c1 and prac19c2 storage is on a FC datastore on Pure Storage.

Details of Oracle RAC VMs prac19c1 and prac19c2 are as follows:

  • 12 vCPUs with 128GB RAM
  • Oracle SGA set to 96GB with traditional HugePages and PGA set to 6GB
  • VM hosts both Oracle Grid and RDBMS 19.8 multi-tenant production database vvol19c with a pluggable database pdb1
  • For sake of simplicity and illustration, one ASM disk group was created called DATA_DG which houses all the data files, control files, redo log files , archive log files, crs and vote disks. Recommendation is to create separate ASM disk groups for the RAC and Database components as a best practice. Refer to Oracle VMware Hybrid Cloud High Availability Guide for more information
  • VM prac19c1 public network adapter is connected to port group APPS-1614 and assigned an IP address 172.16.14.191. The private network adapter is connected to port group APPS-1605 and assigned an IP address 192.168.14.191
  • VM prac19c2 public network adapter is connected to port group APPS-1614 and assigned an IP address 172.16.14.192. The private network adapter is connected to port group APPS-1605 and assigned an IP address 192.168.14.192
幹貨分享之vSphere Oracle RAC叢集虛拟機存儲遷移

Oracle RAC prac19c VM 的 VMDK 如下所示。所有 SCSI 控制器都設定為 VMware Paravirtual SCSI 控制器類型:

  • 兩個非共享 VMDK硬碟 1 80GB 用于具有磁盤模式的作業系統 取決于硬碟 1 80GB 用于 Oracle 網格基礎設施和 RDBMS 二進制檔案,磁盤模式取決于
  • 一個共享 VMDK (500 GB),具有多寫入器屬性和磁盤模式 RAC 群集的獨立-持久

共享的 vmdk 是在 1 個 RAC 虛拟機上建立的,所有其他 RAC 虛拟機隻需引用/指向它

具有多寫入器标志和磁盤模式獨立-持久模式的共享 VMDK 的詳細資訊如下所示:

幹貨分享之vSphere Oracle RAC叢集虛拟機存儲遷移

讓我們看一下 RAC prac19c1 和 prac19c2 VM 的 .vmx 檔案,看看共享的 vmdk 是如何連接配接到 SCSI 2:0 插槽的。

[root@sc2esx09:/vmfs/volumes/5faa0685-b4cf32fa-c4e4-e4434b2d2ca8/prac19c1] cat prac19c1.vmx | grep -i vmdk scsi0:0.fileName = “prac19c1.vmdk” scsi0:1.fileName = “prac19c1_1.vmdk”

scsi2:0.fileName = “prac19c1_3.vmdk

[root@sc2esx09:/vmfs/volumes/5faa0685-b4cf32fa-c4e4-e4434b2d2ca8/prac19c1

[root@sc2esx09:/vmfs/volumes/5faa0685-b4cf32fa-c4e4-e4434b2d2ca8/prac19c2] cat prac19c2.vmx | grep -i vmdk scsi0:0.fileName = “prac19c2.vmdk” scsi0:1.fileName = “prac19c2_1.vmdk” scsi2:0.fileName = “/vmfs/volumes/5faa0685-b4cf32fa-c4e4-e4434b2d2ca8/prac19c1/prac19c1_3.vmdk” <– 請參閱 VM prac19c1 vmdk [root@sc2esx09:/vmfs/volumes/5faa0685-b4cf32fa-c4e4-e4434b2d2ca8/prac19c2]

Oracle RAC 叢集的存儲遷移

問題,我們現在如何将RAC叢集從一個資料存儲遷移到另一個資料存儲,通路到同一個vSphere叢集,而不會造成任何停機?

請記住,Oracle RAC VM共享了用于RAC資料庫的vmdk/s。如上所述

  • Oracle 自動存儲管理 (ASM) 技術将僅遷移 Oracle 資料庫 ASM 磁盤不會遷移作業系統 vmdk 或 Oracle 二進制檔案 vmdk
  • VMware Storage vMotion将遷移所有 vmdk,包括 Oracle 資料庫 ASM 磁盤、作業系統和 Oracle 二進制檔案 vmdk隻能用于非共享 vmdk 的 [KB 1034165]

我們有解決方案嗎?

解決方案:一個兩步過程,将 Oracle ASM 和存儲 vMotion 技術結合在 RAC 群集中。

在不停機的情況下對 Oracle RAC 叢集進行存儲遷移的進階步驟

  1. 源資料存儲是純存儲 FC 資料存儲 OraPure,目标資料存儲是純存儲 FC 資料存儲 SC2-純模闆
  2. 僅從源資料存儲 OraPure 執行存儲 vMotion RAC 虛拟機的“prac19c1”和“prac19c2 非共享 vmdk”到目标資料存儲 SC2-Pure-Templates,而無需遷移共享 vmdk。
  3. 将目标資料存儲 SC2 純模闆中具有多寫入器屬性的新共享 vmdk 添加到 RAC VM 的“prac19c1”和“prac19c2”。
  • 執行步驟,将目标資料存儲 SC2 純模闆中的新共享 vmdk 添加到 ASM 磁盤組DATA_DG
  • 從 Oracle ASM 中删除舊的 ASM 磁盤以進行DATA_DG
  • 然後從 RAC VM 的 'rac19c1' 和 'rac19c2' 中删除舊的 vmdk
  • 現在,用于DATA_DG的 RAC 資料庫共享 vmdk 位于目标資料存儲 SC2 純模闆上

步驟 1 – Storage vMotion 以遷移 RAC VM 的 prac19c1 和 prac19c2 的作業系統和 Oracle vmdk

将非叢集作業系統和适用于 RAC VM 的 Oracle vmdk 從一個資料存儲遷移到現有陣列或 2 個陣列之間的新資料存儲的步驟與存儲 vMotion 任何虛拟機的步驟相同。

步驟如下所示。源資料存儲是純存儲 FC 資料存儲 OraPure,目标資料存儲是純存儲 FC 資料存儲 SC2-純模闆

幹貨分享之vSphere Oracle RAC叢集虛拟機存儲遷移
幹貨分享之vSphere Oracle RAC叢集虛拟機存儲遷移

作為存儲vMotion的一部分,我們可以選擇要為單個vmdk放置vmdk的資料存儲,我們選擇此選項

幹貨分享之vSphere Oracle RAC叢集虛拟機存儲遷移
幹貨分享之vSphere Oracle RAC叢集虛拟機存儲遷移
幹貨分享之vSphere Oracle RAC叢集虛拟機存儲遷移

在此步驟結束時,RAC VM 的 prac19c1 和 prac19c2 的作業系統和 Oracle 二進制檔案 vmdk 現在位于新的資料存儲上

幹貨分享之vSphere Oracle RAC叢集虛拟機存儲遷移

500GB 共享 vmdk 仍位于源資料存儲 OraPure 上。

幹貨分享之vSphere Oracle RAC叢集虛拟機存儲遷移

步驟 2 – 使用 Oracle ASM 技術遷移群集資料庫資料

使用 Oracle ASM 技術進行存儲的步驟是将 Oracle RAC 資料庫存儲從一個資料存儲遷移到現有陣列或兩個陣列之間的新資料存儲

  • 在 RAC VM prac19c1 上 – 建立具有多寫入器屬性的新快速零厚 (EZT) vmdk,以便從目标資料存儲 SC2 純模闆共享
  • 在 RAC VM prac19c2 上 – 将 RAC VM 的 prac19c1 上新添加的相同 vmdk 添加到具有多寫入器屬性的相同 SCSI 位置上的 RAC VM 的 prac19c2 以進行共享(添加現有硬碟選項)
  • RAC VM 的 prac19c1 和 prac19c2 現在都可以看到從目标資料存儲 SC500 純模闆中雕刻出的相同的新 vmdk 2GB
  • 僅在 RAC VM prac19c1 上 – 使用适當的分區偏移量對新的 vmdk 裝置進行分區,如果使用 ASMLIB 則需要,Linux udev 不需要
  • 在 RAC VM prac19c2 上 – 掃描 SCSI 總線以檢視新的磁盤分區
  • 在 RAC VM prac19c1 上 – 在新磁盤上建立新的 ASM 裝置
  • 在 RAC VM prac19c2 上 – 運作“oracleasm scandisks”指令
  • 在 RAC VM prac19c1 上 – 将新的 ASM 磁盤添加到現有 ASM 磁盤組
  • 在 RAC VM prac19c1 上 – 從現有 ASM 磁盤組中删除舊的 ASM 磁盤,并在有/沒有電源選項的情況下執行 ASM 重新平衡。删除磁盤時,通過将删除的磁盤中的所有檔案擴充資料塊移動到磁盤組中的其他磁盤來重新平衡磁盤組
  • 在 RAC VM prac19c1 上 – 運作“oracleasm deletedisk XXX”,其中 XXX 是舊的 ASM 磁盤。
  • 在 RAC VM prac19vc2 上 – 運作“oracleasm scandisks”指令
  • 從 RAC VM 的 prac19c1 和 prac19c2 中删除舊的 vmdk
  • 現在,用于DATA_DG的 RAC 資料庫共享 vmdk 位于目标資料存儲 SC2 純模闆上

有關使用 ASM 重新平衡添加和删除 ASM 磁盤的詳細步驟,請參閱部落格 No 停機時間 Oracle RAC 叢集的存儲 vMotion 使用具有多寫入器屬性的共享 vmdk 從一個 vSAN 到另一個 vSAN 群集 使用 VMware HCI 網格

在此步驟結束時,在甲骨文上 RAC VM 的 prac19c1 和 prac19c2 (共享和非共享 vmdk)已從一個資料存儲移動到另一個資料存儲。

總結

  • Oracle RAC 叢集從一個資料存儲遷移到另一個資料存儲,在存儲陣列内或 VMware SDDC 上的 2 個存儲陣列之間遷移具有挑戰性,因為 Oracle RAC VM 将共享的 vmdk/s 用于 RAC 資料庫。并且不能單獨使用 VMware Storage vMotion,如下所述。VMware Storage vMotion 将遷移所有 vmdk,包括 Oracle 資料庫 ASM 磁盤、作業系統和 Oracle 二進制檔案 vmdk,但不會存儲 vMotion 叢集 vmdk,它隻能用于非共享 vmdk 的 [KB 1034165]Oracle 自動存儲管理 (ASM) 技術将僅遷移 Oracle 資料庫 ASM 磁盤,但不會遷移作業系統或 Oracle 二進制檔案 vmdk。
  • 本部落格重點介紹如何在不停機的情況下存儲 vMotion Oracle RAC 叢集。
  • 我們部署了一個兩步流程,該流程結合了Oracle ASM和存儲vMotion技術,如上所述使用 Storage vMotion 技術遷移 RAC VM 的作業系統和 Oracle 非叢集 vmdk – RAC VM 的作業系統和 Oracle 二進制檔案 vmdk 現在可以從一個資料存儲遷移到現有陣列上或 2 個陣列之間的新資料存儲使用 Oracle ASM 技術遷移叢集資料庫資料 – RAC 資料庫可以從一個資料存儲遷移到現有陣列上的新資料存儲,也可以在兩個陣列之間遷移

結論

業務關鍵型應用程式(尤其是 IO 密集型 Oracle 工作負載)需要根據要求苛刻的工作負載配置檔案,從存儲陣列内或存儲陣列之間的一層遷移到另一層。

通過結合Oracle ASM技術和VMware存儲vMotion這兩種技術,我們能夠在VMware SDDC上成功遷移n節點Oracle RAC的存儲,而無需任何停機時間或SLA,這是在VMware SDDC上遷移RAC叢集的最快方法。

繼續閱讀