如何使用 Oracle VM Server for SPARC 2.1 将正在运行的 Oracle 数据库迁移到另一个系统(续)

返回本文的第 1 页。

实时迁移过程

源计算机上的 Logical Domains Manager 接受迁移域的请求,与目标计算机上运行的 Logical Domains Manager 建立安全的网络连接。建立此连接之后,执行迁移。迁移本身可以分为五个不同的阶段:

如果想要下载软件、加入论坛、阅读类似本文的内容之外的其他技术方法精品文章,请成为 OTN 成员。无垃圾邮件!
  • 第 1 阶段:与目标计算机上运行的逻辑域管理器连接之后,将有关源计算机和待迁移域的信息传输到目标计算机。这些信息用于执行一系列检查以确定迁移是否可行。

    图 3

    图 3. 实时迁移第 1 阶段

  • 第 2 阶段:当第 1 阶段的所有检查都通过后,准备源计算机和目标计算机以便进行迁移。在目标计算机上创建一个非活动域以接收源域。

    源计算机开始跟踪活动来宾域的哪些内存块在迁移操作过程中有所变化。如果待迁移域为非活动或绑定的域,则迁移操作转到第 5 阶段

  • 第 3 阶段:将待迁移域的所有运行时状态信息传输到目标计算机。这些信息包括 CPU 状态和域内存。源计算机将所有内存块发送到目标计算机。将来宾域内存传输到目标计算机时,源计算机开始发送标记为更改的块。当来宾域继续运行时,这种传输操作重复执行多次。
  • 第 4 阶段:暂停待迁移域。此时,将其余的已修改源域内存块和状态信息传输到目标计算机。
  • 第 5 阶段:传输所有状态信息之后,当目标域继续执行并且源域销毁时发生移交。从此时起,目标域是唯一版本的运行域。

    图 4

    图 4. 实时迁移第 5 阶段

实时迁移示例

以下示例使用 ldm migrate-domain 命令将来宾域从一个系统迁移到另一个系统。

您还可以指定在目标计算机上进行身份验证的备用用户。请参见文档Oracle VM Server for SPARC 2.1 管理指南 中的“为用户分配授权”。

您可以使用 ldm migrate-domain -n 命令执行空运行迁移,此操作执行迁移检查但不迁移指定的域。将任何未满足的要求均报告为错误,这样您可以在尝试实际迁移之前纠正所有配置错误。

以下示例显示了执行域迁移的各种方法:

  • 执行 ldg1 域向名为 t4-1 的目标计算机的空运行迁移。

    # ldm migrate-domain -n ldg1 t4-1
    Target Password: password
    
  • 执行 ldg1 域向名为 t4-1 的目标计算机的迁移。

    # ldm migrate-domain ldg1 t4-1
    Target Password: password
    
  • ldg1 来宾域以非交互方式迁移到名为 t4-1 的目标计算机。-p 选项指定文件名称 pfile,此文件包含目标计算机的纯文本超级用户口令,您可以使用此口令访问 t4-1 目标计算机。

    # ldm migrate-domain -p pfile ldg1 t4-1
    

    :确保您对包含超级用户口令的文件实施了保护,以便只有根所有者或特权用户用户可以读取它。

    # chmod 400 pfile 
    
  • ldg1 域迁移到名为 t4-1 的目标计算机,并指定使用另一个用户 tracyt4-1 计算机上进行身份验证。

    # ldm migrate-domain ldg1 tracy@t4-1
    

    有关为用户分配授权的信息,请参见 Oracle VM Server for SPARC 2.1 管理指南 中的“管理用户配置文件”。

  • 监视迁移操作的进度:

    # ldm list -o status ldg1
    

    :迁移时间可能有所不同,具体取决于分配的内存量和网络利用率。

负载描述和执行结果

SwingBench 工具包包含负载生成器和基准测试,旨在对 Oracle 数据库进行压力测试。SwingBench 附带的代码包括 OrderEntry、SalesHistory、CallingCircle 和 StressTest 基准测试。

