Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92243217
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-14 16:45:24


作者:Jeffrey Hunter
    来自:

了解如何在 Oracle Enterprise Linux 上安装和配置一个成本低于 2,600 美元的 Oracle RAC 10g 第 2 版开发集群。

仅用于开发和测试;不支持生产部署!

2007 年 7 月更新

 


1. 简介

熟悉 Oracle 真正应用集群 (RAC) 10g 技术的最有效方法之一是访问一个实际的 Oracle RAC 10g 集群。没有什么方法比直接体验它们能够更好地理解其优势了,包括容错、安全性、负载均衡和可伸缩性。

遗憾的是,对于很多商家而言,典型的生产级 RAC 配置所需的硬件投入使它们无法实现这一目标。一个小型的两节点集群可能需要 10,000 美元到 20,000 美元以上。该价格还不包括生产级 RAC 环境的核心(通常是一个存储区域网),其起价为 10,000 美元。

对于那些没有大笔现金但希望熟悉 Oracle RAC 10g 的人而言,本指南提供了一种配置 Oracle RAC 10g 第 2 版系统的低成本替代方法,它使用现成的商用组件和可下载的软件,估计成本在 2,200 美元到 2,600 美元之间。该系统包括一个双节点集群(每个节点配置一个处理器),这两个节点均运行 Oracle Enterprise Linux(Release 4 Update 5)、Oracle10g 第 2 版、OCFS2 和 ASMLib 2.0。Oracle RAC 的所有共享磁盘存储将基于使用网络存储服务器(即 Openfiler 2.2 版)的 。

本文应与 Red Hat Enterprise Linux 一同使用。 如果 Red Hat Enterprise Linux 不稳定,Oracle 的 Enterprise Linux (免费提供)可以实现这一目标,它包括 OCFS2 和 ASMLib 软件包(不包括 ASMLib 用户空间库,它需要单独下载)。

由 驱动的 是一个基于浏览器的免费网络存储管理实用程序,在单一框架中提供基于文件的网络连接存储 (NAS) 和基于块的存储区域网 (SAN)。Openfiler 支持 CIFS、NFS、HTTP/DAV 和 FTP,但是,我们仅使用它的 iSCSI 功能为 Oracle10g RAC 需要的共享存储组件实现低成本的 SAN。我们通过它的 USB 2.0 接口将一个 500GB 的外置硬盘驱动器连接到网络存储服务器(在本文中,有时称为 Openfiler 服务器)。Openfiler 服务器将配置为使用该磁盘进行基于 iSCSI 的存储,并且将在 Oracle10g RAC 配置中用于存储 Oracle 集群件所需的共享文件以及所有 Oracle ASM 卷。

注意:本文仅供教学使用,因此设置很简单,仅用于演示想法和概念。例如,仅在一个物理磁盘上设置了磁盘镜像,而实际上,至少应该在两个物理驱动器上设置磁盘镜像。

这不是构建低成本 Oracle RAC 10g 系统的唯一方法。我曾使用过其他基于 SCIS 部署共享存储部件的解决方案。在某些情况下,SCSI 的成本会高于本文所描述的实现的成本,低成本 SCSI 配置将包括:

  • SCSI 控制器:两个 SCSI 控制器,单价从 20 美元 (Adaptec AHA-2940UW) 到 220 美元 (Adaptec 39320A-R)
  • 内含 SCSI:70 美元 - (包含 1 个 Bay 3.5英寸 U320 SCSI 驱动器盒)
  • SCSI 硬盘驱动器:140 美元 - (36GB 15K 68p U320 SCSI 硬盘驱动器)
  • SCSI 电缆:两根 SCSI 电缆,每根 20 美元(3英尺外置 HD68 到 HD68 U320 线缆)

注意,某些主板可能已包含内置的 SCSI 控制器。

以前的 Oracle9i 和 Oracle 10g 第 1 版指南使用原始分区在共享的存储设备上存储文件,但此处我们将利用 Oracle 集群文件系统第 2 版 (OCFS2) 和 Oracle 自动存储管理 (ASM) 特性。两个 Oracle RAC 节点配置如下:

Oracle 数据库文件
RAC 节点名 实例名 数据库名 $ORACLE_BASE 用于存储 DB 文件的文件系统/卷管理器
linux1 orcl1 orcl /u01/app/oracle ASM
linux2 orcl2 orcl /u01/app/oracle ASM
Oracle 集群件共享文件
文件类型 文件名 iSCSI 卷名 挂载点 文件系统
Oracle Cluster Registry /u02/oradata/orcl/OCRFile crs /u02/oradata/orcl OCFS2
CRS 表决磁盘 /u02/oradata/orcl/CSSFile crs /u02/oradata/orcl OCFS2

注意,在 Oracle 数据库 10g 第 2 版 (10.2) 中,集群就绪服务(即 CRS)现在称作 Oracle 集群件。

自 Oracle 数据库 10g 第 2 版 (10.2) 开始,Oracle 集群件应安装在不针对版本的 Oracle 集群件主目录中。这是对最佳灵活体系结构 (OFA) 规则所作的更改。不要将 Oracle 集群件安装到针对版本的 Oracle 主目录挂载点(如 /u01/app/oracle/product/10.2.0/...),因为 Oracle 集群件的后续版本将覆盖同一路径中的 Oracle 集群件安装程序。此外,如果 Oracle 集群件 10g 第 2 版 (10.2) 检测到现有的 Oracle 集群就绪服务安装,它将覆盖同一路径中的现有安装。

Oracle 集群件软件将安装到构成该 RAC 集群的两个节点的 /u01/app/oracle/product/crs 目录中。但是,集群件软件要求与集群中的两个节点共享它的两个文件:即“Oracle 集群注册表 (OCR)”文件和“表决磁盘”(Voting Disk) 文件。这两个文件将安装到使用 Oracle 集群文件系统第 2 版 (OCFS2) 的共享存储设备中。用户可以(但 Oracle 不建议)使用裸设备存储这些文件,但不能使用 ASM 存储这两个集群件文件。

Oracle 10g 第 2 版数据库软件将安装到构成该 RAC 集群的两个节点的单独 Oracle 主目录中,该目录名为 /u01/app/oracle/product/10.2.0/db_1。所有 Oracle 物理数据库文件(数据、联机重做日志、控制文件、归档重做日志)将安装到由自动存储管理 (ASM) 管理的共享卷上。(用户可以将 Oracle 数据库文件轻松地存储到 OCFS2。而使用 ASM 使本文可以更有趣!)

注意:本文仅作为绝对不可替代的文档。此处唯一的例外是供应商硬件的选择(即:计算机、网络设备和外置硬盘驱动器)。确保您从供应商处购买的硬件在 Red Hat Linux 4 上受支持。

如果您要寻找一个使用 FireWire 的带 RHEL 4 的 Oracle RAC 10g 第 2 版示例,请。

如果您要寻找一个带 RHEL 3 上的 Oracle RAC 10g 第 1 版示例,请。

要获得以前发布的本指南的 Oracle9i RAC 版本,。

 


2. Oracle RAC 10g 概述

随 Oracle9i 一同推出的 Oracle RAC 是 Oracle 并行服务器 (OPS) 的后续版本。RAC 允许多个实例同时访问同一数据库(存储)。通过允许系统进行扩展,RAC 提供容错、负载均衡和性能优势。同时,由于所有节点都访问同一数据库,因此一个实例出现故障不会导致无法访问数据库。

Oracle10g RAC 的核心是共享磁盘子系统。集群中的所有节点必须能够访问集群中所有节点的所有数据、重做日志文件、控制文件和参数文件。为了使所有节点都能够访问数据库,数据磁盘必须全局可用。每个节点都拥有自己的重做日志文件和 UNDO 表空间,而其他节点必须能够访问这些文件(和共享的控制文件),以便在系统故障时恢复该节点。

Oracle RAC 与 OPS 之间的最大区别在于增加了高速缓存融合。使用 OPS 时,从一个节点到另一个节点的数据请求需要首先将数据写到磁盘,然后请求节点才能读取该数据。而使用高速缓存融合,数据沿着使用复杂锁定算法的高速互连链路传递。

不是所有的集群解决方案都使用共享存储。一些厂商使用一种称为联合集群 的方法。使用这种方法时,数据分布在多台计算机中,而不是由所有计算机共享。但是,在使用 Oracle10g RAC 时,多个节点将使用一组磁盘来存储数据。利用 Oracle10g RAC,数据文件、重做日志文件、控制文件和归档日志文件都保存在原始磁盘设备的共享存储、NAS、ASM 或集群文件系统中。Oracle 的集群方法利用了集群中所有节点的集体处理能力,同时提供了故障切换安全性。

Dell、IBM 和 HP 等厂商提供了预先配置的面向生产环境的 Oracle10g RAC 解决方案。但是,本文将集中讨论如何使用 Linux 服务器和低成本的共享磁盘解决方案 iSCSI 来整合自己的 Oracle10g RAC 环境进行开发和测试。

有关 Oracle RAC 的更多背景知识,请访问 OTN 上的 。

 


3. 共享存储概述

现在,光纤通道是最流行的共享存储解决方案之一。前面曾提到过,光纤通道是一种高速串行传输接口,用于在点到点 (FC-P2P)、仲裁环路 (FC-AL) 或交换式拓扑结构 (FC-SW) 中连接系统与存储设备。光纤通道支持的协议包括 SCSI 和 IP。光纤通道配置最多可以支持 127 个节点,每个方向上最高可以实现 2.12 GB 的吞吐量,预期可达到 4.25 GB。

但是,光纤通道的价格很昂贵。单是光纤通道交换机的起价就可能需要约 1,000 美元。这还不包括光纤通道存储阵列和高端驱动器,一个 36GB 驱动器的价格可高达约 300 美元。典型的光纤通道安装包括用于服务器的光纤通道卡。基本安装的费用为大约 10,000 美元,还不包括构成集群的服务器的成本。

光纤通道的一种较为便宜的替代方法是 SCSI。SCSI 技术提供了可接受的共享存储性能。对于那些习惯了基于 GPL 的 Linux 价格的管理员和开发人员来说,即使是 SCSI(一个双节点集群的价格在 2,000 美元到 5,000 美元左右)也可能超出预算。

另一种流行的解决方案是基于 NAS 的 Sun NFS(网络文件系统)。只有在您使用网络设备或类似的设备时,它才可以用于共享存储。具体来说就是,您需要拥有能够保证在 NFS 上进行直接 I/O、将 TCP 作为传输协议并且读/写块大小为 32K 的服务器。

