百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

干货分享之vSphere Oracle RAC集群虚拟机实现存储迁移方法

ccwgpt 2024-12-27 15:51 99 浏览 0 评论

注:本文翻译自VMware官方博客的文章

在业务关键型应用程序领域,尤其是 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 个值

  • 未指定
  • 无共享
  • 多写入器 – 用于群集

一个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 将导致错误:

使用多写入器属性的支持和不支持的操作/功能可以在知识库1034165中找到。

请参阅博客 为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

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 的详细信息如下所示:

让我们看一下 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-纯模板

作为存储vMotion的一部分,我们可以选择要为单个vmdk放置vmdk的数据存储,我们选择此选项


在此步骤结束时,RAC VM 的 prac19c1 和 prac19c2 的操作系统和 Oracle 二进制文件 vmdk 现在位于新的数据存储上

500GB 共享 vmdk 仍位于源数据存储 OraPure 上。

步骤 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集群的最快方法。

相关推荐

一个基于.Net Core遵循Clean Architecture原则开源架构

今天给大家推荐一个遵循CleanArchitecture原则开源架构。项目简介这是基于Asp.netCore6开发的,遵循CleanArchitecture原则,可以高效、快速地构建基于Ra...

AI写代码翻车无数次,我发现只要提前做好这3步,bug立减80%

写十万行全是bug之后终于找到方法了开发"提示词管理助手"新版本那会儿,我差点被bug整崩溃。刚开始两周,全靠AI改代码架构,结果十万行程序漏洞百出。本来以为AI说没问题就稳了,结果...

OneCode低代码平台的事件驱动设计:架构解析与实践

引言:低代码平台的事件驱动范式在现代软件开发中,事件驱动架构(EDA)已成为构建灵活、松耦合系统的核心范式。OneCode低代码平台通过创新性的注解驱动设计,将事件驱动理念深度融入平台架构,实现了业务...

国内大厂AI插件评测:根据UI图生成Vue前端代码

在IDEA中安装大厂的AI插件,打开ruoyi增强项目:yudao-ui-admin-vue31.CodeBuddy插件登录腾讯的CodeBuddy后,大模型选择deepseek-v3,输入提示语:...

AI+低代码技术揭秘(二):核心架构

本文档介绍了为VTJ低代码平台提供支持的基本架构组件,包括Engine编排层、Provider服务系统、数据模型和代码生成管道。有关UI组件库和widget系统的信息,请参阅UI...

GitDiagram用AI把代码库变成可视化架构图

这是一个名为gitdiagram的开源工具,可将GitHub仓库实时转换为交互式架构图,帮助开发者快速理解代码结构。核心功能一键可视化:替换GitHubURL中的"hub...

30天自制操作系统:第六天:代码架构整理与中断处理

1.拆开bootpack.c文件。根据设计模式将对应的功能封装成独立的文件。2.初始化pic:pic(可编程中断控制器):在设计上,cpu单独只能处理一个中断。而pic是将8个中断信号集合成一个中断...

AI写代码越帮越忙?2025年研究揭露惊人真相

近年来,AI工具如雨后春笋般涌现,许多人开始幻想程序员的未来就是“对着AI说几句话”,就能轻松写出完美的代码。然而,2025年的一项最新研究却颠覆了这一期待,揭示了一个令人意外的结果。研究邀请了16位...

一键理解开源项目:两个自动生成GitHub代码架构图与说明书工具

一、GitDiagram可以一键生成github代码仓库的架构图如果想要可视化github开源项目:https://github.com/luler/reflex_ai_fast,也可以直接把域名替换...

5分钟掌握 c# 网络通讯架构及代码示例

以下是C#网络通讯架构的核心要点及代码示例,按协议类型分类整理:一、TCP协议(可靠连接)1.同步通信//服务器端usingSystem.Net.Sockets;usingTcpListene...

从复杂到优雅:用建造者和责任链重塑代码架构

引用设计模式是软件开发中的重要工具,它为解决常见问题提供了标准化的解决方案,提高了代码的可维护性和可扩展性,提升了开发效率,促进了团队协作,提高了软件质量,并帮助开发者更好地适应需求变化。通过学习和应...

低代码开发当道,我还需要学习LangChain这些框架吗?| IT杂谈

专注LLM深度应用,关注我不迷路前两天有位兄弟问了个问题:当然我很能理解这位朋友的担忧:期望效率最大化,时间用在刀刃上,“不要重新发明轮子”嘛。铺天盖地的AI信息轰炸与概念炒作,很容易让人浮躁与迷茫。...

框架设计并不是简单粗暴地写代码,而是要先弄清逻辑

3.框架设计3.框架设计本节我们要开发一个UI框架,底层以白鹭引擎为例。框架设计的第一步并不是直接撸代码,而是先想清楚设计思想,抽象。一个一个的UI窗口是独立的吗?不是的,...

大佬用 Avalonia 框架开发的 C# 代码 IDE

AvalonStudioAvalonStudio是一个开源的跨平台的开发编辑器(IDE),AvalonStudio的目标是成为一个功能齐全,并且可以让开发者快速使用的IDE,提高开发的生产力。A...

轻量级框架Lagent 仅需20行代码即可构建自己的智能代理

站长之家(ChinaZ.com)8月30日消息:Lagent是一个专注于基于LLM模型的代理开发的轻量级框架。它的设计旨在简化和提高这种模型下代理的开发效率。LLM模型是一种强大的工具,可以...

取消回复欢迎 发表评论: