如果虚拟化是免费的,那它肯定没有什么优点 — 对吗?

Oracle SuperCluster 整合案例研究

作者:Thierry Manfé,Orgad Kimchi、Maria Frendberg 和 Mike Gerdts 亦对本文有所贡献

使用 Oracle Solaris 区域通过 P2V 迁移过程将现有物理服务器及其应用程序整合到 Oracle SuperCluster 的最佳实践和上机操作说明,包括如何整合运行 Oracle Database 10g 的 Oracle Solaris 8 服务器的分步示例。


2013 年 9 月发布


想对本文发表评论吗?请将链接发布在 Facebook 的 OTN Garage 页面上。有类似文章要分享?请将其发布在 Facebook 或 Twitter 上,我们来进行讨论。
目录
简介
很好的开场问题
适合 Oracle Solaris 区域的 SuperCluster 域
网络配置
Oracle 许可
P2V 迁移分步说明
性能调优
示例:整合运行 Oracle Database 10g 的 Oracle Solaris 8 服务器
总结
另请参见
关于作者

简介

越来越多的公司考虑通过虚拟化将众多物理服务器整合到一个平台上。作为一个通用的集成系统,Oracle SuperCluster 的以下特性可满足整合需求:

  • 具有强大吞吐能力的可扩展的计算资源,对于并行执行多个虚拟机和应用程序来说至关重要。
  • 完全冗余的计算、存储和网络资源,提供在单一虚拟化平台上运行多个应用程序层所需的可用性。
  • 采用 Oracle VM Server for SPARC 和轻量级 Oracle Solaris 区域的原生虚拟化技术。这两项技术可以相结合,降低虚拟化开销的同时实现最大程度的灵活性。
  • 强大、功能全面的数据库云服务器可支持许多应用程序负载。
  • 简化从物理服务器到虚拟机迁移(P2V 迁移)的工具。可在 Oracle Solaris 区域中捕获和重新部署物理服务器的内容(包括应用程序)。
  • 支持各种 Oracle Solaris 版本,简化了原有服务器的整合。

本文提供使用 Oracle Solaris 区域将现有服务器整合到 SuperCluster 上的指南、最佳实践和上机操作说明。本文重点介绍操作系统和虚拟化层、P2V 迁移过程以及简化此迁移的相关工具。

本文旨在帮助对 SuperCluster 有一定了解、想熟悉 P2V 迁移和评估进行此类迁移可能性的系统管理员、架构师和项目经理。

很好的开场问题

SuperCluster 为虚拟化和整合提供了许多灵活性和多种选择。以下各节讨论的一些问题应可帮助您快速确定在 SuperCluster 上整合物理服务器的最佳选择。

我的服务器符合 P2V 整合条件吗?

Oracle SuperCluster T5-8 以原生方式运行 Oracle Solaris 第 10 版和第 11 版。可以使用原生 Oracle Solaris 区域在 SuperCluster 上整合运行这些版本的基于 SPARC 的服务器。也可以使用 solaris8solaris9 标记区域整合运行 Oracle Solaris 第 8 版和第 9 版的 SPARC 服务器。

:原生区域与托管这些区域的全局区域运行相同的 Oracle Solaris 版本。以下是针对性能的首选配置:原生区域使用最新的 Oracle Solaris 版本,而非原生区域运行的早期 Oracle Solaris 二进制文件可能未利用最新的硬件平台和处理器。原生区域在 Oracle Solaris 10 使用 native 标记,在 Oracle Solaris 11 使用 solaris 标记。

以下是这些 Oracle Solaris 版本所需的更新:

  • Oracle Solaris 11 SRU 5.5 或更高版本。
  • Oracle Solaris 10 update 8 或更高版本;64 位。
  • Oracle Solaris 9:对更新无限制;要求 64 位。有关 solaris9 标记区域的更多详细信息,请参见系统管理指南:Oracle Solaris 9 容器。使用 isainfo -b 检查要整合的服务器地址空间中的位数(32 位或 64 位)。
  • Oracle Solaris 8 2/04 或更高版本;64 位。如果您使用先前的更新,那么使用 libthread 的应用程序可能会遇到一些问题。有关 solaris8 标记区域的更多详细信息,请参见系统管理指南:Oracle Solaris 8 容器 第 8 章。使用 isainfo -b 检查要整合的服务器地址空间中的位数(32 位或 64 位)。

另外请对照 Oracle Solaris 支持生命周期政策(参见此页面),检查您的 Oracle Solaris 版本是否受支持。

非 SPARC 服务器(如 x86 服务器)不能使用 P2V 迁移整合到 SuperCluster 上。但使用 Java、Python 等非原生代码的应用程序可以从非 SPARC 服务器迁移到 SuperCluster。

:要整合使用编译语言(如 C、C++ 或 FORTRAN)开发且运行在非 SPARC 服务器上的应用程序,首先必须在 SPARC 上重新编译该应用程序,这意味着您需要访问源代码。