本文将使用的共享存储基于使用网络存储服务器(随 Openfiler 安装)的 iSCSI 技术。该解决方案提供了一个低成本的光纤通道替代方案,只用于测试和教学目的。考虑到方案中使用低端硬件,因此它不适用于生产环境。

 


4. iSCSI 技术

多年以来,光纤通道存储区域网 (FC SAN) 是唯一用于构建基于网络的存储解决方案的技术。光纤通道采用以前的一组 ANSI 协议(称为光纤分布式数据接口 [FDDI]),目的是通过存储网络来传递 SCSI 命令。

FC SAN 的优势包括提高了性能、磁盘利用率、可用性以及可扩展性等,但最重要的是支持服务器集群!但是,FC SAN 现在仍受三个主要缺点的限制。首先是价格。尽管构建 FC SAN 的成本在最近几年有所下降,但进入成本对于 IT 预算有限的小公司来说仍然是高的惊人。第二个缺点是硬件组件不兼容。采用 FC SAN 之后,许多产品制造商对光纤通道规范的解释各不相同,从而导致许多互连问题。如果从公共制造商购买光纤通道组件,这通常不是一个问题。第三个缺点是光纤通道网络不是以太网!它需要一种单独的网络技术,并要求数据中心人员具备另外一组技能。

随着千兆位以太网的普及以及对降低成本的需要,基于 iSCSI 的存储系统逐渐成为光纤通道的有力竞争对手。现在,iSCSI SAN 仍然是 FC SAN 的最大竞争者。

2003 年 2 月 11 日,互联网工程工作小组 (IETF) 审批通过了互联网小型计算机系统接口(即 iSCSI),这是一个基于互联网协议 (IP) 的存储联网标准,用于在基于 IP 的存储设备、主机和客户机之间建立和管理连接。iSCSI 是 SCSI-3 规范框架中定义的一个数据传输协议,负责通过存储网络传输块级数据,与光纤通道类似。块级通信意味着数据以“块”的形式在主机和客户端之间传输。数据库服务器依赖这种类型的通信(而不是大多数 NAS 系统使用的文件级通信)来工作。与 FC SAN 一样,iSCSI SAN 是一个专用于存储的单独物理网络,但其组件与典型 IP 网络 (LAN) 中的组件基本相同。

尽管 iSCSI 拥有光明的前景,但早期的批评很快指出了其与性能有关的内在不足。iSCSI 的优势是能够利用大家熟悉的 IP 网络作为传输机制。但是,TCP/IP 协议非常复杂并且占用 CPU 资源过多。而使用 iSCSI,大部分对数据进行的处理(TCP 和 iSCSI)都由软件来执行,比完全通过硬件来处理的光纤通道慢得多。将每个 SCSI 命令映射到等价 iSCSI 事务所带来的开销过大。对许多公司来说,解决方案是取消 iSCSI 软件启动器,投资能够从服务器 CPU 中卸载 TCP/IP 和 iSCSI 处理的专用卡。这些专用卡有时称为 iSCSI 主机总线适配器 (HBA) 或 TCP 卸载引擎 (TOE) 卡。与此同时,公司还需要考虑到目前 10 GB 以太网是主流!

与其他新技术一样,iSCSI 具有一组自己的缩略语和术语。对于本文来说,用户只需要了解 iSCSI 启动器与 iSCSI 目标之间的区别即可。

iSCSI 启动器。从本质上说,iSCSI 启动器是一个连接并启动服务器提供的某一服务的请求(在本例中是 iSCSI 目标)的客户端设备。iSCSI 启动器软件需要安装在每个 Oracle RAC 节点(linux1linux2)上。

iSCSI 启动器可以使用软件实现,也可以使用硬件实现。软件 iSCSI 启动器可用于大部分主要操作系统平台。对于本文,我们将使用免费的 Linux iscsi-sfnet 软件驱动程序,该程序位于作为 Linux-iSCSI 项目的一部分而开发的 iscsi-initiator-utils RPM 中。iSCSI 软件启动器通常与标准网络接口卡 (NIC)(大多数情况下是千兆位以太网卡)配合使用。硬件启动器是一个 iSCSI HBA(或 TCP 卸载引擎 (TOE) 卡),它在本质上只是一个专用以太网卡,其上的 SCSI ASIC 可以从系统 CPU 内卸载所有工作(TCP 和 SCSI 命令)。iSCSI HBA 可以从许多供应商处购买,包括 Adaptec、Alacritech、Intel 和 QLogic。

iSCSI 目标。iSCSI 目标是 iSCSI 网络的“服务器”组件。它通常是一个存储设备,包含您所需的信息并回应来自启动器(一个或多个)的请求。对于本文,节点 openfiler1 将是 iSCSI 目标。

因此,根据有关 iSCSI 的所有这些讨论,是否意味着光纤通道很快就会消失?可能不是这样。多年以来,光纤通道通过其极快的速度、灵活性和强健的可靠性,为自己的能力提供了有力的证据。对高性能存储、大型复杂连接以及关键任务可靠性有严格要求的客户将毫不犹豫地继续选择光纤通道。

在结束本部分之前,我认为应该提供一个列表,以对各种类型的磁盘接口和网络技术的速度进行一番比较。对于每种接口,我提供了每秒千位 (kb)、千字节 (KB)、兆位 (Mb)、兆字节 (MB) 以及千兆位 (Gb) 的最大传输速率,较常用的以灰色突出显示。

磁盘接口 / 网络 速度
Kb KB Mb MB Gb
串行 115 14.375 0.115 0.014  
并行(标准) 920 115 0.92 0.115  
10Base-T 以太网     10 1.25  
IEEE 802.11b 无线 Wi-Fi(2.4 GHz 频带)     11 1.375  
USB 1.1     12 1.5  
并行 (ECP/EPP)     24 3  
SCSI-1     40 5  
IEEE 802.11g 无线 WLAN(2.4 GHz 频带)     54 6.75  
SCSI-2(快速 SCSI/快速窄带 SCSI)     80 10  
100Base-T 以太网(高速以太网)     100 12.5  
ATA/100(并行)     100 12.5  
IDE     133.6 16.7  
快速宽带 SCSI(宽带 SCSI)     160 20  
Ultra SCSI(SCSI-3 / Fast-20 / Ultra 窄带)     160 20  
Ultra IDE     264 33  
宽带 Ultra SCSI(快速宽带 20)     320 40  
Ultra2 SCSI     320 40  
FireWire 400 - (IEEE1394a)     400 50  
USB 2.0     480 60  
宽带 Ultra2 SCSI     640 80  
Ultra3 SCSI     640 80  
FireWire 800 - (IEEE1394b)     800 100  
千兆位以太网     1000 125 1
串行 ATA I - (SATA I)     1200 150 1.2
宽带 Ultra3 SCSI     1280 160 1.28
Ultra160 SCSI     1280 160 1.28
串行 ATA II - (SATA II)     2400 300 2.4
Ultra320 SCSI     2560 320 2.56
FC-AL 光纤通道     3200 400 3.2
串行 ATA III - (SATA III)     4800 600 4.8
10G 以太网 (IEEE 802.3ae)     10000 1250 10

 


5. 硬件及成本

用于构建示例 Oracle10g RAC 环境的硬件包括三个 Linux 服务器(两个 Oracle RAC 节点和一个网络存储服务器),以及可以在许多本地计算机商店或互联网上购买到的组件。