对于本文,使用 SwingBench OrderEntry 负载在迁移的来宾域上生成负载。OrderEntry 基于 Oracle Database 11g 自带的 oe 模式。此负载会对少量表产生严重争用,旨在对系统互连和内存施加压力。

下面介绍在来宾域上生成的负载:

  • 磁盘上的数据库大小:30 GB
  • 系统全局区 (sga_target):18 GB

系统全局区 (SGA) 是一组共享内存结构,其中包含一个 Oracle 数据库实例的数据和控制信息。

  • 分配给来宾域的 CPU 数:24 个 CPU
  • 分配给来宾域的内存量:24 GB
  • 负载的负载用户数 (users):50 位用户
  • 思考时间(用户采取操作间隔的时间):100 毫秒 (msec)
  • 负载的持续时间:30 分钟

表 1 显示了在两个台 SPARC T4-1 服务器之间运行的实时迁移操作的结果。

表 1. SPARC T4-1 服务器实时迁移结果
控制域上的 CPU 数整体迁移时间暂停时间来宾域 CPU 使用率
8 个 CPU8 分 12 秒26 秒70.00%
16 个 CPU4 分 2 秒13 秒80.00%
24 个 CPU2 分 3 秒7 秒85.00%

开始域迁移之前

下面介绍将域从一台计算机迁移到另一台计算机时常见的实时迁移操作行为。注意,您观察到结果可能稍有不同,因为迁移时间取决于为控制域分配的 CPU 数和内存量以及负载类型。

  • Oracle VM Server for SPARC 实时迁移旨在通过任何类型的网络(包括共享网络和不安全网络)执行迁移。与在专用 NIC 上运行的那些迁移相比,在本文的主 NIC 上运行的迁移不会显示出任何性能下降。为了获得最佳性能,最好使用不饱和的高速网络接口,如 10 GbE。
  • 使用 mpstat 命令观察对来宾域的 CPU 进行系统内存跟踪的结果。参见 USR 列以查看每个 CPU 的使用情况。
  • 在实时迁移过程中,来宾域 CPU 负载增加,因为来宾域 CPU 线程在虚拟机管理程序中执行内存更改跟踪。将这种跟踪报告为针对应用程序进程所用的 CPU 时间。
  • 最好为运行数据库的来宾域和编排实时迁移的控制域配置足够的 CPU 资源。对于类似于在本白皮书中所用负载的数据库负载,将 SPARC T4 代系统中的 24 个 CPU(3 个内核)分配给来宾域(数据库),8 个 CPU(1 个内核)分配给控制域。此外,最好使用您独有的负载执行自己的基准测试,以确定相应的 CPU 资源分配。参见表 1。有关如何向控制域中添加更多 CPU 的信息,请参见使用 CPU 动态重新配置一节。
  • 迁移时间还取决于以下因素:分配给来宾域的内存量、数据库 SGA 的大小、数据库块更改次数以及到磁盘的读写 I/O 量。
  • 您可以使用自动负载信息库 (AWR) 工具监视数据库块更改次数。在生成的 AWR 报告的 Instance Activity Stats 部分查找 db_block_changes 信息。有关 AWR 和 AWR 报告的更多信息,请参见 Oracle Database 性能调优指南中的 5.2 节(“自动负载信息库概述”)。
  • 最好使用网络时间同步协议 (NTP) 时间同步服务配置来宾域,以便在迁移操作完成之后正确地重设来宾域上的时间。要获得 Oracle Solaris 系统上的 NTP 配置示例,请参见配置 NTP 一节。
  • 不要 使用实时迁移作为应急工具。但如果您必须这样做,应确保事先设置存储路径以使环境就绪。还要确保在尽可能靠近生产环境的环境中执行实时迁移操作。确保事先准备好之后,您便会知道完成迁移所需的时间。

相关信息