打算长期迁移还是短期迁移?

您是打算整合一台服务器,未来几年用新版本更新其上运行的业务关键型应用程序,还是舍弃一台老旧服务器,其上原有的应用程序根本不会再更新?

第一种情况 — 长期迁移关键应用程序 — 首选原生 Oracle Solaris 10(即 native 标记)区域和原生 Oracle Solaris 11(即 solaris 标记)区域,因为它们提供原生性能,并通过 Oracle 提供的 SuperCluster 季度完整包下载补丁 (QFSDP) 来维护。

非原生区域 — 如 Oracle Solaris 11 全局区域中运行的 Oracle Solaris 10 区域 — 应仅限于不打算定期更新且性能并不重要的应用程序和操作系统(即使是非原生区域,从过时的硬件迁移到 SuperCluster 也能改善性能)。QFSDP 不适用于非原生区域。修补非原生区域是操作人员的责任。在这些约束中,非原生区域提供了整合运行 Oracle Solaris 第 8 版和第 9 版的旧服务器所需的灵活性。

性能和可管理性的重要性

Oracle SuperCluster T5-8 提供了两个区域存储位置供您选择:

  • Oracle Sun ZFS Storage 7320 设备,已集成到 SuperCluster 中
  • 本地硬盘驱动器 (HDD)

在这两种方案中进行选择时要考虑的两个主要标准是 I/O 性能和可管理性。

I/O 性能

在要整合的源服务器上,首先要检查生成 I/O 负载的数据是否位于根文件系统上。如果不在(SAN 存储上的数据通常就是这种情况),则数据很可能未作为 P2V 迁移的一部分传输到 zonepath,所产生的区域的位置对 I/O 性能没有多大影响。在这种情况下,区域应安装在 Sun ZFS Storage 7320 设备上。如果数据位于根文件系统上,则将传输到 zonepath,区域的位置将影响 I/O 性能。在这种情况下,如果大量区域的 zonepath 位于 Sun ZFS Storage 7320 设备上,用本地 HDD 代替将 I/O 带宽专用于有限数量的区域是一种不错的办法。

可管理性

如果要在 SuperCluster 域之间迁移区域,将区域安装在 Sun ZFS Storage 7320 设备上是最好的选择。从 Sun ZFS Storage 7320 设备导出的 iSCSI LU 为每个区域创建一个专用 ZFS 池 (zpool) 将极大简化迁移过程,因为这样问题会变成使用 zpool exportzpool import 将 zpool 从源域传输到目标域。无需数据迁移或复制。

:SuperCluster 域只是一个 Oracle VM Server for SPARC 虚拟机(即逻辑域)。在 SuperCluster 上,区域托管在域中。

此外,每个区域一个 zpool 也符合 Oracle Enterprise Manager Ops Center 的默认区域供应模式;如果 zpool 位于 Sun ZFS Storage 7320 设备上,则可以使用 Oracle Enterprise Manager Ops Center 执行域之间的迁移。

最后,安装在 Sun ZFS Storage 7320 设备上的区域将立即得益于 SuperCluster 中设计的高可用性:其存储和网络访问完全冗余。

适用于 Oracle Solaris Zones 的 SuperCluster 域

P2V 整合产生的 Oracle Solaris 区域必须托管在应用程序域中。安装区域时应首选 Sun ZFS Storage 7320 设备;但如果您打算在本地 HDD 上安装区域,应用程序域必须有备用 HDD 以便创建区域专用的额外 zpool。对于每台 Oracle SPARC T 系列服务器一个或两个域的 SuperCluster 配置,应用程序域有足够的备用 HDD。如果配置中每台 SPARC T 系列服务器有两个以上的域,则可以使用 /u01 文件系统而不是额外的 zpool。

Oracle SuperCluster T5-8 附带一组逻辑域(Oracle VM Server for SPARC 虚拟机)。这些域是在 SuperCluster 初始配置期间在 SPARC T5-8 服务器上的配置,可以是以下两种不同类型:

  • 专用于 Oracle Database 11g 第 2 版的数据库域
  • 专用于任何软件的应用程序域,包括非 Oracle Database 11g 第 2 版的其他数据库

P2V 整合产生的 Oracle Solaris 区域必须托管在应用程序域中。

:数据库域不支持 P2V 区域,因为这些域中的所有计算资源都专用于 Oracle Database 11g 第 2 版,以提供预期的数据库性能。

如果要整合的服务器运行 Oracle Solaris 第 8 版或第 9 版,则需一个启动 Oracle Solaris 10 的应用程序域。如果运行 Oracle Solaris 11,则需要一个启动 Oracle Solaris 11 的应用程序域。如果运行 Oracle Solaris 10,则首选一个启动 Oracle Solaris 10 的应用程序域;但 Oracle Solaris 11 域仍然是有效选项。

如果打算在 Sun ZFS Storage 7320 设备上安装区域,可以跳过本节其余部分。