Oracle RAC 节点 1 - (linux1)
Dimension 2400 系列
  • Intel(R) Pentium(R) 4 处理器 (2.80GHz)
  • 1GB DDR SDRAM (333MHz)
  • 40GB 7200 RPM 内置硬盘驱动器
  • 集成的 Intel 3D AGP 图形卡
  • 集成的 10/100 以太网卡 -(Broadcom BCM4401)
  • CDROM(48X 倍速)
  • 3.5英寸 软盘驱动器
  • 无键盘、显示器或鼠标 -(连接到 KVM 切换设备)
  • 620 美元
    1 - 以太网 LAN 卡

    用于 linux2 与 Openfiler 网络存储的 RAC 互连。

    Oracle RAC 的每个 Linux 服务器应该包含两个 NIC 适配器。Dell Dimension 包含一个将用于连接公共网络的集成 10/100 以太网适配器。第二个 NIC 适配器将用于专用网络(RAC 互连和 Openfiler 网络存储)。选择与要用于专用网络的网络交换机的最大数据传输速度兼容且合适的 NIC 适配器。在本文中,我使用了一台千兆位以太网交换机(和 1GB 以太网卡)来连接专用网。

         千兆位以太网

         10/100 以太网
    35 美元
    Oracle RAC 节点 2 - (linux2)
    Dimension 2400 系列
  • Intel(R) Pentium(R) 4 处理器 (2.80GHz)
  • 1GB DDR SDRAM (333MHz)
  • 40GB 7200 RPM 内置硬盘驱动器
  • 集成的 Intel 3D AGP 图形卡
  • 集成的 10/100 以太网卡 -(Broadcom BCM4401)
  • CDROM(48X 倍速)
  • 3.5英寸软盘驱动器
  • 无键盘、显示器或鼠标 -(连接到 KVM 切换设备)
  • 620 美元
    1 - 以太网 LAN 卡

    用于linux1 与 Openfiler 网络存储的 RAC 互连。

    Oracle RAC 的每个 Linux 服务器应该包含两个 NIC 适配器。Dell Dimension 包含一个将用于连接公共网络的集成的 10/100 以太网适配器。第二个 NIC 适配器将用于专用网络(RAC 互连和 Openfiler 网络存储)。选择与要用于专用网络的网络交换机的最大数据传输速度兼容且合适的 NIC 适配器。在本文中,我使用了一台千兆位以太网交换机(和 1GB 以太网卡)来连接专用网。

         千兆位以太网

         10/100 以太网
    35 美元
    网络存储服务器 - (openfiler1)
    Clone / Pentium 4
  • Intel(R) Pentium(R) 4 CPU 1.80GHz
  • 1GB DDR SDRAM (333MHz)
  • 40GB 7200 RPM 内置硬盘驱动器
  • NVIDIA GeForce FX 5200 / AGP 图形卡
  • 集成的 10/100 以太网卡 -(Realtek Semiconductor,RTL-8139/8139C/8139C+ 系列)
  • 4 个 USB 2.0 集成端口
  • CDROM(48X 倍速)
  • 3.5英寸软盘驱动器
  • 无键盘、显示器或鼠标 -(连接到 KVM 切换设备)
  • 500 美元
    1 - 以太网 LAN 卡

    用于专用网络上的网络存储。

    网络存储服务器(Openfiler 服务器)应包含两个 NIC 适配器。Clone / Pentium 4 计算机包含一个将用于连接公共网络的集成的 10/100 以太网适配器。第二个 NIC 适配器将用于专用网络(Openfiler 网络存储)。选择与要用于专用网络的网络交换机的最大数据传输速度兼容且合适的 NIC 适配器。在本文中,我使用了一台千兆位以太网交换机(和 1GB 以太网卡)来连接专用网。

         千兆位以太网

         10/100 以太网
    35 美元
    其他组件
    存储设备 - 外置硬盘驱动器

    对于数据库存储,我使用了一个外置 LaCie d2 Hard Drive Extreme with Triple Interface (500GB)驱动器,它通过自己的 USB 2.0 接口连接到 Openfiler 服务器。Openfiler 服务器将配置为使用该磁盘进行基于 iSCSI 的存储,并且将在 Oracle10g RAC 配置中用于存储 Oracle 集群件所需的共享文件以及所有 Oracle ASM 卷。

    注意在开始撰写本文后,LaCie 已停止生产 500GB 的 LaCie d2 Hard Drive Extreme with Triple Interface 外置驱动器,目前只提供 250GB 和 320GB.需要说明的是,只要网络存储服务器 (Openfiler) 可以识别并具有足够的空间,任何类型的硬盘(内置或外置)都可用于数据库存储。

    260 美元
    1 - 以太网交换机

    用于 linux1-priv 和 linux2-priv 之间的互连。它还用于 Openfiler 的网络存储流量。在本文中,我使用了一台千兆位以太网交换机(和 1GB 以太网卡)来连接专用网。

         千兆位以太网

         10/100 以太网
    50 美元
    6 - 网络电缆
    • -(将 linux1 连接到公共网络)
    • -(将 linux2 连接到公共网络)
    • -(将 openfiler1 连接到公共网络)
    • -(将 linux1 与以太网交换机互连)
    • -(将 linux2 与以太网交换机互连)
    • -(将 openfiler1 与以太网交换机互连)
    5 美元
    5 美元
    5 美元
    5 美元
    5 美元
    5 美元
    可选部件
    KVM 切换设备

    为了安装操作系统并执行多项配置任务,本文需要访问所有节点(服务器)的控制台。管理少量服务器时,为了访问控制台,将每台服务器与其自己的显示器、键盘和鼠标相连可能很有用。但是,随着需要管理的服务器越来越多,这一解决方案变得难以实施。一个更实际的解决方案是配置一台专用的计算机,其中包括一个可以直接访问每台服务器的控制台的显示器、键盘和鼠标。该解决方案允许用户使用一台键盘、视频和鼠标切换设备,也称为 KVM 切换设备。KVM 切换设备是一台允许用户从单一的键盘、显示器和鼠标来控制多台计算机的硬件设备。Avocent 提供了一种附带有 4 根 6 英尺电缆的优质、低成本 4 端口切换设备:

    有关 KVM 切换设备及其使用的详细信息,请参阅“家用和企业 KVM 切换设备”。

    340 美元
    合计 2,525 美元  

    下面,我们将开始安装过程。既然已经讨论了将在本示例中使用的硬件,下面我们来对环境进行概念性的了解(单击下面的图形查看大图像)


    图 1 体系结构

    在开始详细说明安装过程之前,应该注意本文中的大部分任务都需要在这两个 Oracle RAC 节点(linux1 和 linux2)上执行。我将在每个部分的开始处指出是应该在这两个 Oracle RAC 节点上还是在网络存储服务器 (openfiler1) 上执行该任务。

     


    6. 安装 Linux 操作系统

    在集群中的两个 Oracle RAC 节点上执行下列安装步骤!

    本部分概述了用于安装 Linux 操作系统的各个屏幕。本指南与 Oracle 的 Enterprise Linux Release 4 Update 5 同时使用。

    有关更多详细的安装说明,可以使用由 Red Hat Linux 提供的。但是,我建议对本配置使用我在下面提供的说明。

    在两个 Oracle RAC 节点上安装 Enterprise Linux 操作系统之前,您应该先安装两个 NIC 接口(卡)。

    下载以下 Enterprise Linux Release 4 Update 5 的 ISO 镜像:


    • V10378-01_1of4.zip (572 MB)
    • V10378-01_2of4.zip (619 MB)
    • V10378-01_3of4.zip (621 MB)
    • V10378-01_4of4.zip (269 MB)

    Enterprise Linux 软件下载完成后,解压缩以上各个文件。您将获得以下 ISO 镜像,需要将其刻录到 CD 上:

    • Enterprise-R4-U5-i386-disc1.iso
    • Enterprise-R4-U5-i386-disc2.iso
    • Enterprise-R4-U5-i386-disc3.iso
    • Enterprise-R4-U5-i386-disc4.iso

    如果您将以上 ISO 文件下载到 MS Windows 计算机,可以使用多种方法将这些镜像(ISO 文件)刻录到 CD。您可能很熟悉这个过程,甚至已经拥有合适的软件,可以将镜像刻录到 CD。如果您不熟悉这个过程,并且没有将镜像刻录到 CD 所需的软件,这里提供了两个软件程序包(实际上有许多个):

    在下载并将 Enterprise Linux 镜像(ISO 文件)刻录到 CD 之后,将 Enterprise Linux 1 号盘插入到第一个服务器(在本示例中是 linux1),启动其电源,并按照以下说明来回应安装屏幕的提示。在第一个节点上安装完 Linux 后,在第二个节点上执行相同的 Linux 安装,但将节点名 linux1 替换为 linux2 并设定适当的不同 IP 地址。

    引导屏幕
    第一个屏幕是 Enterprise Linux 引导屏幕。在 boot: 提示符处按 [Enter] 键启动安装过程。

    介质测试
    当要求测试 CD 介质时,用 Tab 键切换到 [Skip] 并按 [Enter] 键。如果有错误,则介质刻录软件会向我们发出警告。在几秒钟后,安装程序将会检测视频卡、显示器和鼠标。然后安装程序进入 GUI 模式。

    Enterprise Linux 欢迎屏幕
    在欢迎屏幕上,单击 [Next] 继续。

    语言 / 键盘选项
    接下来的两个屏幕提示您设置语言和键盘设置。为您的配置作出合适的选择。

    检测以前的安装
    注意:如果安装程序检测到一个以前版本的 Enterprise Linux,它将询问您是“ Install Enterprise Linux” 还是“Upgrade an existing Installation”。请始终选择“Install Enterprise Linux”。

    磁盘分区设置
    选择 [Automatically partition] 并单击 [Next] 继续。

    如果以前在本机上安装了 Linux,则下一屏幕将询问您是要“删除”还是“保留”旧分区。选择 [Remove all partitions on this system] 选项。同时,确保为 Linux 安装选择了适当的硬盘驱动器(我的配置中使用的是“hda”)。我还选中了 [Review (and modify if needed) the partitions created] 复选框。单击 [Next] 继续。

    然后显示一个对话窗口,询问您是否真的要删除所有分区。单击 [Yes] 回复这一警告。

    分区
    随后安装程序将允许您查看(如果需要还可以更改)它自动选择的磁盘分区。几乎所有情况下,安装程序将为 /boot 分配 100MB,为 swap 分配双倍数量的 RAM,而将剩余空间分配给根 (/) 分区。我倾向于至少为 swap 分配 1 GB 的空间。在本次安装中,我将接受所有自动选用的大小。(包括 2GB 的 swap,因为我安装了 1GB 的 RAM。)

    从 RHEL 4 开始,安装程序将创建与刚才提到的相同磁盘配置,但将使用逻辑卷管理器 (LVM) 创建它们。例如,它将把第一个硬盘驱动器(我的配置使用 /dev/hda)划分为两个分区 — 一个分区用于 /boot 分区 (/dev/hda1),而磁盘的剩余部分专用于 LVM 指定的 VolGroup00 (/dev/hda2)。然后,将 LVM 卷分组 (VolGroup00) 划分为两个 LVM 分区 - 一个分区用于根文件系统 (/),另一个用于交换分区。我主要检查它是否创建了至少 1GB 的交换分区。由于我安装了 1GB RAM,因此安装程序创建了 2GB 的交换分区。也就是说,我只要接受默认的磁盘布局就行了。

    引导加载配置
    安装程序将默认使用 GRUB 引导加载程序。要使用 GRUB 引导加载程序,接受所有默认值并单击 [Next] 继续。

    网络配置
    在启动操作系统安装之前,我已确认在每个 Linux 机器上安装了两个 NIC 接口(卡)。本屏幕应该已经成功地检测到每个网络设备。

    首先,确保将每个网络设备设置为 [Active on boot]。安装程序可能选择不激活 eth1。

    第二步,按照以下方法对 eth0 和 eth1 进行 [Edit] 操作。您可能要为 eth0 和 eth1 使用不同的 IP 地址,没问题。如果可能,试着将 eth1(互连)置于不同于 eth0(公共网络)的子网中:

    eth0:
    — 取消选中 [Configure using DHCP] 复选项
    — 选中 [Activate on boot]
    — IP 地址:192.168.1.100
    — 网络掩码: 255.255.255.0

    eth1:
    — 取消选中 [Configure using DHCP] 复选项
    — 选中 [Activate on boot]
    — IP 地址:192.168.2.100
    — 网络掩码: 255.255.255.0

    接着,手动设置您的主机名。第一个节点使用“linux1”,第二个节点使用“linux2”。然后提供您的网关和 DNS 服务器,最后关闭该对话框。

    防火墙
    在该屏幕上,确保选中 [No firewall] 。

    同时,在“Enable SELinux?”选项下选择 [Disabled]。

    单击 [Next] 继续。

    系统可能显示一个警告对话框,提示您不要设置防火墙。如果出现此情况,只需单击 [Proceed] 继续。

    其他语言支持/时区
    接下来的两个屏幕允许您选择其他语言支持以及时区信息。为您的配置作出合适的选择。

    设置根口令
    选择一个根口令,然后单击 [Next] 继续。

    程序包安装默认值
    默认情况下,Enterprise Linux 将安装一台典型服务器所需的大部分软件。但成功安装 Oracle 数据库软件还需要若干其他的程序包。在本文中,选择单选按钮 [Customize software packages to be installed]。

    程序包组选项
    滚动到本屏幕的底部,在“Miscellaneous”区域的下面选择 [Everything]。单击 [Next] 继续。

    请注意,Oracle 的安装并不要求安装所有 Linux 程序包。为简单起见,我决定安装所有程序包。有关成功的 Oracle 安装所需的重要程序包的详细说明,请参见(“Oracle10g 第 2 版的安装前任务”)。

    关于安装
    本屏幕主要是一个确认屏幕。单击 [Continue] 开始安装。在安装过程中,会依次要求您将盘切换到 2 号盘、3 号盘和 4 号盘。

    恭喜您
    大功告成。您已经在第一个节点 (linux1) 上成功安装了 Enterprise Linux。安装程序将从 CD-ROM 驱动器中弹出 CD。取出 CD,单击 [Reboot] 重新引导系统。

    系统第一次引导进入 Enterprise Linux 中时将为您显示另一个欢迎屏幕。接下来的向导将允许您配置日期和时间、添加其他用户、测试声卡并安装任何其他 CD。我唯一关心的屏幕是时间和日期。至于其他屏幕,由于没有其他需要安装的东西(至少目前是这样!),因此只需快速通过即可。如果一切都已成功,您现在应该看到 Enterprise Linux 登录屏幕了。

    在第二个节点上进行相同的安装
    在第一个节点上完成 Linux 安装后,在第二个节点 (linux2) 上重复上述步骤。对机器名和网络进行正确配置。在我的安装中,linux2 配置如下:

    首先,确保将每个网络设备设置为 [Active on boot]。安装程序将选择不激活 eth1。

    第二步,按照以下方法对 eth0 和 eth1 进行 [Edit] 操作:

    eth0:
    — 取消选中 [Configure using DHCP] 复选项
    — 选中 [Activate on boot]
    — IP 地址:192.168.1.101
    — 网络掩码: 255.255.255.0

    eth1:
    — 取消选中 [Configure using DHCP] 复选项
    — 选中 [Activate on boot]
    — IP 地址:192.168.2.101
    — 网络掩码: 255.255.255.0

    接着,手动设置主机名。我对第二个节点使用“linux2”。然后提供网关和 DNS 服务器,最后关闭该对话框。

     


    7. 网络配置

    在集群中的两个 Oracle RAC 节点上执行下列网络配置!

    注意:虽然我们在 Linux 安装过程中配置了几个网络设置,但千万不要跳过本节,因为它包含了 RAC 环境所需的关键步骤。

    网络设置简介

    在 Linux O/S 安装过程中,我们已经为这两个 Oracle RAC 节点配置了 IP 地址和主机名。现在,我们需要配置 /etc/hosts 文件,并调整几个互连的网络设置。

    这两个 Oracle RAC 节点均应有一个用于公共网络的静态 IP 地址和一个用于专用集群互连的静态 IP 地址。不要使用 DHCP 命令来配置公共IP地址或互连;您需要静态 IP 地址!专用互连应该仅由 Oracle 用于传输与集群管理器和高速缓存融合相关的数据以及用于网络存储服务器 (Openfiler) 的数据。虽然用户可以使用公共网络进行互连。由于它可能降低数据库性能(会减少高速缓存融合和集群管理器流量的带宽),因此 Oracle 不建议使用这种方法。对于生产 RAC 实现,互连应该至少有千兆位(或更多)且仅由 Oracle 使用,并且在单独的千兆位网络上具有网络存储服务器 (Openfiler)。

    配置公共网络和专用网络

    在我们的双节点示例中,为了访问公共网络和互连专用网络,我们需要在两个 Oracle RAC 节点上配置网络。

    在 Red Hat Linux 中配置网络设置的最简单方法是使用“网络配置”程序。您可以以“root”用户从命令行启动网络配置程序,如下所示:

    # su -
    # /usr/bin/system-config-network &

    使用网络配置应用程序,您需要配置两个 NIC 设备以及 /etc/hosts 文件。您可以使用网络配置 GUI 完成这两个任务。请注意,两个节点的 /etc/hosts 设置是相同的。

    我们的示例配置将使用以下设置:

    Oracle RAC 节点 1 - (linux1)
    设备 IP 地址 子网 网关 目的
    eth0 192.168.1.100 255.255.255.0 192.168.1.1 连接 linux1 与公共网络
    eth1 192.168.2.100 255.255.255.0   将 linux1(互连)连接到 linux2 (linux2-priv)
    /etc/hosts
    127.0.0.1        localhost.localdomain   localhost
    
    # Public Network - (eth0)
    192.168.1.100    linux1
    192.168.1.101   linux2
    
    # Private Interconnect - (eth1)
    192.168.2.100    linux1-priv
    192.168.2.101    linux2-priv
    
    # Public Virtual IP (VIP) addresses - (eth0)
    192.168.1.200    linux1-vip
    192.168.1.201    linux2-vip
    
    # Private Storage Network for Openfiler - (eth1)
    192.168.1.195    openfiler1
    192.168.2.195    openfiler1-priv

    Oracle RAC 节点 2 - (linux2)
    设备 IP 地址 子网 网关 目的
    eth0 192.168.1.101 255.255.255.0 192.168.1.1 连接 linux2 与公共网络
    eth1 192.168.2.101 255.255.255.0   将 linux2(互连)连接到 linux1 (linux1-priv)
    /etc/hosts
    127.0.0.1        localhost.localdomain   localhost
    
    # Public Network - (eth0)
    192.168.1.100    linux1
    192.168.1.101   linux2
    
    # Private Interconnect - (eth1)
    192.168.2.100    linux1-priv
    192.168.2.101    linux2-priv
    
    # Public Virtual IP (VIP) addresses - (eth0)
    192.168.1.200    linux1-vip
    192.168.1.201    linux2-vip
    
    # Private Storage Network for Openfiler - (eth1)
    192.168.1.195    openfiler1
    192.168.2.195    openfiler1-priv

    请注意,只需在两个 Oracle RAC 节点的 /etc/hosts 文件(或您的 DNS)中定义虚拟 IP 地址。当您运行 Oracle Universal Installer 时,该程序启动 Oracle 的虚拟互联网协议配置助手 (VIPCA),也就说 Oracle 将自动配置公共虚拟 IP 地址。当运行 srvctl start nodeapps -n 命令时,所有的虚拟 IP 地址将被激活。这就是将要在客户端 tnsnames.ora 文件中进行配置的主机名/IP 地址(后文详述)。

    以下屏幕截图显示了 Oracle RAC 节点 1 (linux1)。确保对两个 Oracle RAC 节点进行了所有适当的网络设置。



    图 2 网络配置屏幕,节点 1 (linux1)



    图 3 以太网设备屏幕,eth0 (linux1)



    图 4 以太网设备屏幕,eth1 (linux1)



    图 5:网络配置屏幕,/etc/hosts (linux1)

    配置网络之后,您可以使用 ifconfig 命令验证一切是否正常。以下示例来自于 linux1

    $ /sbin/ifconfig -a
    eth0 Link encap:Ethernet HWaddr 00:0D:56:FC:39:EC
    inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
    inet6 addr:fe80::20d:56ff:fefc:39ec/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:835 errors:0 dropped:0 overruns:0 frame:0
    TX packets:1983 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:705714 (689.1 KiB) TX bytes:176892 (172.7 KiB)
    Interrupt:3
    eth1 Link encap:Ethernet HWaddr 00:0C:41:E8:05:37
    inet addr:192.168.2.100 Bcast:192.168.2.255 Mask:255.255.255.0
    inet6 addr:fe80::20c:41ff:fee8:537/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 b) TX bytes:546 (546.0 b)
    Interrupt:11 Base address:0xe400
    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr:::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:16436 Metric:1
    RX packets:5110 errors:0 dropped:0 overruns:0 frame:0
    TX packets:5110 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:8276758 (7.8 MiB) TX bytes:8276758 (7.8 MiB)
    sit0 Link encap:IPv6-in-IPv4
    NOARP MTU:1480 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

    关于虚拟 IP

    10g 中为什么使用虚拟 IP (VIP)?为什么当它的主节点发生故障时它只是返回一个无效的连接?

    这全是出于对应用程序可用性的考虑。当一个节点发生故障时,与其关联的 VIP 将被自动故障切换到另外某个节点上。当出现这种情况时,会发生两件事。

    1. 新的节点重新进行地址解析,显示该地址的一个新的 MAC 地址。对于直连客户端,这通常使它们在连接旧地址时出现错误。
    2. 到 VIP 的后续数据包将被传送到新的节点,该节点将把错误 RST 数据包返回客户端。这导致客户端立即收到错误信息。

    这意味着,当客户端向故障节点发出 SQL 时,或者在连接状态下遍历地址列表时,客户端会接收到一个 TCP 重置信息,而不是等待很长的 TCP/IP 超时(大约 10 分钟)。发送 SQL 时,该信息为 ORA-3113。而连接时,使用 tnsname 中的下一个地址。

    更进一步的操作是使用透明的应用程序故障切换 (TAF)。成功配置 TAF 后,就可以完全避免 ORA-3113 错误!(“透明的应用程序故障切换 - (TAF)”)将更详细地介绍 TAF。

    如果不使用 VIP,连接停用节点的客户端经常要等待 10 分钟的 TCP 超时,然后才收到错误信息。因此,如果没有 VIP, 用户将不能真正拥有一流的高可用性解决方案(来源 — Metalink 说明 220970.1)。

    确保 RAC 节点名没有出现在环回地址中

    确保在 /etc/hosts 文件的环回地址中包含节点名(linux1linux2)。如果机器名出现在环回地址条目中,如下所示:

    127.0.0.1 linux1 localhost.localdomain localhost
    需要按如下所示将其删除:
    127.0.0.1 localhost.localdomain localhost

    如果 RAC 节点名出现在环回地址中,您在 RAC 安装期间将接收到以下错误信息:

    ORA-00603:ORACLE server session terminated by fatal error
    或者
    ORA-29702:error occurred in Cluster Group Service operation

    确保在 /etc/hosts 文件中为环回地址定义了本地主机

    确保环回地址的 localhost.localdomainlocalhost 条目包括在每个 Oracle RAC 节点的 /etc/hosts 文件中:

        127.0.0.1        localhost.localdomain localhost
    如果 /etc/hosts 文件中不存在 localhost 条目,Oracle 集群件将不能启动应用程序资源,尤其是 ONS 进程。系统将显示错误信息“Failed to get IP for localhost”,并将其写入到 ONS 日志文件中。例如:
    CRS-0215 could not start resource 'ora.linux1.ons'.Check log file
    "/u01/app/oracle/product/crs/log/linux1/racg/ora.linux1.ons.log"
    for more details.
    ONS 日志文件将包括以下类似内容:

    Oracle Database 10g CRS Release 10.2.0.1.0 Production Copyright 1996, 2005 Oracle.All rights reserved.
    2007-04-14 13:10:02.729: [ RACG][3086871296][13316][3086871296][ora.linux1.ons]:Failed to get IP for localhost (1)
    Failed to get IP for localhost (1)
    Failed to get IP for localhost (1)
    onsctl:ons failed to start
    ...

    调整网络设置

    在 Oracle 9.2.0.1 以及更高版本中,Oracle 在 Linux 上使用 UDP 作为进行过程间通信 (IPC) 的默认协议,如在 RAC 集群中实例之间的高速缓存融合和集群管理器缓冲区传输。

    Oracle 强烈建议将默认的和最大的发送缓冲区大小(SO_SNDBUF 套接字选项)调整为 256KB,并将默认的和最大的接收缓冲区大小(SO_RCVBUF 套接字选项)调整为 256KB。

    接收缓冲区由 TCP 和 UDP 用于保留所接收的数据,直到应用程序读出这些数据为止。由于不允许对端设备发送超过缓冲区大小窗口的数据,因此接收缓冲区不会溢出。这意味着,不适合套接字接收缓冲区的数据报将会被丢弃,从而可能导致发送设备发送的信息淹没接收设备。

    您无需重新引导即可在 /proc 文件系统中更改默认的和最大的窗口大小:

    # su - root
    # sysctl -w net.core.rmem_default=262144
    net.core.rmem_default = 262144
    # sysctl -w net.core.wmem_default=262144
    net.core.wmem_default = 262144
    # sysctl -w net.core.rmem_max=262144
    net.core.rmem_max = 262144
    # sysctl -w net.core.wmem_max=262144
    net.core.wmem_max = 262144

    以上命令更改正在运行的操作系统。现在,将以下各行程序添加到 RAC 集群中两个节点的 /etc/sysctl.conf 文件中,使以上更改永久生效(针对每次重新引导而言):

    # Default setting in bytes of the socket receive buffer
    net.core.rmem_default=262144
    
    # Default setting in bytes of the socket send buffer
    net.core.wmem_default=262144
    
    # Maximum socket receive buffer size which may be set by using
    # the SO_RCVBUF socket option
    net.core.rmem_max=262144
    
    # Maximum socket send buffer size which may be set by using 
    # the SO_SNDBUF socket option
    net.core.wmem_max=262144
    

    检查并关闭 UDP ICMP 拒绝

    在 Linux 安装期间,我指出不配置防火墙选项。默认情况下,配置防火墙的选项由安装程序选择。这使我吃了好几次苦头,因此我要仔细检查防火墙选项是否未配置,并确保 udp ICMP 过滤已关闭。

    如果 UDP ICMP 被防火墙阻塞或拒绝,Oracle 集群件软件将在运行几分钟之后崩溃。如果 Oracle 集群件进程出现故障,您的 _evmocr.log 文件中将出现以下类似内容:

    08/29/2005 22:17:19
    oac_init:2:Could not connect to server, clsc retcode = 9
    08/29/2005 22:17:19
    a_init:12!:Client init unsuccessful :[32]
    ibctx:1:ERROR:INVALID FORMAT
    proprinit:problem reading the bootblock or superbloc 22

    如果遇到此类错误,解决方法是删除 udp ICMP (iptables) 拒绝规则,或者只需关闭防火墙选项。之后,Oracle 集群件软件将开始正常工作,而不会崩溃。以下命令应该以 root 用户帐户的身份执行:

    1. 检查以确保防火墙选项关闭。如果防火墙选项已停用(如下面的示例所示),则不必继续执行以下步骤。
      # /etc/rc.d/init.d/iptables status
      Firewall is stopped.

    2. 如果防火墙选项已启用,您首先需要手动停用 UDP ICMP 拒绝:
      # /etc/rc.d/init.d/iptables stop
      Flushing firewall rules:[ OK ]
      Setting chains to policy ACCEPT:filter [ OK ]
      Unloading iptables modules:[ OK ]

    3. 然后,针对下一次服务器重启关闭 UDP ICMP 拒绝(应该始终被关闭):
      # chkconfig iptables off

     


    8. 安装 Openfiler

    在网络存储服务器 (openfiler1) 上执行以下安装!

    在两个 Oracle RAC 节点上进行网络配置之后,下一步是将 Openfiler 软件安装到网络存储服务器 (openfiler1)。在本文的后面部分,会将网络存储服务器配置为 iSCSI 存储设备,以满足所有 Oracle10g RAC 共享存储要求。

    Openfiler 由 驱动,它是一个基于浏览器的免费网络存储管理实用程序,可以在单一框架中提供基于文件的网络连接存储 (NAS) 和基于块的存储区域网 (SAN)。整个软件包与开放源代码应用程序(例如 Apache、Samba、LVM2、ext3、Linux NFS 和 iSCSI Enterprise Target)连接。Openfiler 将这些随处可见的技术组合到一个易于使用的小型管理解决方案中,该解决方案通过一个基于 Web 且功能强大的管理界面实现。

    Openfiler 支持 CIFS、NFS、HTTP/DAV 和 FTP,但是,我仅使用它的 iSCSI 功能为 Oracle10g RAC 需要的共享存储组件实现低成本的 SAN。我们将通过 USB 2.0 接口将一个 500GB 的外置硬盘驱动器连接到 Openfiler 服务器。Openfiler 服务器将配置为使用该磁盘进行基于 iSCSI 的存储,并且将在 Oracle10g RAC 配置中用于存储 Oracle 集群件所需的共享文件以及所有 Oracle ASM 卷。

    要了解有关 Openfiler 的更多信息,请访问其网站

    下载 Openfiler

    请使用下面的链接下载 Openfiler 2.2 x86(respin 2)。下载 Openfiler 之后,需要将 ISO 镜像刻录到 CD。

      •   (338 MB)

    如果您将以上 ISO 文件下载到 MS Windows 计算机,可以使用多种方法将这些镜像(ISO 文件)刻录到 CD。您可能很熟悉这个过程,甚至已经拥有合适的软件,可以将镜像刻录到 CD。如果您不熟悉这个过程,并且没有将镜像刻录到 CD 所需的软件,这里提供了两个软件程序包(实际上有许多个):

    安装 Openfiler

    本部分概述了用于安装 Openfiler 软件的各个屏幕。在本文中,我选择了使用所有默认选项安装 Openfiler。所需的唯一手动更改是为了配置本地网络设置。

    安装完成之后,服务器将重新引导以确保启动并识别所需的所有组件、服务和驱动程序。重新引导之后,Openfiler 服务器应该将外置硬盘驱动器识别为设备 /dev/sda

    有关更详细的安装说明,请访问 。但是,我建议使用下面提供的说明对该 Oracle10g RAC 进行配置。

    将 Openfiler 软件安装到网络存储服务器之前,应该先安装两个 NIC 接口(卡),并连接和打开所有外置硬盘驱动器。

    在下载并将 Openfiler ISO 镜像(ISO 文件)刻录到 CD 之后,将该 CD 插入网络存储服务器(在本例中是 openfiler1),启动,并按照以下说明来回应安装屏幕的提示。

    引导屏幕
    第一个屏幕是 Openfiler 引导屏幕。在 boot: 提示符处按 [Enter] 键启动安装过程。

    介质测试
    当要求测试 CD 介质时,用 Tab 键切换到 [Skip] 并按 [Enter] 键。如果有错误,则介质刻录软件会向我们发出警告。在几秒钟后,安装程序将会检测视频卡、显示器和鼠标。然后安装程序进入 GUI 模式。

    Openfiler NAS/SAN Appliance 欢迎屏幕
    在欢迎屏幕上,单击 [Next] 继续。

    键盘配置
    下一个屏幕将提示您进行键盘设置。为您的配置作出合适的选择。

    磁盘分区设置
    下一个屏幕将询问使用“Automatic Partitioning”还是“Manual Partitioning with Disk Druid”执行磁盘分区。这里,您选择哪种方法都可以,尽管官方 Openfiler 文档建议使用手动分区。由于用于此安装的内置硬盘驱动器很小,并且该驱动器将仅用于存储 Openfiler 软件(我不会将内置 40GB 硬盘驱动器上的任何空间用于 iSCSI 存储),因此我选择使用“Automatic Partitioning”。

    选择 [Automatically partition] 并单击 [Next] 继续。

    如果以前在本机上安装了 Linux,则下一屏幕将询问您是要“删除”还是“保留”旧分区。选择 [Remove all partitions on this system] 选项。还要确保“仅”为本安装选择了 [hda] 驱动器。我还选中了 [Review (and modify if needed) the partitions created] 复选框。单击 [Next] 继续。

    然后显示一个对话窗口,询问您是否真的要删除所有分区。单击 [Yes] 回复这一警告。

    分区
    随后安装程序将允许您查看(如果需要还可以更改)它自动为 /dev/hda 选择的磁盘分区。几乎所有情况下,安装程序将为 /boot 分配 100MB,为 swap 分配双倍数量的 RAM,而将剩余空间分配给根 (/) 分区。我倾向于至少为 swap 分配 1 GB 的空间。就本安装而言,我将接受所有自动选用的大小。(包括 2GB 的 swap,因为我安装了 1GB 的 RAM。)

    网络配置
    在启动 Openfiler 安装之前,我已确认在网络存储服务器上安装了两个 NIC 接口(卡)。本屏幕应该已经成功地检测到每个网络设备。

    首先,确保将每个网络设备设置为 [Active on boot]。默认情况下,安装程序可能选择不激活 eth1。

    第二步,按照以下方法对 eth0 和 eth1 进行 [Edit] 操作。您可能要为 eth0 和 eth1 使用不同的 IP 地址,没问题。但是,您必须将 eth1(存储网络)配置为与 linux1 和 linux2 上的 eth1 位于同一子网中:

    eth0:
    — 取消选中 [Configure using DHCP] 复选项
    — 选中 [Activate on boot]
    — IP 地址:192.168.1.195
    — 网络掩码: 255.255.255.0

    eth1:
    — 取消选中 [Configure using DHCP] 复选项
    — 选中 [Activate on boot]
    — IP 地址:192.168.2.195
    — 网络掩码: 255.255.255.0

    接着,手动设置您的主机名。我使用的主机名是“openfiler1”。然后提供您的网关和 DNS 服务器,最后关闭该对话框。

    时区
    下一个屏幕将允许您配置时区信息。为您的位置作出合适的选择。

    设置根口令
    选择一个根口令,然后单击 [Next] 继续。

    关于安装
    本屏幕主要是一个确认屏幕。单击 [Next] 开始安装。

    恭喜
    大功告成。您已经成功地在网络存储服务器上安装了 Openfiler。安装程序将从 CD-ROM 驱动器中弹出 CD。取出 CD,单击 [Reboot] 重新引导系统。

    如果在重新引导后一切都已成功,您现在应该看到文本登录屏幕和用于管理 Openfiler 服务器的 URL。

    在 Openfiler 服务器上修改 /etc/hosts 文件
    虽然并非必要,但我通常会将 /etc/hosts 文件的内容从一个 Oracle RAC 节点复制到新的 Openfiler 服务器。当测试集群网络时可以实现方便的名称解析。

     


    9. 使用 Openfiler 配置 iSCSI 卷

    在网络存储服务器 (openfiler1) 上执行以下配置任务!

    可以使用 Openfiler Storage Control Center(一个基于浏览器的工具,通过端口 446 上的 https 连接实现)执行 Openfiler 管理。例如:

    从 Openfiler Storage Control Center 主页,以管理员身份登录。Openfiler 的默认管理员登录凭证为:

    • 用户名: openfiler
    • 密码: password

    管理员看到的第一个页面是 [Accounts] / [Authentication] 屏幕。配置用户帐户和组对本文不是十分重要,因此对此不进行讨论。

    要将 Openfiler 用作 iSCSI 存储服务器,我们需要执行三个主要任务:设置 iSCSI 服务、配置网络访问以及创建物理存储。

    服务

    要控制服务,我们使用 Openfiler Storage Control Center 并导航到 [Services] / [Enable/Disable]:



    图 6 启用 iSCSI Openfiler 服务

    要启用 iSCSI 服务,单击“iSCSI target”服务名称下面的“Enable”。之后,“iSCSI target”状态应更改为“Enabled”。

    ietd 程序将实现 iSCSI Enterprise Target 软件的用户级部分,以便在 Linux 上构建 iSCSI 存储系统。启用 iSCSI 目标之后,我们应该能够通过 SSH 进入 Openfiler 服务器,并看到 iscsi-target 服务正在运行:

    [root@openfiler1 ~]# service iscsi-target status
    ietd (pid 3784) is running...

    网络访问限制

    下一步是配置 Openfiler 中的网络访问,使两个 Oracle RAC 节点(linux1linux2)都有权通过存储(专用)网络访问我们的 iSCSI 卷。(我们将在下一部分中创建 iSCSI 卷!)

    此外,该任务还可以使用 Openfiler Storage Control Center 通过导航到 [General] / [Local Networks] 来完成。利用 Local Networks 屏幕,管理员可以设置允许其访问 Openfiler 设备导出的资源的网络和/或主机。就本文而言,我们希望单独添加两个 Oracle RAC 节点,而不是允许整个 192.168.2.0 网络访问 Openfiler 资源。

    输入每个 Oracle RAC 节点时,请注意“Name”域只是一个逻辑名称,仅供参考。根据输入节点的惯例,我仅使用了为该 IP 地址定义的节点名称。接下来,在“Network/Host”字段中输入实际节点时,始终使用其 IP 地址,即使其主机名已经在 /etc/hosts 文件或 DNS 中定义。最后,在我们的 Class C 网络中输入实际主机时,应使用子网掩码 255.255.255.255。

    记住,您要为集群中的每个 RAC 节点输入专用 网络 (eth1) 的 IP 地址,这一点很重要。

    下图显示了添加两个 Oracle RAC 节点后的结果:



    图 7 为 Oracle RAC 节点配置 Openfiler 主机访问

    物理存储

    在本部分中,我们将创建五个 iSCSI 卷,以供集群中的两个 Oracle RAC 节点用作共享存储。这将在连接到 Openfiler 服务器的外置 USB 硬盘驱动器上执行多个步骤。

    存储设备(如内置 IDE/SATA/SCSI 磁盘、外置 USB 或 FireWire 驱动器或者任何其他存储设备)可以连接到 Openfiler 服务器,并供客户端使用。如果在 OS 级发现这些设备,就可以使用 Openfiler Storage Control Center 设置和管理所有这些存储设备。

    在本例中,我们将一个 500GB 的外置 USB 硬盘驱动器用于存储。在 Openfiler 服务器上,本驱动器为 /dev/sda (HDS72505 0KLAT80)。要看到该驱动器并启动 iSCSI 卷的创建过程,请从 Openfiler Storage Control Center 导航到 [Volumes] / [Physical Storage Mgmt.]:



    图 8 Openfiler 物理存储

    对物理磁盘进行分区

    我们将执行的第一步是在 /dev/sda 外置 USB 硬盘驱动器上创建一个主分区。通过单击 /dev/sda 链接,我们可以看到“Edit”或“Create”分区的选项。由于我们将创建一个跨整个磁盘的主分区,因此可以将大多数选项保留为默认设置,唯一的修改是将“Partition Type”由“Extended partition”更改为“Physical volume”。下面是我为了在 /dev/sda 上创建主分区而指定的值:

    模式:
    分区类型:物理卷
    开始柱面:1
    结束柱面: 60801

    现在,大小将显示 465.76 GB。要接受该设置,单击 Create 按钮。这将在我们的外置硬盘驱动器上生成一个新的分区 (/dev/sda1):



    图 9 对物理卷进行分区

    卷分组管理

    下一步是创建卷分组。我们将创建一个名为 rac1 的卷分组,其中包含新创建的主分区。

    从 Openfiler Storage Control Center 中,导航到 [Volumes] / [Volume Group Mgmt.]。我们将看到所有现有的卷分组,或者什么也看不到(我们的情况就是这样)。使用 Volume Group Management 屏幕,输入新卷分组的名称 (rac1),单击 /dev/sda1 前面的复选框以选择该分区,最后单击“Add volume group”按钮。之后,我们会看到一个列表,其中将显示我们新创建的名为“rac1”的卷分组:



    图 10 创建的新卷分组

    逻辑卷

    现在,我们可以在新创建的卷分组 (rac1) 中创建五个逻辑卷。

    从 Openfiler Storage Control Center 中,导航到 [Volumes] / [Create New Volume]。我们将看到新创建的卷分组 (rac1) 及其块存储统计信息。该屏幕底部还提供了用于在选定的卷分组中创建新卷的选项。使用该屏幕创建以下五个逻辑 (iSCSI) 卷。在创建每个逻辑卷之后,应用程序将转至“List of Existing Volumes”屏幕。然后,您需要单击后退到“Create New Volume”选项卡以创建下一个逻辑卷,直至五个 iSCSI 卷全部创建完毕:

    iSCSI / 逻辑卷
    卷名 卷描述 所需空间 (MB) 文件系统类型
    crs Oracle 集群件 2,048 iSCSI
    asm1 Oracle ASM 卷 1 118,720 iSCSI
    asm2 Oracle ASM 卷 2 118,720 iSCSI
    asm3 Oracle ASM 卷 3 118,720 iSCSI
    asm4 Oracle ASM 卷 4 118,720 iSCSI

    实际上,我们已经创建了五个 iSCSI 磁盘,现在可以将它们呈现给网络上的 iSCSI 客户端(linux1linux2)。“List of Existing Volumes”屏幕如下:



    图 11 新的逻辑 (iSCSI) 卷

    授予节点新的逻辑卷的访问权限

    需要先授予 iSCSI 客户端相应的权限,它才能访问新创建的 iSCSI 卷。在前面,我们将 Openfiler 配置为具有两个主机(Oracle RAC 节点),这两个主机可以配置为具有访问资源的权限。现在,我们需要授予这两个 Oracle RAC 节点访问每个新创建的 iSCSI 卷的权限。

    从 Openfiler Storage Control Center 中,导航到 [Volumes] / [List of Existing Volumes]。这将显示上一部分中显示的屏幕。对于每个逻辑卷,单击“Edit”链接(在 Properties 列下)。这将显示该卷的“Edit properties”屏幕。滚动到该屏幕的底部,将两个主机由“Deny”更改为“Allow”,然后单击“Update”按钮:



    图 12 授予主机对逻辑 (iSCSI) 卷的访问权限

    针对全部五个逻辑卷执行该任务。

    使 iSCSI 目标可供客户端使用

    每次添加新的逻辑卷之后,我们都需要在 Openfiler 服务器上重新启动相关服务。在本例中,我们创建了 iSCSI 逻辑卷,因此需要重新启动 iSCSI 目标 (iscsi-target) 服务。这将使新的 iSCSI 目标可供网络上有权访问它们的所有客户端使用。

    要重新启动 iSCSI 目标服务,请使用 Openfiler Storage Control Center 并导航到 [Services] / [Enable/Disable]。iSCSI 目标服务应该已经启用(几部分以前)。如果是这样,应禁用该服务,然后再启用它。(参见)

    通过 Openfiler 服务器上的 SSH 会话也可以完成该任务:

    [root@openfiler1 ~]# service iscsi-target restart
    Stopping iSCSI target service:[  OK  ]
    Starting iSCSI target service:[  OK  ]

     


    10. 在 Oracle RAC 节点上配置 iSCSI 卷

    在集群中的两个 Oracle RAC 节点上配置 iSCSI 启动器!但是,创建分区应该只在 RAC 集群的一个节点上执行。

    iSCSI 客户端可以是提供 iSCSI 支持(驱动程序)的任何系统(Linux、Unix、MS Windows、Apple Mac 等)。在我们的示例中,客户端是两个 Linux 服务器(linux1linux2),它们运行的是 Red Hat 4。

    在本部分中,我们将在两个 Oracle RAC 节点上配置 iSCSI 启动器。这包括在两个 Oracle RAC 节点上配置 /etc/iscsi.conf 文件,使其包含网络存储服务器名称 (openfiler1),以便它们能够发现在前一部分中创建的 iSCSI 卷。然后,我们将执行一项艰巨任务,即:将从 Openfiler 中发现的 iSCSI 目标名称映射到其中一个节点(即 linux1,我们将在该节点上对 iSCSI 卷进行分区)的本地 SCSI 设备名称。通常,大家认为这是一项耗时的任务,但是仅在本部分以及使用 Oracle 集群文件系统 (OCFS2) 和自动存储管理 (ASM) 对 iSCSI 卷进行格式化时才需要执行该任务。您需要知道本地 SCSI 设备名称及其映射到的 iSCSI 目标,才能了解要用于 OCFS2 的卷(设备)和属于 ASM 的卷。注意,每次重新引导其中一个 Oracle RAC 节点时,映射都可能不同。例如,在配置卷的过程中,可能将 iSCSI 目标名称“iqn.2006-01.com.openfiler:rac1.crs”识别为 linux1 上的 /dev/sdd(正如我编写的本部分中的情况)。但是,重新引导该节点后,可能会将“iqn.2006-01.com.openfiler:rac1.crs”识别为 /dev/sde。这不会成为一个问题,因为所有磁盘都由 OCFS2 或 ASM 标记(本文稍后将对此进行讨论)。当其中一个服务尝试挂载卷时,它会使用其标签,而不是使用其本地 SCSI 设备名称。

    iSCSI(启动器)服务

    在每个 Oracle RAC 节点上,我们都需要确保 iSCSI(启动器)服务状态良好且在运行。如果 iscsi-initiator-utils RPM(即 )没有作为操作系统安装的一部分安装,则应该将其下载并安装到每个 Oracle RAC 节点上。

    要确定是否已安装了该程序包,请在两个 Oracle RAC 节点上执行以下操作:

    # rpm -qa | grep iscsi
    iscsi-initiator-utils-4.0.3.0-5

    如果未安装,可以从 RHEL4 Update 4 发行版本的第 3 张磁盘(共 4 张)上找到 iscsi-initiator-utils RPM 程序包,也可以从其中一个 Internet RPM 资源。

    如果 iscsi-initiator-utils RPM 程序包未安装,请使用以下命令进行安装:

    # rpm -Uvh iscsi-initiator-utils-4.0.3.0-5.i386.rpm
    warning:iscsi-initiator-utils-4.0.3.0-5.i386.rpm: 
    V3 DSA signature:NOKEY, key ID 443e1821
    Preparing...                ########################################### [100%]
    1:iscsi-initiator-utils  ########################################### [100%]

    验证 iscsi-initiator-utils RPM 已安装之后,需要在 Oracle RAC 节点(iSCSI 客户端)上执行的唯一配置步骤是在 /etc/iscsi.conf 文件中指定网络存储服务器(iSCSI 服务器)。编辑 /etc/iscsi.conf 文件,以包含指定 Openfiler 网络存储服务器主机名的 DiscoveryAddress 项。在我们的示例中,该项是:

    ...
    DiscoveryAddress=openfiler1-priv
    ...

    在两个 Oracle RAC 节点上更改 /etc/iscsi.conf 文件之后,我们就可以在两个节点上启动(或重新启动)iscsi 启动器服务:

    # service iscsi restart
    Searching for iscsi-based multipath maps
    Found 0 maps
    Stopping iscsid:iscsid not running
    
    Checking iscsi config:[  OK  ]
    Loading iscsi driver:[  OK  ]
    Starting iscsid:[  OK  ]

    我们还应该将两个 Oracle RAC 节点的 iSCSI 服务配置为在计算机重新引导后保持活动状态。您可以使用 Linux 命令 chkconfig 达到此目的,如下所示:

    # chkconfig --level 345 iscsi on

    发现 iSCSI 目标

    尽管已经在两个 Oracle RAC 节点上配置了 iSCSI 启动器服务并且在运行该服务,但本部分中的发现指令只能从我们将对其进行分区并标记卷的节点(即 linux1)运行。

    当 Openfiler 服务器发布可用 iSCSI 目标(当 iscsi-target 服务在 Openfiler 服务器上启动/重新启动时发生)或者当 iSCSI 启动器服务在客户端上启动/重新启动时,经过配置的客户端将收到表明新的 iSCSI 磁盘现在可用的消息。我们会在客户端的 /var/log/messages 文件中看到类似下面的内容:

    ...
    Jun 25 12:56:10 linux1 iscsi:iscsid startup succeeded
    Jun 25 12:56:10 linux1 iscsid[10315]:Connected to Discovery Address 192.168.2.195
    Jun 25 12:56:10 linux1 kernel:iscsi-sfnet:host1:Session established
    Jun 25 12:56:10 linux1 kernel:iscsi-sfnet:host0:Session established
    Jun 25 12:56:10 linux1 kernel:iscsi-sfnet:host2:Session established
    Jun 25 12:56:10 linux1 kernel:scsi0 :SFNet iSCSI driver
    Jun 25 12:56:10 linux1 kernel:iscsi-sfnet:host3:Session established
    Jun 25 12:56:10 linux1 kernel:scsi1 :SFNet iSCSI driver
    Jun 25 12:56:10 linux1 kernel:Vendor:Openfile  Model:Virtual disk      Rev: 0
    Jun 25 12:56:10 linux1 kernel:Type:Direct-Access                    ANSI SCSI revision: 04
    Jun 25 12:56:10 linux1 kernel:SCSI device sda:243138560 512-byte hdwr sectors (124487 MB)
    Jun 25 12:56:10 linux1 kernel:iscsi-sfnet:host4:Session established
    Jun 25 12:56:10 linux1 kernel:scsi4 :SFNet iSCSI driver
    Jun 25 12:56:10 linux1 kernel:scsi2 :SFNet iSCSI driver
    Jun 25 12:56:10 linux1 kernel:Vendor:Openfile  Model:Virtual disk      Rev: 0
    Jun 25 12:56:10 linux1 kernel:Type:Direct-Access                    ANSI SCSI revision: 04
    Jun 25 12:56:10 linux1 kernel:SCSI device sda:drive cache:write through
    Jun 25 12:56:10 linux1 kernel:Vendor:Openfile  Model:Virtual disk      Rev: 0
    Jun 25 12:56:10 linux1 kernel:Type:Direct-Access                    ANSI SCSI revision: 04
    Jun 25 12:56:10 linux1 kernel:scsi3 :SFNet iSCSI driver
    Jun 25 12:56:10 linux1 kernel:Vendor:Openfile  Model:Virtual disk      Rev: 0
    Jun 25 12:56:10 linux1 kernel:Type:Direct-Access                    ANSI SCSI revision: 04
    Jun 25 12:56:10 linux1 kernel:SCSI device sda:243138560 512-byte hdwr sectors (124487 MB)
    Jun 25 12:56:10 linux1 kernel:Vendor:Openfile  Model:Virtual disk      Rev: 0
    Jun 25 12:56:10 linux1 kernel:Type:Direct-Access                    ANSI SCSI revision: 04
    Jun 25 12:56:10 linux1 kernel:SCSI device sda:drive cache:write through
    Jun 25 12:56:10 linux1 kernel:sda:unknown partition table
    Jun 25 12:56:10 linux1 kernel:Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
    Jun 25 12:56:10 linux1 kernel:SCSI device sdb:4194304 512-byte hdwr sectors (2147 MB)
    Jun 25 12:56:10 linux1 kernel:SCSI device sdb:drive cache:write through
    Jun 25 12:56:10 linux1 kernel:SCSI device sdb:4194304 512-byte hdwr sectors (2147 MB)
    Jun 25 12:56:10 linux1 kernel:SCSI device sdb:drive cache:write through
    Jun 25 12:56:10 linux1 kernel:sdb:unknown partition table
    Jun 25 12:56:10 linux1 kernel:Attached scsi disk sdb at scsi4, channel 0, id 0, lun 0
    Jun 25 12:56:10 linux1 kernel:SCSI device sdc:243138560 512-byte hdwr sectors (124487 MB)
    Jun 25 12:56:10 linux1 kernel:SCSI device sdc:drive cache:write through
    Jun 25 12:56:10 linux1 kernel:SCSI device sdc:243138560 512-byte hdwr sectors (124487 MB)
    Jun 25 12:56:10 linux1 kernel:SCSI device sdc:drive cache:write through
    Jun 25 12:56:11 linux1 scsi.agent[10455]:disk at /devices/platform/host0/target0:0:0/0:0:0:0
    Jun 25 12:56:11 linux1 scsi.agent[10476]:disk at /devices/platform/host4/target4:0:0/4:0:0:0
    Jun 25 12:56:11 linux1 kernel:sdc:unknown partition table
    Jun 25 12:56:11 linux1 kernel:Attached scsi disk sdc at scsi2, channel 0, id 0, lun 0
    Jun 25 12:56:11 linux1 kernel:SCSI device sdd:243138560 512-byte hdwr sectors (124487 MB)
    Jun 25 12:56:11 linux1 kernel:SCSI device sdd:drive cache:write through
    Jun 25 12:56:11 linux1 kernel:SCSI device sdd:243138560 512-byte hdwr sectors (124487 MB)
    Jun 25 12:56:11 linux1 kernel:SCSI device sdd:drive cache:write through
    Jun 25 12:56:11 linux1 hald[3898]:Timed out waiting for hotplug event 626. Rebasing to 629
    Jun 25 12:56:11 linux1 kernel:sdd:unknown partition table
    Jun 25 12:56:11 linux1 scsi.agent[10499]:disk at /devices/platform/host2/target2:0:0/2:0:0:0
    Jun 25 12:56:11 linux1 kernel:Attached scsi disk sdd at scsi3, channel 0, id 0, lun 0
    Jun 25 12:56:11 linux1 kernel:SCSI device sde:243138560 512-byte hdwr sectors (124487 MB)
    Jun 25 12:56:11 linux1 kernel:SCSI device sde:drive cache:write through
    Jun 25 12:56:11 linux1 kernel:SCSI device sde:243138560 512-byte hdwr sectors (124487 MB)
    Jun 25 12:56:11 linux1 kernel:SCSI device sde:drive cache:write through
    Jun 25 12:56:11 linux1 scsi.agent[10528]:disk at /devices/platform/host3/target3:0:0/3:0:0:0
    Jun 25 12:56:11 linux1 kernel:sde:unknown partition table
    Jun 25 12:56:11 linux1 kernel:Attached scsi disk sde at scsi1, channel 0, id 0, lun 0
    Jun 25 12:56:11 linux1 scsi.agent[10559]:disk at /devices/platform/host1/target1:0:0/1:0:0:0
    ...
    

    上面的各项显示客户端 (linux1) 能够与 iSCSI 存储服务器(位于 192.168.2.195 的 openfiler1-priv)建立 iSCSI 会话。

    我们还可以看到本地 SCSI 设备名称如何映射到 iSCSI 目标的主机 ID 和 LUN:

    Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
    Attached scsi disk sdb at scsi4, channel 0, id 0, lun 0
    Attached scsi disk sdc at scsi2, channel 0, id 0, lun 0
    Attached scsi disk sdd at scsi3, channel 0, id 0, lun 0
    Attached scsi disk sde at scsi1, channel 0, id 0, lun 0

    还可以通过 dmesg 命令确定本地 SCSI 设备名称如何映射到 iSCSI 目标的主机 ID 和 LUN:

    # dmesg | sort | grep '^Attached scsi disk'
    Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
    Attached scsi disk sdb at scsi4, channel 0, id 0, lun 0
    Attached scsi disk sdc at scsi2, channel 0, id 0, lun 0
    Attached scsi disk sdd at scsi3, channel 0, id 0, lun 0
    Attached scsi disk sde at scsi1, channel 0, id 0, lun 0

    现在,我们需要在客户端 (linux1) 上运行 iscsi-ls 命令,将 iSCSI 目标名称映射到本地 SCSI ID(在下面显示为 HOST ID):

    # iscsi-ls
    *******************************************************************************
    SFNet iSCSI Driver Version ...4:0.1.11-4(15-Jan-2007)
    *******************************************************************************
    TARGET NAME             :iqn.2006-01.com.openfiler:rac1.asm4
    TARGET ALIAS            :
    HOST ID                 : 0
    BUS ID                  : 0
    TARGET ID               : 0
    TARGET ADDRESS          : 192.168.2.195:3260,1
    SESSION STATUS          :ESTABLISHED AT Mon Jun 25 12:56:10 EDT 2007
    SESSION ID              :ISID 00023d000001 TSIH 200
    *******************************************************************************
    TARGET NAME             :iqn.2006-01.com.openfiler:rac1.asm3
    TARGET ALIAS            :
    HOST ID                 : 1
    BUS ID                  : 0
    TARGET ID               : 0
    TARGET ADDRESS          : 192.168.2.195:3260,1
    SESSION STATUS          :ESTABLISHED AT Mon Jun 25 12:56:10 EDT 2007
    SESSION ID              :ISID 00023d000001 TSIH 100
    *******************************************************************************
    TARGET NAME             :iqn.2006-01.com.openfiler:rac1.asm2
    TARGET ALIAS            :
    HOST ID                 : 2
    BUS ID                  : 0
    TARGET ID               : 0
    TARGET ADDRESS          : 192.168.2.195:3260,1
    SESSION STATUS          :ESTABLISHED AT Mon Jun 25 12:56:10 EDT 2007
    SESSION ID              :ISID 00023d000001 TSIH 300
    *******************************************************************************
    TARGET NAME             :iqn.2006-01.com.openfiler:rac1.asm1
    TARGET ALIAS            :
    HOST ID                 : 3
    BUS ID                  : 0
    TARGET ID               : 0
    TARGET ADDRESS          : 192.168.2.195:3260,1
    SESSION STATUS          :ESTABLISHED AT Mon Jun 25 12:56:10 EDT 2007
    SESSION ID              :ISID 00023d000001 TSIH 400
    *******************************************************************************
    TARGET NAME             :iqn.2006-01.com.openfiler:rac1.crs
    TARGET ALIAS            :
    HOST ID                 : 4
    BUS ID                  : 0
    TARGET ID               : 0
    TARGET ADDRESS          : 192.168.2.195:3260,1
    SESSION STATUS          :ESTABLISHED AT Mon Jun 25 12:56:10 EDT 2007
    SESSION ID              :ISID 00023d000001 TSIH 500
    *******************************************************************************

    使用从本地 SCSI ID 到 iSCSI 目标的主机 ID / LUN 以及 iSCSI 目标名称到 SCSI ID 的映射信息,我们可以为主机 linux1 生成从 SCSI 目标名称到本地 SCSI 设备名称的完整映射:

    iSCSI 目标名称到本地 SCSI 设备名称
    iSCSI 目标名称 主机 / SCSI ID SCSI 设备名称
    iqn.2006-01.com.openfiler:rac1.asm4 0 /dev/sda
    iqn.2006-01.com.openfiler:rac1.asm3 1 /dev/sde
    iqn.2006-01.com.openfiler:rac1.asm2 2 /dev/sdc
    iqn.2006-01.com.openfiler:rac1.asm1 3 /dev/sdd
    iqn.2006-01.com.openfiler:rac1.crs 4 /dev/sdb

    在 iSCSI 卷上创建分区

    接下来的步骤是在每个 iSCSI 卷上创建一个跨整个卷大小的主分区。正如本文前面提到的那样,我将使用 Oracle 的集群文件系统第 2 版 (OCFS2) 存储供 Oracle 集群件软件共享的两个文件。然后,我们将使用自动存储管理 (ASM) 创建四个 ASM 卷;其中,两个用于所有物理数据库文件(数据/索引文件、联机重做日志文件和控制文件),另两个用于闪回恢复区(RMAN 备份和归档重做日志文件)。

    下表列出了五个 iSCSI 卷及其支持的文件系统:

    Oracle 共享驱动器配置
    文件系统类型 iSCSI 目标(短)名称 规模 挂载点 ASM 磁盘组名称 文件类型
    OCFS2 crs 2 GB /u02/oradata/orcl   Oracle 集群注册表 (OCR) 文件 — (~100MB)
    表决磁盘 — (~20MB)
    ASM asm1 118 GB ORCL:VOL1 +ORCL_DATA1 Oracle 数据库文件
    ASM asm2 118 GB ORCL:VOL2 +ORCL_DATA1 Oracle 数据库文件
    ASM asm3 118 GB ORCL:VOL3 +FLASH_RECOVERY_AREA Oracle 闪回恢复区
    ASM asm4 118 GB ORCL:VOL4 +FLASH_RECOVERY_AREA Oracle 闪回恢复区
    合计   474 GB      

    如上表所示,我们需要在每个 iSCSI 卷上创建一个 Linux 主分区。fdisk 命令在 Linux 中用于创建(和删除)分区。对于每个 iSCSI 卷,您都可以在创建主分区时使用默认值,因为默认操作是使用整个磁盘。您可以安全地忽略指出设备未包含有效 DOS 分区(或 Sun、SGI 或 OSF 磁盘标签)的任何警告。

    就本示例而言,我将从 linux1 运行 fdisk 命令,以便为上一部分中标识的每个本地 SCSI 设备创建一个主分区:

    • /dev/sda
    • /dev/sdb
    • /dev/sdc
    • /dev/sdd
    • /dev/sde

    请注意,要在每个 iSCSI 卷上创建分区,只能从 Oracle RAC 集群中的一个节点上运行!

    # ---------------------------------------
    
    # fdisk /dev/sda
    Command (m for help):n
    Command action
    e   extended
    p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-15134, default 1): 1
    Last cylinder or +size or +sizeM or +sizeK (1-15134, default 15134): 15134
    
    Command (m for help):p
    
    Disk /dev/sda:124.4 GB, 124486942720 bytes
    255 heads, 63 sectors/track, 15134 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot    Start       End    Blocks   Id  System
    /dev/sda1               1       15134   121563823+  83  Linux
    
    Command (m for help):w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    
    # ---------------------------------------
    
    # fdisk /dev/sdb
    Command (m for help):n
    Command action
    e   extended
    p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-1009, default 1): 1
    Last cylinder or +size or +sizeM or +sizeK (1-1009, default 1009): 1009
    
    Command (m for help):p
    
    Disk /dev/sdb:2147 MB, 2147483648 bytes
    67 heads, 62 sectors/track, 1009 cylinders
    Units = cylinders of 4154 * 512 = 2126848 bytes
    
    Device Boot    Start       End    Blocks   Id  System
    /dev/sdb1             1      1009  2095662   83  Linux
    
    Command (m for help):w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    
    # ---------------------------------------
    
    # fdisk /dev/sdc
    Command (m for help):n
    Command action
    e   extended
    p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-15134, default 1): 1
    Last cylinder or +size or +sizeM or +sizeK (1-15134, default 15134): 15134
    
    Command (m for help):p
    
    Disk /dev/sdc:124.4 GB, 124486942720 bytes
    255 heads, 63 sectors/track, 15134 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot    Start       End    Blocks   Id  System
    /dev/sdc1               1       15134   121563823+  83  Linux
    
    Command (m for help):w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    
    # ---------------------------------------
    
    # fdisk /dev/sdd
    Command (m for help):n
    Command action
    e   extended
    p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-15134, default 1): 1
    Last cylinder or +size or +sizeM or +sizeK (1-15134, default 15134): 15134
    
    Command (m for help):p
    
    Disk /dev/sdd:124.4 GB, 124486942720 bytes
    255 heads, 63 sectors/track, 15134 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot    Start       End    Blocks   Id  System
    /dev/sdd1               1       15134   121563823+  83  Linux
    
    Command (m for help):w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    
    # ---------------------------------------
    
    # fdisk /dev/sde
    Command (m for help):n
    Command action
    e   extended
    p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-15134, default 1): 1
    Last cylinder or +size or +sizeM or +sizeK (1-15134, default 15134): 15134
    
    Command (m for help):p
    
    Disk /dev/sde:124.4 GB, 124486942720 bytes
    255 heads, 63 sectors/track, 15134 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot    Start       End    Blocks   Id  System
    /dev/sde1               1       15134   121563823+  83  Linux
    
    Command (m for help):w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    
    # ---------------------------------------

    在创建所有必要分区之后,现在应以“root”用户帐户从集群的两个 Oracle RAC 节点使用以下命令将分区的更改情况通知给内核:请注意,在这两个 Oracle RAC 节点上,从 Openfiler 发现的 iSCSI 目标名映射和本地 SCSI 设备名将有所不同。由于卷按名称而不是它们的本地 SCSI 设备名称进行安装,因而不会导致任何问题。

    # partprobe
    
    # fdisk -l
    
    Disk /dev/hda:40.0 GB, 40000000000 bytes
    255 heads, 63 sectors/track, 4863 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot    Start       End    Blocks   Id  System
    /dev/hda1   *         1        13    104391   83  Linux
    /dev/hda2              14        4863    38957625   8e  Linux LVM
    
    Disk /dev/sda:124.4 GB, 124486942720 bytes
    255 heads, 63 sectors/track, 15134 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot    Start       End    Blocks   Id  System
    /dev/sda1             1        15134    297171   83  Linux
    
    Disk /dev/sdb:2147 MB, 2147483648 bytes
    67 heads, 62 sectors/track, 1009 cylinders
    Units = cylinders of 4154 * 512 = 2126848 bytes
    
    Device Boot    Start       End    Blocks   Id  System
    /dev/sdb1             1      1009  2095662   83  Linux
    
    Disk /dev/sdc:124.4 GB, 124486942720 bytes
    255 heads, 63 sectors/track, 15134 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot    Start       End    Blocks   Id  System
    /dev/sdc1               1       15134   121563823+  83  Linux
    
    Disk /dev/sdd:124.4 GB, 124486942720 bytes
    255 heads, 63 sectors/track, 15134 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot    Start       End    Blocks   Id  System
    /dev/sdd1               1       15134   121563823+  83  Linux
    
    Disk /dev/sde:124.4 GB, 124486942720 bytes
    255 heads, 63 sectors/track, 15134 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot    Start       End    Blocks   Id  System
    /dev/sde1               1       15134   121563823+  83  Linux
    阅读(427) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~