本节包含与 Oracle VM for SPARC 实时迁移特性相关的信息,包括如何配置 NTP 和使用 CPU 动态重新配置。

配置 NTP

确保使用 NTP 同步待迁移域上的系统时钟。

在此示例中,源计算机上的控制域用作时间源,并将它配置为 NTP 服务器。注意,最好选择可以作为专用时间同步源的 NTP 服务器,以便在关闭计算机进行计划维护时不会对其他服务产生负面影响。

清单 4 的示例显示了如何配置 NTP 服务器。

清单 4. 配置 NTP 服务器
# grep -v ^# /etc/inet/ntp.conf
server 127.127.1.0 prefer
broadcast 224.0.1.1 ttl 4
enable auth monitor
driftfile /var/ntp/ntp.drift
statsdir /var/ntp/ntpstats/
filegen peerstats file peerstats type day enable
filegen loopstats file loopstats type day enable
filegen clockstats file clockstats type day enable
keys /etc/inet/ntp.keys
trustedkey 0
requestkey 0
controlkey 0
# touch /var/ntp/ntp.drift
# svcadm enable ntp

以下示例显示了如何配置 NTP 客户端。

# grep -v ^# /etc/inet/ntp.conf
server source prefer
slewalways yes
disable pll
# svcadm enable ntp

使用 CPU 动态重新配置

Oracle VM Server for SPARC 支持动态重新配置 CPU。可以使用 ldm add-vcpuldm rm-vcpu 命令在任何活动域(包括控制域)中动态添加或删除 CPU。

可以从控制域发出这些命令来增加或减少分配的 CPU 数。通过增加控制域中的 CPU 数,可以减少迁移时间。对于具有独立加密单元的系统,如 UltraSPARC T2、UltraSPARC T2 Plus 和 SPARC T3 平台,您在动态添加 CPU 资源时应该向控制域中添加加密单元。

以下示例显示了如何向控制域中添加 8 个 CPU:

primary# ldm add-vcpu 8 primary

完成迁移操作之后,您可以从控制域中删除虚拟 CPU 并将它们分配给其他域。以下示例从控制域删除 8 个 CPU 并将它们分配给 ldg1 来宾域:

primary# ldm rm-vcpu 8 primary
primary# ldm add-vcpu 8 ldg1

:减少 CPU 个数时,应确保仍有足够数量的 CPU 可用,以便高效地处理域的负载。例如,Oracle 数据库单实例来宾域应始终至少具有 8 个 CPU。

总结

IT 组织可以通过选择正确的硬件和软件来实现战术和战略目标,以便最好地管理应用程序可用性和优化数据中心资源。

本文展示了使用 Oracle VM Server for SPARC 2.1 实时迁移特性管理 Oracle Database 11g 第 2 版单实例数据库的生产生命周期的好处。本文介绍了完整的配置过程,包括域的创建和配置、存储配置以及用于演示这些好处的软件。除了展示实时迁移特性的好处之外,本文还介绍了如何在计划停机过程中获得更好的应用程序可用性,以及如何通过在生产环境中进行动态硬件资源管理来降低硬件和软件成本。

有关 Oracle 虚拟化解决方案的更多信息,请访问 Oracle 的虚拟化网站

关于作者

Orgad Kimchi 于 2007 年 9 月加入 Sun/Oracle。他目前就职于独立软件供应商 (ISV) 工程部,协助软件供应商采用可提高 Oracle 硬件和软件性能的 Oracle 技术。参见 Orgad 的博客

Roman Ivanov 于 2006 年 1 月加入 Sun/Oracle。他目前就职于 ISV 工程部,协助软件供应商采用可提高 Oracle 硬件性能的 Oracle 技术。参见 Roman 的博客

资源

以下是本文前面所引用的资源的 URL:

返回本文的第 1 页。

修订版 1.0,2012 年 2 月 23 日

通过 FacebookTwitterOracle 博客关注我们。