如果打算在本地 HDD 上安装区域,则域必须有备用 HDD,以创建区域专用的额外 ZFS 池。此 ZFS 池必须进行镜像以提供冗余。当 SPARC T 系列服务器托管两个以上的域时,其中有些域会没有足够的备用 HDD 来创建这个额外的 ZFS 池。在这种情况下,可以使用域中的 /u01 文件系统安装区域。

网络配置

运行 Oracle Solaris 11 的应用程序域为区域的网络配置提供了最大的灵活性。可以随意创建虚拟网络接口和 InfiniBand (IB) 接口,并将其专用于区域。每个区域可以连接到多个 VLAN,从而实现与数据中心网络基础架构的无缝集成。每个区域还可以连接到多个 IB 分区。在每个区域中,可以在每个 VLAN 和 IB 分区上配置 IP 网络多路径 (IPMP) 来提供网络冗余。

Oracle SuperCluster T5-8 附带三个网络:

  • 10-GbE 客户端访问网络将 SuperCluster 连接到数据中心。要整合的服务器位于此网络上。
  • 管理网络(Oracle SuperCluster T5-8 上的 10 GbE)专用于管理任务。
  • InfiniBand 网络将不同的 SuperCluster 域互联起来。

本节重点讨论如何将区域连接到客户端访问网络。如果需要且使用上述针对客户端访问网络的特性,也可以将区域连接到 InfiniBand 网络。通常,托管使用 Oracle Database 11g 第 2 版实例的应用程序的区域连接到 InfiniBand。

默认情况下,区域连接到管理网络。可以使用 VLAN 标记改进区域之间基于网络的分离。

通过 IP 网络多路径实现网络冗余

每个应用程序域至少都供应了 2 个网络接口,连接到可用于区域的客户端访问网络。

如果需要网络冗余,可以使用 IPMP。使用共享 IP 区域,在域的全局区域中配置 IPMP,不同区域可从中受益。使用专用 IP 区域,在每个区域中配置 IPMP,就像在全局区域中一样(如针对 Oracle Solaris 第 10 版和第 11 版所述)。

:共享 IP 区域共享网络接口和 IP 堆栈。在 IP 堆栈中实现区域间的分离。此类型在区域可用网络接口不足时很有用。使用共享 IP 区域,网络配置在全局区域中实现。专用 IP 区域可通过专用通道访问网络接口和专用 IP 堆栈。当区域之间要求很强的网络分离时,首选此类型。有些应用程序还可能需要使用专用 IP 堆栈。

在运行 Oracle Solaris 10 的应用程序域中托管的专用 IP 区域中配置 IPMP 时,需要全局区域或其他区域中两个未使用的网络接口 (NIC),但每个域的 NIC 数量可以限制为 2 个。在这种情况下,如果必须在一个域中运行多个区域,可以使用 VLAN 标记在全局区域中创建多个 NIC 实例。这些额外的实例可以在专用 IP 区域中使用。有关如何在 Oracle Solaris 10 上将 VLAN 标记与专用 IP 区域结合使用的详细信息,请查看以下博客:Solaris 10 Zones and Networking—Common Considerations

在运行 Oracle Solaris 11 的应用程序域中托管的专用 IP 区域中配置 IPMP 时,对网络接口的约束较少。如果已经使用了 NIC 或者必须共享 NIC,可以创建可供专用 IP 区域使用的 Oracle Solaris 虚拟网络接口 (VNIC)。VNIC 是在应用程序域中基于 NIC 创建的,无需停止应用程序域。无需访问控制域。

可以在运行 Oracle Solaris 10 的应用程序域中使用 dladm show-link 列出 NIC:

# dladm show-link
vnet0           type: non-vlan  mtu: 1500       device: vnet0
ixgbe0          type: non-vlan  mtu: 1500       device: ixgbe0
ixgbe1          type: non-vlan  mtu: 1500       device: ixgbe1
ibd2            type: non-vlan  mtu: 65520      device: ibd2
ibd0            type: non-vlan  mtu: 65520      device: ibd0
ibd1            type: non-vlan  mtu: 65520      device: ibd1

域中有 1 个 vnet (vnet0)、2 个 NIC(ixgbe0ixgbe1)以及 3 个 InfiniBand 接口可用。全局区域不用的 NIC 不出现在 ifconfig -a 输出中,如清单 1 所示:

# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000

ixgbe0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 4
        inet 10.129.184.66 netmask ffffff00 broadcast 10.129.184.255
        ether 0:1b:21:c8:5e:b0
ixgbe1: flags=1000842<BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 7
        inet 0.0.0.0 netmask 0
        ether 0:1b:21:c8:5e:b1
vnet0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 8
        inet 10.129.183.119 netmask ffffff00 broadcast 10.129.183.255
        ether 0:14:4f:f8:4e:3

清单 1

VLAN 配置

