文章
服务器与存储管理
2011 年 6 月
作者:J. Randriam
本文档介绍如何在 Oracle Real Application Clusters (RAC)/Cluster Ready Services (CRS) 11.1.0.7 和 Sun ZFS Storage 7120 设备上安装和配置 3 节点 Sun Cluster 3.2 01/09、11/09 或 Oracle Solaris Cluster 3.3(或更高版本)。
注意:在本配置中使用了 Sun ZFS Storage 7120,但本文档中的信息应适用于整个 Sun Storage 7000 统一存储产品系列。
本文档包含下列主题:
本文档假设:
在下图中,集群节点为 paborn1、paborn2 和 paborn3,它们运行的都是 Oracle Solaris 10 10/09 操作系统。Sun ZFS Storage 7120 名为 pandroid4,此系统运行的是 2010.Q3.3.1 软件。

在此配置中,Sun ZFS Storage 7120 用于两个目的:
在 Sun ZFS Storage 7120 中,文件系统和 LUN 一般称为共享。这些共享是在一个项目的上下文中创建的。该项目可以包含文件系统和 LUN 的混合体。创建新项目的过程很简单。
要执行以下步骤,请通过 ssh 连接到 Sun Storage 7210,以访问命令行界面 (CLI):
1. 创建一个项目(在本示例中,使用 crs-project):
pandroid4:> shares pandroid4:shares> project crs-project pandroid4:shares crs-project (uncommitted)> commit |
然后可以使用新建的项目创建 Oracle Solaris Cluster 将访问的 NFS 文件系统和 iSCSI LUN。
2. 创建 iSCSI 目标:
注意:在本示例中,目标的 IQN 是由系统自动生成的。
pandroid4:> configuration san targets iscsi pandroid4:configuration san targets iscsi> create pandroid4:configuration san targets iscsi target (uncommitted)> set alias="Tgt4RAC" alias = Tgt4RAC (uncommitted) pandroid4:configuration san targets iscsi target (uncommitted)> set auth=none auth = none (uncommitted) pandroid4:configuration san targets iscsi target (uncommitted)> set interfaces=nge0 interfaces = nge0 (uncommitted) pandroid4:configuration san targets iscsi target (uncommitted)> commit pandroid4:configuration san targets iscsi> list ... TARGET ALIAS target-000 Tgt4RAC | +-> IQN iqn.1986-03.com.sun:02:57a9b940-6df5-c127-8175-fd49d7c9fa37 ... |
稍后从集群节点访问 iSCSI LUN 时将引用所创建的目标(更具体说是目标的 IQN)。
3. 创建一个 iSCSI 目标组(在本示例中为 Grp4RAC),并将先前创建的目标包括在该组中:
pandroid4:configuration san targets iscsi groups> create pandroid4:configuration san targets iscsi group (uncommitted)> set name="Grp4RAC" name = Grp4RAC (uncommitted) pandroid4:configuration san targets iscsi group (uncommitted)> set targets=iqn.1986-03.com.sun:02:57a9b940-6df5-c127-8175-fd49d7c9fa37 targets = iqn.1986-03.com.sun:02:57a9b940-6df5-c127-8175-fd49d7c9fa37 (uncommitted) pandroid4:configuration san targets iscsi group (uncommitted)> commit pandroid4:configuration san targets iscsi groups> list ... group-002 Grp4RAC | +-> TARGETS iqn.1986-03.com.sun:02:57a9b940-6df5-c127-8175-fd49d7c9fa37 ... |
稍后创建 iSCSI LUN 时将引用该目标组(参见下面的第 6 步)。
4. 创建 iSCSI 发起方:
a. 在主机端,确定每个发起方(即每个节点)的 IQN:
root@paborn1 # iscsiadm list initiator-node Initiator node name: iqn.1986-03.com.sun:01:00144f971d46.paborn1 <=== Initiator node alias: - Login Parameters (Default/Configured): Header Digest: NONE/- Data Digest: NONE/- Authentication Type: NONE RADIUS Server: NONE RADIUS access: unknown Tunable Parameters (Default/Configured): Session Login Response Time: 60/- Maximum Connection Retry Time: 180/- Login Retry Time Interval: 60/- Configured Sessions: 1 |
b. (返回 7210)使用步骤 a. 中获得的 IQN 信息创建发起方:
pandroid4:configuration san initiators iscsi> create pandroid4:configuration san initiators iscsi initiator (uncommitted)> set alias="paborn1" alias = paborn1 (uncommitted) pandroid4:configuration san initiators iscsi initiator (uncommitted)> set initiator=iqn.1986-03.com.sun:01:00144f971d46.paborn1 initiator = iqn.1986-03.com.sun:01:00144f971d46.paborn1 (uncommitted) pandroid4:configuration san initiators iscsi initiator (uncommitted)> commit pandroid4:configuration san initiators iscsi> list NAME ALIAS initiator-000 paborn1 | +-> INITIATOR iqn.1986-03.com.sun:01:00144f971d46.paborn1 ... |
对每个节点重复步骤 a 和 b。
5. 创建一个发起方组(在本示例中为 rabornGrp),并将先前创建的发起方包括在该组中(通过其 IQN 进行引用):
pandroid4:configuration san initiators iscsi groups> create pandroid4:configuration san initiators iscsi group (uncommitted)> set name=abornGrp name = abornGrp (uncommitted) pandroid4:configuration san initiators iscsi group (uncommitted)> set initiators=iqn.1986-03.com.sun:01:00144f971d46.paborn1 ,iqn.1986-03.com.sun:01:00144fac24ac.paborn2 ,iqn.1986-03.com.sun:01:00144f97ed34.paborn3 initiators = iqn.1986-03.com.sun:01:00144f971d46.paborn1,iqn.1986-03.com.sun:01:00144fac24ac.paborn2,iqn.1986-03.com.sun:01:00144f97ed34.paborn3 (uncommitted) pandroid4:configuration san initiators iscsi group (uncommitted)> commit pandroid4:configuration san initiators iscsi groups> list GROUP NAME group-001 abornGrp | +-> INITIATORS iqn.1986-03.com.sun:01:00144f971d46.paborn1 iqn.1986-03.com.sun:01:00144fac24ac.paborn2 iqn.1986-03.com.sun:01:00144f97ed34.paborn3 ... |
稍后创建 iSCSI LUN 时将引用该发起方组(参见下面的第 6 步)。对于给定的 LUN,它将定义允许哪些发起方(即节点)访问它。
6. 创建 iSCSI LUN:
a. 选择第 1 步中创建的项目。
pandroid4:shares> select crs-project |
b. 在该项目中创建 LUN(在本示例中为
crslunA),并将其与先前创建的目标组和发起方组相关联:
pandroid4:shares crs-project> lun crslunA
pandroid4:shares crs-project/crslunA (uncommitted)> set volsize=20G
volsize = 20G (uncommitted)
pandroid4:shares crs-project/crslunA (uncommitted)> set targetgroup=Grp4RAC
targetgroup = Grp4RAC (uncommitted)
pandroid4:shares crs-project/crslunA (uncommitted)> set initiatorgroup=abornGrp
initiatorgroup = abornGrp (uncommitted)
pandroid4:shares crs-project/crslunA (uncommitted)> commit
pandroid4:shares crs-project> list
LUNs:
NAME SIZE GUID
crslunA 20G 600144F0FB360BAD00004C73C7E90001
...
|
根据需要对每个 LUN 重复步骤 b。
此时,集群节点(iSCSI 发起方)可以获取您所创建的 iSCSI LUN 作为 iSCSI 目标。
1. 选择将在其中创建文件系统的项目(在本示例中为 crs-project)
pandroid4:shares> select crs-project |
2. 创建一个文件系统(在本示例中为 nfs-for-crs):
pandroid4:shares crs-project> filesystem nfs-for-crs pandroid4:shares crs-project/nfs-for-crs (uncommitted)> set mountpoint=/export/crs mountpoint = /export/crs (uncommitted) pandroid4:shares crs-project/nfs-for-crs (uncommitted)> set root_user=root root_user = root (uncommitted) pandroid4:shares crs-project/nfs-for-crs (uncommitted)> set sharenfs="anon=0" sharenfs = anon=0 (uncommitted) pandroid4:shares crs-project/nfs-for-crs (uncommitted)> set root_permissions=744 root_permissions = 744 (uncommitted) pandroid4:shares crs-project/nfs-for-crs (uncommitted)> commit pandroid4:shares crs-project> list Filesystems: NAME SIZE MOUNTPOINT nfs-for-crs 79.6K /export/crs ... |
根据需要对每个文件系统重复以上步骤。
此时,可以使用刚创建的文件系统,并且可以从任何节点对其进行访问和挂载。
作为快速验证,可以使用 Sun ZFS Storage 7120 的 IP 地址(在本示例中为 10.6.204.78)在一个节点上尝试以下命令:
# cd /net/10.6.204.78/export/crs # mount -v|grep crs 10.6.204.78:/export/crs on /net/10.6.204.78/export/crs type nfs remote/read/write/nosetuid/nodevices/intr/retrans=10/retry=3/xattr/dev=5580006 on Mon Oct 5 18:30:32 2009 |
为了可以从节点看到和使用所创建的 LUN,还需要在每个节点上执行以下步骤:
1. 对 iSCSI 启用静态发现方法:
# iscsiadm modify discovery -s enable # iscsiadm list discovery Discovery: Static: enabled <--- good! Send Targets: disabled iSNS: disabled |
2. 使用在“Sun ZFS Storage 7120 初始准备工作”第 2 步中创建的目标的 IQN:
# iscsiadm add static-config iqn.1986-03.com.sun:02:57a9b940-6df5-c127-8175-fd49d7c9fa37,10.6.204.782 |
3. 要确保 dev 和 devices 树随新添加的 LUN 更新,请执行以下命令:
# devfsadm -i iscsi |
4. 现在 LUN 应可见。可以使用 iscsiadm list target 命令查看新 LUN 及其关联的设备名 (cXtYdN):
# iscsiadm list target -S Target: iqn.1986-03.com.sun:02:57a9b940-6df5-c127-8175-fd49d7c9fa37 Alias: pool-0/local/crs-project/crslunA TPGT: 1 ISID: 4000002a0000 Connections: 1 LUN: 0 Vendor: SUN Product: SOLARIS OS Device Name: /dev/rdsk/c6t600144F04AC9EB700000144FA6E77400d0s24AC9EB700000144FA6E77400d0s2 ... |
5. 如有需要,请使用 format 命令根据需要更改标签和/或分区。
6. 在每个节点上添加完在 Sun ZFS Storage 7120 中创建的所有 iSCSI LUN 之后,请使用新添加的设备更新 Oracle Solaris Cluster DID 命名空间。从一个节点运行以下命令:
# cldevice populate Configuring DID devices did instance 24 created. did subpath paborn1:/dev/rdsk/c6t600144F04AC9EB700000144FA6E77400d0 created for instance 24. Configuring the /dev/global directory (global devices) obtaining access to all attached disks # |
7. 检查所有节点是否都能看到新添加的 LUN:
# cldevice status ... /dev/did/rdsk/d24 paborn1 Ok <-- paborn2 Ok <-- good! paborn3 Ok <-- ... |
注意:先前列出的 Solaris 命令序列并非特定于 Sun ZFS Storage 7120。几乎相同的步骤适用于任何 iSCSI 目标阵列。
在此阶段,在 Sun ZFS Storage 7120 中创建和配置的 LUN 已准备就绪,随时可以使用。可以将其用作集群中配置的任何其他共享存储设备。
您可以挑选其中一个 iSCSI LUN 用作仲裁设备。
例如:
# clquorum add d24
# clquorum show d24
=== Quorum Devices ===
Quorum Device Name: d24
Enabled: yes
Votes: 2
Global Name: /dev/did/rdsk/d24s2
Type: shared_disk
Access Mode: scsi3>
Hosts (enabled): paborn2, paborn3, paborn1
|
1. 编辑每个节点上的 /etc/vfstab 文件。
对于本示例,在 Sun ZFS Storage 7120 中为 Oracle RAC/CRS 创建了两个 NFS 文件系统:/export/oracrs 和 /export/oradb。(有关如何创建 NFS 文件系统的信息,请参阅从 Sun ZFS Storage 7120 GUI 创建 NFS 文件系统)。
a. 添加以下
vfstab条目。记下所有选项,以便在引导时自动挂载 Sun ZFS Storage 7120 中创建的 NFS 文件系统。
# vi /etc/vfstab ... 10.6.204.78:/export/crs - /data/crs nfs 2 yes rw,bg,forcedirectio,wsize=32768,rsize=32768,hard,noac,nointr,proto=tcp,vers=3 10.6.204.78:/export/oradb - /data/db nfs 2 yes rw,bg,forcedirectio,wsize=32768,rsize=32768,hard,noac,nointr,proto=tcp,vers=3 |
b. 现在,手动挂载这些文件系统:
# mount /data/crs # mount /data/db |
2. 将文件系统的所有者更改为 oracle/dba:
# chown oracle:dba /data/crs # chown oracle:dba /data/db |
3. 配置 RAC 框架资源组。
从一个节点运行以下命令:
注意:调整节点列表以与您的配置匹配,同时还要调整 Desired_primaries 和 Maximum_primaries。
# clrg create -S rac-framework-rg # clrs create -t SUNW.rac_framework:4 -g rac-framework-rg rac-framework-rs # clrs create -t SUNW.rac_udlm -g rac-framework-rg -p resource_dependencies=rac-framework-rs rac-udlm-rs # clrg online -emM rac-framework-rg |
4. 安装 Oracle CRS 和 Oracle 二进制文件,然后创建数据库。
注意:本文档不详细介绍如何执行此操作,仅概述为执行此任务所需完成的步骤。
a. 在先前在 Sun ZFS Storage 7120 上创建并在节点上挂载(挂载在
/data/crs上)的 NFS 文件系统上安装 CRS OCR 和 VOTE 设备。
注意:最少需要创建 5 个设备,每个设备 256MB,并且必须将所有者更改为 oracle:dba。
完成此操作的一种办法是使用 mkfile 命令:
# mkfile 256m ocrdev1 # chown oracle:dba ocrdev1 # ls -l ocrdev1 -rw------T 1 oracle dba 268435456 Nov 2 16:56 ocrdev1 |
还可以使用 iSCSI LUN 作为 CRS 配置设备,并且可以使用 format 命令在 iSCSI LUN 上创建分片,与在物理磁盘上所做的一样。有关详细信息,请参阅关于 Oracle RAC 配置的 Oracle Solaris Cluster 发行文档。
b. 在本地磁盘上安装 Oracle CRS 和 rdbms 二进制文件。对于本示例,我们将使用
CRS_HOME=/install/oracle/crs和ORACLE_HOME=/install/oracle/10g。c. 安装完 CRS 二进制文件之后,向
rac-framework-rg添加crs_framework资源。
# clrs create -t SUNW.crs_framework -g rac-framework-rg \ -p resource_dependencies=rac-framework-rs crs-framework-rs \ # clrs enable crs-framework-rs |
d. 创建 Oracle 监听器。
e. 创建 Oracle RAC 数据库。(在本示例中,将其称为
testdb。)
5. 创建并配置一个 scalable_rac_server_proxy 资源组(本示例中为 rac-proxy-rg)。注意:根据您的配置调整变量。
# clrt register SUNW.scalable_rac_server_proxy
# clrg create -S -p rg_affinities=++rac-framework-rg rac-proxy-rg
# clrc create -t SUNW.scalable_rac_server_proxy -g rac-proxy-rg \
-p Resource_dependencies=rac-framework-rs \
-p CRS_HOME=/install/oracle/crs -p DB_NAME=testdb \
-p ORACLE_HOME=/install/oracle/10g \
-p ORACLE_SID{paborn1}=testdb1 \
-p ORACLE_SID{paborn2}=testdb2 \
-p ORACLE_SID{paborn3}=testdb3 \
-p resource_dependencies_offline_restart=crs-framework-rs rac-proxy-rs
|
| 修订版 1,2011 年 6 月 10 日 |