文章
服务器与存储管理
作者:Thierry Manfé,Orgad Kimchi、Maria Frendberg 和 Mike Gerdts 亦对本文有所贡献
2013 年 9 月发布
|
越来越多的公司考虑通过虚拟化将众多物理服务器整合到一个平台上。作为一个通用的集成系统,Oracle SuperCluster 的以下特性可满足整合需求:
本文提供使用 Oracle Solaris 区域将现有服务器整合到 SuperCluster 上的指南、最佳实践和上机操作说明。本文重点介绍操作系统和虚拟化层、P2V 迁移过程以及简化此迁移的相关工具。
本文旨在帮助对 SuperCluster 有一定了解、想熟悉 P2V 迁移和评估进行此类迁移可能性的系统管理员、架构师和项目经理。
SuperCluster 为虚拟化和整合提供了许多灵活性和多种选择。以下各节讨论的一些问题应可帮助您快速确定在 SuperCluster 上整合物理服务器的最佳选择。
Oracle SuperCluster T5-8 以原生方式运行 Oracle Solaris 第 10 版和第 11 版。可以使用原生 Oracle Solaris 区域在 SuperCluster 上整合运行这些版本的基于 SPARC 的服务器。也可以使用 solaris8 和 solaris9 标记区域整合运行 Oracle Solaris 第 8 版和第 9 版的 SPARC 服务器。
注:原生区域与托管这些区域的全局区域运行相同的 Oracle Solaris 版本。以下是针对性能的首选配置:原生区域使用最新的 Oracle Solaris 版本,而非原生区域运行的早期 Oracle Solaris 二进制文件可能未利用最新的硬件平台和处理器。原生区域在 Oracle Solaris 10 使用 native 标记,在 Oracle Solaris 11 使用 solaris 标记。
以下是这些 Oracle Solaris 版本所需的更新:
solaris9 标记区域的更多详细信息,请参见系统管理指南:Oracle Solaris 9 容器。使用 isainfo -b 检查要整合的服务器地址空间中的位数(32 位或 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 提供了两个区域存储位置供您选择:
在这两种方案中进行选择时要考虑的两个主要标准是 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 export 和 zpool 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 中设计的高可用性:其存储和网络访问完全冗余。
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 服务器上的配置,可以是以下两种不同类型:
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 附带三个网络:
本节重点讨论如何将区域连接到客户端访问网络。如果需要且使用上述针对客户端访问网络的特性,也可以将区域连接到 InfiniBand 网络。通常,托管使用 Oracle Database 11g 第 2 版实例的应用程序的区域连接到 InfiniBand。
默认情况下,区域连接到管理网络。可以使用 VLAN 标记改进区域之间基于网络的分离。
每个应用程序域至少都供应了 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(ixgbe0 和 ixgbe1)以及 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
对于 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 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 迁移到 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) 文件中。使用一条命令即可完成:
# /usr/sbin/flarcreate -S -n s10P2V -L cpio /var/tmp/s10P2V.flar
flarcreate 命令创建一个 s10server.flar 映像文件。-L 和 cpio 选项强制使用 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。
执行此步骤之前,必须决定是在本地 HDD 上还是 Sun ZFS Storage 7320 设备上安装区域。
如果要在本地 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 分成两片:s0 和 s1。s0 分片已被 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 设备上创建池,请执行以下步骤:
# 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 端口。# iscsiadm modify discovery -s enable
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
# 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/s10P2V,ip-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 recordsize 和 compression;如果区域位于 Sun ZFS Storage 7320 设备上,则是 NFS rsize 和 wsize。
如果源服务器托管的数据库或应用程序执行固定大小的文件访问,则应调优 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 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 日 |