对于 Oracle Solaris 第 10 版和第 11 版区域,10-GbE 客户端访问网络上运行 Oracle Solaris 11 的应用程序域中的 VLAN 配置都很简单。使用专用 IP 区域,使用 dladm create-vnic 命令和 -v 选项(设置 vlan-id 属性)基于所需的 10-GbE NIC 在全局区域中创建虚拟网络接口 (VNIC)。之后,所有通过 VNIC 离开区域的数据包都使用 vlan-id 进行标记。而且,只要创建了 VNIC,就会在全局区域中实例化虚拟交换机,这将确保数据包过滤:只有使用 vlan-id 标记的数据包才能通过 VNIC 转发到该区域。虚拟交换机还保证在一个应用程序域中运行但连接到不同 VLAN 的两个区域彼此不能通信。

类似地,对于运行 Oracle Solaris 10 的应用程序域,将在全局区域中创建 VLAN 标记的接口并将其分配给专用 IP 区域。对于 Oracle Solaris 10,可在此博客中找到更多详细信息。

Oracle 许可

Oracle 认可将 Oracle Solaris 区域封装为可获得许可的实体,称为硬分区。这意味着可以封装作为 P2V 迁移过程的一部分创建的区域,从而优化 Oracle 软件许可成本。

要创建符合 Oracle 所设许可要求的区域,首先需要创建一个资源池(包含所需数量的内核)并将区域绑定到此资源池。

首先创建并编辑 licensePool.cmd 文件,如下所示:

create pset license-pset ( uint pset.min = 16; uint pset.max = 16 )
create pool license-pool
associate pool license-pool ( pset license-pset )

第一行定义了一个处理器集,包含 16 个虚拟 CPU。在 Oracle SuperCluster T5-8 上,由于每个内核有 8 个虚拟 CPU,这相当于 2 个内核。因此,考虑许可的实际内核数为 2。值得注意的是,处理器集中的虚拟 CPU 数应始终是 8 的倍数。

编辑完文件之后,创建 license-pool 池:

# pooladm -s
# poolcfg -f licensePool.cmd
# pooladm -c

可以使用 pooladm 检查新资源池配置,如清单 2 所示:

# pooladm
# ...
# pool license-pool
                int     pool.sys_id 2
                boolean pool.active true
                boolean pool.default false
                int     pool.importance 1
                string  pool.comment
                pset    license-pset

        pset license-pset
                int     pset.sys_id 1
                boolean pset.default false
                uint    pset.min 16
                uint    pset.max 16
                string  pset.units population
                uint    pset.load 31
                uint    pset.size 16
                string  pset.comment
...

清单 2

使用 zonecfg 命令修改区域配置,并向该区域添加以下属性:pool=license-pool。该区域现在使用 license-pool 个内核。

最后,重新启动区域。现在可以连接到该区域,并使用 psrinfo 命令检查可见 CPU 的数量。

注意,许多区域可以使用 license-pool 个内核,但不会增加许可成本,许可成本仍然基于 2 个内核。所有与 license-pool 关联的区域共享 2 个内核。

P2V 迁移分步说明

本节介绍使用 P2V 迁移到 SuperCluster 的主要步骤。给出的例子是将 Oracle Solaris 10 服务器整合到运行 Oracle Solaris 10 的应用程序域中的一个 Oracle Solaris 10 区域。

:有关 P2V 迁移的一般信息(非 SuperCluster 环境),可在 Oracle Solaris 管理指南中找到。

在源服务器上执行健全性检查

zonep2vchk 工具帮助在执行 P2V 迁移之前评估源服务器。它很好地综述了进行 P2V 迁移过程之后源服务器和目标区域之间的变更。这对在迁移前识别潜在问题并进行修复很有用。

zonep2vchk 随 Oracle Solaris 11 一起提供,是一个脚本,可以直接复制到 Oracle Solaris 10 系统上执行。

zonep2vchk 不在 Oracle Solaris 第 8 版或第 9 版上运行。

zonep2vchk 首先应带 -T 选项执行,该选项指定将托管区域的域中的 Oracle Solaris 版本(本例中为 Oracle Solaris 10),如清单 3 所示。在该模式下,该工具列出服务器上运行的、区域中不可用的服务,识别现有区域和其他不迁移的 zpool,识别 Oracle Solaris 10 区域中无法共享的任何 NFS 共享文件系统,并执行许多其他检查:

# ./zonep2vchk -T S10

  - Source System: t5240-250-01
      Solaris Version: Oracle Solaris 10 8/11 s10s_u10wos_17b SPARC
      Solaris Kernel:  5.10 Generic_147440-01
      Platform:        sun4v SUNW,T5240

  - Target System:
      Solaris_Version: Solaris 10
      Zone Brand:      native (default)
      IP type:         shared

--Executing basic checks

  - The system is sharing file systems with NFS.  This is not possible in
    the destination zone.  The shares should be evaluated to determine if
    they are necessary.  If so, this system may not be suitable for
    consolidation into a zone, or an alternate approach for supporting the
    shares will need to be used, such as sharing via the global zone or
    another host.  Use "zonep2vchk -P" to get a list of the shared
    filesystems.

  - The following SMF services will not work in a zone:

        svc:/network/iscsi/initiator:default
        svc:/network/nfs/server:default
        svc:/system/iscsitgt:default

  - The following zones will be unusable.  Each zone should be migrated
    separately to the target host using detach and attach.  See zoneadm(1M),
    solaris(5) and solaris10(5):
        Zone                                 State
        s10zone                              running

  - The following SMF services require ip-type "exclusive" to work in
    a zone. If they are needed to support communication after migrating
    to a shared-IP zone, configure them in the destination system's global
    zone instead:

        svc:/network/ipsec/ipsecalgs:default
        svc:/network/ipsec/policy:default
        svc:/network/routing-setup:default

  - The system is configured with the following non-root ZFS pools.
    Pools cannot be configured inside a zone, but a zone can be configured
    to use a pool that was set up in the global zone:

        cpool

  - When migrating to an exclusive-IP zone, the target system must have an
    available physical interface for each of the following source system
    interfaces:

        nxge0

  - When migrating to an exclusive-IP zone, interface name changes may
    impact the following configuration files:

        /etc/hostname.nxge0

  Basic checks compete, 11 issue(s) detected

清单 3

使用 -r 选项执行时,zonep2vchk 执行运行时检查并检测使用区域中不可用权限的程序。在清单 4 所示示例中,运行时检查只执行 5 分钟。服务器托管实际应用程序时,建议延长时间:

# ./zonep2vchk -r 5m -T S10

  - Source System: t5240-250-01
      Solaris Version: Oracle Solaris 10 8/11 s10s_u10wos_17b SPARC
      Solaris Kernel:  5.10 Generic_147440-01
      Platform:        sun4v SUNW,T5240

  - Target System:
      Solaris_Version: Solaris 10
      Zone Brand:      native (default)
      IP type:         shared

--Executing run-time checks for 5m

  - The following programs were found using privileges that cannot be added
    to a zone.  The use of these privileges may be related to the program
    command line options or configuration.

        Program                              Disallowed Privilege

        /usr/lib/fm/fmd/fmd                  sys_config

  Run-time checks complete, 1 issue(s) detected

清单 4

使用 -s 选项执行时,zonep2vchk 对命令行上指定的文件系统或目录执行静态二进制分析。它检测静态链接的二进制文件,因为这些文件不能在区域中执行。在清单 5 所示示例中,检查根目录;但当源服务器托管应用程序时,则应指定应用程序的主目录:

# ./zonep2vchk -s /

  - Source System: t5240-250-01
      Solaris Version: Oracle Solaris 10 8/11 s10s_u10wos_17b SPARC
      Solaris Kernel:  5.10 Generic_147440-01
      Platform:        sun4v SUNW,T5240

  - Target System:
      Solaris_Version: Solaris 10
      Zone Brand:      native (default)
      IP type:         shared

--Executing static binary checks
  Static binary checks compete, 0 issue(s) detected

清单 5

最后,使用 -c 执行时,zonep2vchk 基于源服务器配置生成一个模板文件,在 SuperCluster 上配置区域时可能会用到:

# ./zonep2vchk -c
create -b
set zonepath=/zones/t5240-250-01
add attr
        set name="zonep2vchk-info"
        set type=string
        set value="p2v of host t5240-250-01"
        end
set ip-type=shared
# Uncomment the following to retain original host hostid:
# set hostid=853c66cc
# Max lwps based on max_uproc/v_proc
set max-lwps=40000
add attr
        set name=num-cpus
        set type=string
        set value="original system had 128 cpus"
        end
# Only one of dedicated or capped cpu can be used.
# Uncomment the following to use cpu caps:
# add capped-cpu
#       set ncpus=128.0
#       end
# Uncomment the following to use dedicated cpu:
# add dedicated-cpu
#       set ncpus=128
#       end
# Uncomment the following to use memory caps.
# Values based on physical memory plus swap devices:
# add capped-memory
#       set physical=65312M
#       set swap=69426M
#       end
# Original nxge0 interface configuration:
#    Statically defined 10.140.250.120 (t5240-250-01)
#    Factory assigned MAC address 0:21:28:3c:66:cc
add net
        set address=t5240-250-01
        set physical=change-me
        end
exit

清单 6

创建源系统的 FLAR 映像

此步骤包括将源服务器的数据存储在一个闪存存档 (FLAR) 文件中。使用一条命令即可完成:

# /usr/sbin/flarcreate -S -n s10P2V -L cpio /var/tmp/s10P2V.flar

flarcreate 命令创建一个 s10server.flar 映像文件。-Lcpio 选项强制使用 CPIO 格式进行存档。当源系统有 ZFS 根文件系统时,应使用此格式。-S 选项跳过磁盘空间检查步骤可加快过程,-n 指定 FLAR 映像文件的内部名称。可以使用 -x 选项从 FLAR 映像文件中排除某个文件、目录或 ZFS 池。

flarcreate 在 Oracle Solaris 11 上不可用。使用来自全局区域 rpool 的 ZFS 流,而不是 FLAR 映像文件。更多信息,请访问这里

如果源服务器有多个引导环境 (BE),FLAR 映像文件中仅包括活动环境。对于 Oracle Solaris 10 原生区域,可以列出不同 BE,但只能使用一个:活动区域。对于 Oracle Solaris10 标记区域(运行在 Oracle Solaris 11 全局区域中),与实时升级有关的命令不可用,不能列出不同 BE。在 P2V 迁移之前,应尽可能从源服务器删除 BE。

FLAR 映像文件现已准备好复制到 SuperCluster。

为区域创建 ZFS 池

执行此步骤之前,必须决定是在本地 HDD 上还是 Sun ZFS Storage 7320 设备上安装区域。

本地 HDD 上的 ZFS 池

如果要在本地 HDD 上安装区域,则检查 SuperCluster 配置中是否每台 SPARC T 系列服务器包括两个以上的域。如果有两个以上的域,/u01 文件系统仍可作为在本地 HDD 上安装区域的一个选择。

以下示例基于每台 SPARC T 系列服务器上一个数据库域和一个应用程序域的配置。

首先,使用 format 识别域中的磁盘,如清单 7 所示:

# format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
       0. c1t5000C500429EFABFd0 <SUN600G cyl 64986 alt 2 hd 27 sec 668>  solaris
          /scsi_vhci/disk@g5000c500429efabf
       1. c1t5000C500429F6D87d0 <SUN600G cyl 64986 alt 2 hd 27 sec 668>  solaris
          /scsi_vhci/disk@g5000c500429f6d87
       2. c1t50015179596885CBd0 <ATA-INTELSSDSA2BZ30-0362 cyl 35769 alt 2 hd 128 sec 128>
          solaris  /scsi_vhci/disk@g50015179596885cb
       3. c1t50015179596667E2d0 <ATA-INTEL SSDSA2BZ30-0362-279.46GB>
          /scsi_vhci/disk@g50015179596667e2

清单 7

在该示例中,我们有两个 HDD 和两个 SSD。每个 HDD 分成两片:s0s1s0 分片已被 rpool 使用,这可以通过 zpool status 来查看,如清单 8 所示:

# zpool status BIrpool-1
pool: BIrpool-1
state: ONLINE
scan: resilvered 8.93G in 0h2m with 0 errors on Thu May 17 17:02:12 2012
config:

     NAME                         STATE     READ WRITE CKSUM
     BIrpool-1                    ONLINE       0     0     0
     mirror-0                   ONLINE       0     0     0
     c1t5000C500429F6D87d0s0  ONLINE       0     0     0
     c1t5000C500429EFABFd0s0  ONLINE       0     0     0

清单 8

可以使用两个 s1 分片创建一个专用于该区域的 s10p2vpool 池:

# zpool create s10p2vpool mirror c1t5000C500429F6D87d0s1 c1t5000C500429EFABFd0s1

:如果 SuperCluster 在每个服务器节点上配置了两个以上的域,则 zpool create 命令可以终止并报告因设备忙导致无法打开其中一个分片。该分片可由域虚拟磁盘服务器共享。您可以连接到控制域并在应用程序域上运行 ldm list-domain -l 进行检查。输出的 VDS 部分应显示繁忙的设备。解决方案是使用其他分片创建 ZFS 池。此示例使用 SSD。

Sun ZFS Storage 7320 设备上的 ZFS 池

要在 Sun ZFS Storage 7320 设备上创建池,请执行以下步骤:

  1. 使用 Sun ZFS Storage 7320 设备用户界面,创建一个 iSCSI LUN 并获取关联的目标号。要获取目标,请使用 Configuration->SAN 选项卡并选择 ISCSI Targets
  2. 在托管区域的域中(即在全局区域中)挂载 iSCSI LUN:

    1. 首先添加一个静态 iSCSI 配置:

      # iscsiadm add static-config
        iqn.1986-03.com.sun:02:847ad5ff-eff5-4bd7-8310-999756b3d568,192.168.30.5:3260
      

      其中:

      • iqn.1986-03.com.sun:... 是第 1 步中收集的与 LUN 关联的目标号。
      • 192.168.30.5 是 InfiniBand 网络上 Sun ZFS Storage 7320 设备的 IP 地址。
      • 3260 是标准 iSCSI 端口。
    2. 然后启用静态发现:

      # iscsiadm modify discovery -s enable
      
  3. 此时,LUN 挂载完成。使用 iscsiadm list-target 找到其关联设备名:

    # iscsiadm list target -S iqn.1986-03.com.sun:02:78af61c2-953
    Target: iqn.1986-03.com.sun:02:847ad5ff-eff5-4bd7-8310-999756b3d568
            Alias: -
            TPGT: 1
            ISID: 4000002a0000
            Connections: 1
            LUN: 0
                 Vendor:  SUN     
                 Product: COMSTAR         
                 OS Device Name: /dev/rdsk/c0t600144F000212834B1BE50A60A010001d0s2
    
  4. 使用设备名创建 ZFS 池:

    # zpool create s10p2vpool c0t600144F000212834B1BE50A60A010001d0
    

创建和启动区域

创建池之后,在其上为 zonepath 创建 ZFS 文件系统。实际安装区域之前,启用 ZFS 压缩。为获得最佳性能,还可以考虑调整 ZFS recordsize(参见“性能调优”一节):

# zfs create s10p2vpool/s10P2V
# zfs set compression=on s10p2vpool/s10P2V
# chmod 700 /s10p2vpool/s10P2V/

使用 zonecfg 和用 zonep2vchk -c 创建的配置文件配置区域。在配置文件中,zonepath 设置为 /s10p2vpool/s10P2Vip-type 设置为 exclusive,net physical 设置为 ixgbe1

# zonecfg -z s10P2V -f s10P2V.cfg

配置区域时,使用 zoneadm 命令和 FLAR 映像文件安装它。如果要使用与源服务器相同的操作系统配置(包括相同 IP 地址),则使用 -p 选项。注意这可能导致地址冲突:启动区域之前,应关闭源服务器或修改其 IP 地址。如果要使用不同配置,则使用 -u 选项,会在安装时取消对区域的配置:

# zoneadm -z s10P2V install -a /s10P2V.flar -u
cannot create ZFS dataset nfspool/s10P2V: dataset already exists
      Log File: /var/tmp/s10P2V.install_log.AzaGfB
    Installing: This may take several minutes...
Postprocessing: This may take a while...
   Postprocess: Updating the zone software to match the global zone...
   Postprocess: Zone software update complete
   Postprocess: Updating the image to run within a zone

        Result: Installation completed successfully.
      Log File: /nfspool/s10P2V/root/var/log/s10P2V.install13814.log

此时,区域已准备好启动,但其 Oracle Solaris 实例未配置。如果区域已按上述方式启动,则使用 zlogin -C 连接到其控制台,以便通过交互方式提供配置参数。您还可以将 sysidcfg 文件复制到 zonepath 来避免交互配置:

# cp sysidcfg /nfspool/s10P2V/root/etc/sysidcfg
# zoneadm -z s10P2V boot

然后可以连接到区域:

# zlogin s10P2V

性能调优

本节重点讨论如何对 P2V 迁移产生的区域进行 I/O 性能调优。从 CPU 和网络角度来看,区域的行为类似于任何其他 Oracle Solaris 映像,因此无需执行区域特定的调优。不过,在 I/O 方面,因为区域位于文件系统上,文件系统调优会改进性能。

在 P2V 迁移到 SuperCluster 的情况下,对于 zonepath,最重要的 I/O 性能参数是 ZFS recordsizecompression;如果区域位于 Sun ZFS Storage 7320 设备上,则是 NFS rsizewsize

如果源服务器托管的数据库或应用程序执行固定大小的文件访问,则应调优 ZFS recordsize 与此大小匹配。例如,如果托管记录大小为 4k 的数据库,则将 ZFS recordsize 设置为 4k。

无论 zonepath 位于本地 HDD 上还是 Sun ZFS Storage 7320 设备上,ZFS 压缩均可提高同步 I/O 操作的性能。当 zonepath 位于 Sun ZFS Storage 7320 设备上时,ZFS 压缩还可提高异步 I/O 操作的性能。对于这些类型的负载,建议将 zonepath 的 compression 设置为 on。对于 zonepath 在本地 HDD 上的异步 I/O 操作,这项改进的重要性没那么大。

示例:整合运行 Oracle Database 10g 的 Oracle Solaris 8 服务器

本节介绍从运行 Oracle Database 10.2.0.5 的 Oracle Solaris 8 服务器到运行 Oracle Solaris 10 的应用程序域中托管的 Oracle Solaris 8 区域的 P2V 迁移。数据库数据位于通过光纤通道连接的附加存储上,其上创建了 Oracle 自动存储管理文件系统。

在源系统上,在创建 FLAR 映像文件之前,以 oracle 用户身份停止数据库监听器和 Oracle 自动存储管理实例,如清单 9 所示:

$ sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.5.0 - Production on Sun Aug 26 13:19:48 2012
Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shutdown immediate

$ export ORACLE_SID=+ASM
$ sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.5.0 - Production on Sun Aug 26 13:21:38 2012
Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shutdown
ASM diskgroups dismounted
ASM instance shutdown

$ lsnrctl stop

LSNRCTL for Solaris: Version 10.2.0.5.0 - Production on 26-AUG-2012 13:23:49
Copyright (c) 1991, 2010, Oracle.  All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
The command completed successfully

清单 9

停止数据库和 Oracle 自动存储管理之后,以 root 身份创建 FLAR 映像文件并将其复制到应用程序域。在以下示例中,-S 指定跳过磁盘空间检查,并且不将存档大小写入存档,从而显著缩短了存档创建时间。-n 选项指定映像名称,-L 指定存档格式。

# flarcreate -S -n s8-system -L cpio /var/tmp/s8-system.flar

此时,移动 SAN 存储并将其连接到 SPARC T 系列服务器。然后,在控制域中使 LUN (/dev/dsk/c5t40d0s6) 在应用程序域 s10u10-EIS2-1 中可用:

# ldm add-vdsdev /dev/dsk/c5t40d0s6 oradata@primary-vds0
# ldm add-vdisk oradata oradata@primary-vds0 s10u10-EIS2-1

:LUN 通常在不同服务器上显示为不同的名称。

在应用程序域中,LUN 现在可见:

# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
       ...
       1. c0d2 <SUN-DiskSlice-408GB cyl 52483 alt 2 hd 64 sec 255>
          /virtual-devices@100/channel-devices@200/disk@2

现在可以创建区域。

:创建区域之前,检查域中是否已安装 Oracle Solaris Legacy Containers 软件。

使用 zonecfg 配置 solaris8 标记区域 (s8-10gr2)。清单 10 显示配置完成后 zonecfg -z s8-10gr2 info 的输出:

zonename: s8-10gr2
zonepath: /cpool/s8-10gr2
brand: solaris8
autoboot: true
bootargs:
pool:
limitpriv: default,proc_priocntl,proc_lock_memory
scheduling-class: FSS
ip-type: exclusive
hostid:
net:
        address not specified
        physical: ixgbe1
        defrouter not specified
device
        match: /dev/rdsk/c0d2s0
attr:
        name: machine
        type: string
        value: sun4u

清单 10

仍然是在应用程序域中,使用 zoneadm 安装并启动区域。使用 -p 时,将保留 Oracle Solaris 8 映像的配置,-a 指定存档位置:

# zoneadm -z s8-10gr2 install -p -a /var/temp/s8-system.flar
...
# zoneadm -z s8-10gr2 boot

区域已启动,现在可以使用 zlogin s8-10gr2 连接它。以 root 身份更改原始设备的所有权,并以 oracle 身份启动 Oracle 自动存储管理和数据库,如清单 11 所示:

# chown oracle:dba /dev/rdsk/c0d2s0
# su - oracle
$ lsnrctl start
...

$ export ORACLE_SID=+ASM
$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.5.0 - Production on Sun Aug 26 14:36:44 2012
Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
Connected to an idle instance.

SQL> startup
ASM instance started

Total System Global Area  130023424 bytes
Fixed Size                  2050360 bytes
Variable Size             102807240 bytes
ASM Cache                  25165824 bytes
ASM diskgroups mounted
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

$ export ORACLE_SID=ORA10
$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.5.0 - Production on Sun Aug 26 14:37:13 2012
Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
Connected to an idle instance.

SQL> startup
ORACLE instance started.
Total System Global Area 1610612736 bytes
Fixed Size                  2052448 bytes
Variable Size             385879712 bytes
Database Buffers         1207959552 bytes
Redo Buffers               14721024 bytes
Database mounted.
Database opened.

清单 11

总结

Oracle Solaris 区域受到 Oracle SuperCluster T5-8 的全面支持并与之完全集成。此外,Oracle Solaris 附带的 P2V 迁移工具大大简化了 Oracle SuperCluster T5-8 上物理服务器到虚拟机的整合。

作为一个集成系统,SuperCluster 在配置方面提供了许多灵活性:Oracle Solaris 区域是进行 P2V 迁移的完美场所。它们提供强大的分离(包括网络分离),可用于优化平台的许可成本。同时,使用 Oracle Solaris 区域可最大限度降低虚拟化开销。

通过 SuperCluster 季度完整包下载补丁修补和更新原生 Oracle Solaris 区域。

Oracle Sun ZFS Storage 7320 设备包括在 SuperCluster 中,为 Oracle Solaris 区域提供大量冗余存储。一旦安装在此共享存储上,即可在 SuperCluster 的不同域和计算节点之间快速迁移区域。Oracle Solaris 区域可以连接 10-GbE 客户端访问网络并可连接 InfiniBand I/O 光纤。通过 IP 网络多路径提供网络冗余,并提供 VLAN 在现有数据中心网络中实现无缝集成。

Oracle SuperCluster T5-8 高度可扩展的计算资源确保可在此平台上运行多个 Oracle Solaris 区域,同时强大的数据库可以承受多个应用程序并发运行的负载。

所有这些集成特性使得 Oracle SuperCluster T5-8 成为服务器整合的首选平台。

另请参见

关于作者

Thierry Manfé 已在 Oracle 和 Sun Microsystems 工作超过 15 年。他目前的职位是 Oracle SuperCluster 工程组首席工程师。

修订版 1.0,2013 年 9 月 11 日

关注我们:
博客 | Facebook | Twitter | YouTube