极限首页 业界焦点 软件工程师之路 系统工程师之路 网络工程师之路 软件下载 技术社区
 Linux 下安装MySQL
 Oracle 10gR2 RAC+ RHEL4
 Oracle 中如何删除重复数据
 MySQL服务维护笔记
 Oracle HowTo:如何启动或关
 Statspack ORA-00001 uniq
 MySQL 5.0 新特性教程 第一
 MySQL 5.0 新特性教程 第一
 MySQL 5.0 触发器
 MySQL 5.0 新特性教程 第一
 Linux 下安装MySQL
 Oracle 10gR2 RAC+ RHEL4
 Oracle 中如何删除重复数据
 MySQL服务维护笔记
 Oracle HowTo:如何启动或关
 Statspack ORA-00001 uniq
 MySQL 5.0 新特性教程 第一
 MySQL 5.0 新特性教程 第一
 MySQL 5.0 触发器
 MySQL 5.0 新特性教程 第一

Shell 中文手册

Python 2.3 中文手册

Python 2.4 中文手册

Mysql 4.x 中文手册

PHP 4.x 中文手册

Apache 2.x 中文手册
更多手册

站内搜索:
当前位置:首页>>软件工程师之路>>数据库>>正文
在 Linux 和 FireWire 上创建自己的 RAC 集群(3)
时间:2006-03-29 作者:Jeffrey Hunter 来源:数据库在线

 

在 Linux 和 FireWire 上创建自己的 RAC 集群(续)

获取并安装合适的 Linux 内核

概述

接下来的步骤是获取并安装新的 Linux 内核,该内核利用多次登录,支持使用 IEEE1394 设备。在本文先前的版本中,包含有关于下载 Linux 内核的一个补丁版本并对其进行编译的步骤。由于 Oracle 的 Linux 项目开发组 的工作,已经不再需要这些步骤了。他们提供了一个 Red Hat Enterprise Linux 3.0 的预编译内核(它也可以与 Fedora 协同工作),只需下载并安装即可。本部分包含了下载和安装该内核的说明。不过,在开始详细说明如何执行这些操作之前,让我们先用一些时间来讨论在新内核中需要进行的更改。

尽管已经有了针对 Linux 的 FireWire 驱动程序,但它们常常不支持 共享 存储器。通常,当您登录到操作系统时,操作系统将驱动程序与该机器上具体的一个驱动器相连。这种实施方法根本不能用于我们的 RAC 配置。共享存储器(我们的 FireWire 硬盘驱动器)需要被多个节点所访问。我们需要使 FireWire 驱动程序能够提供对驱动器的非独占访问,以便多个服务器 — 即组成集群的节点 — 能够访问同一个存储器。通过在源代码中删除位掩码 ( 该掩码用于在登录期间识别机器 ) ,可以完成这项任务。这样可以对 FireWire 硬盘驱动器进行非独占的访问。集群中的所有其他节点在其登录会话期间,使用相同的经过修改的驱动程序登录到同一个驱动器,因此它们也具有对于该驱动器的非独占访问权。

可能我过早地提到了这个问题,但我希望在深入说明新的 Linux 内核安装细节之前先讨论几个主题。当我们安装新的 Linux 内核(支持对 FireWire 驱动器的多次登录)时,系统将会检测 FireWire 相连的驱动器并将其识别为 SCSI 设备。您将能够使用标准的操作系统工具对磁盘进行分区、创建文件系统等。对于 Oracle9 i RAC ,您必须为所有文件建立分区,并将原始设备绑定到这些分区。本文将利用逻辑卷管理器 (LVM) 在 FireWire 共享驱动器上建立所有所需的分区(通常称为 逻辑分区 )。

我们的实施方法描述了一个双节点集群(每个节点具有一个单独的处理器),每个服务器都运行 Red Hat Linux Fedora Core 1 。切记,在 两个 Linux 节点上都需要安装打过补丁的 Linux 内核。 Red Hat Linux Fedora Core 1 包含内核 linux- 2.4.22 -1.2115.nptl ;我们需要从以下 URL 处下载 Oracle 提供的 2.4.21-9.0.1 Linux 内核: http://oss.oracle.com/projects/firewire/files

在集群的两个节点上执行以下过程:

•  下载以下的文件之一:

kernel- 2.4.21 -9.0.1.ELorafw1.i686.rpm — 用于单处理器

— 或者 —

kernel-smp- 2.4.21 -9.0.1.ELorafw1.i686.rpm — 用于多处理器

•  备份您的 GRUB 配置文件:

在大多数情况下,您要将 GRUB 用于引导加载器。在实际安装新内核之前,请确保备份您的 /etc/grub.conf 文件的一个拷贝:

# cp /etc/grub.conf /etc/grub.conf.original

•  以用户 root 安装新内核:

# rpm -ivh --force kernel- 2.4.21 -9.0.1.ELorafw1.i686.rpm — 用于单处理器

— 或者 —

# rpm -ivh --force kernel-smp- 2.4.21 -9.0.1.ELorafw1.i686.rpm — 用于多处理器

注意: 使用 RPM 来安装新内核还会利用合适的片段来更新您的 grub 或 lilo 配置。除非您希望保留旧的内核镜像,否则不需要向您的引导加载器配置中添加任何新的片段。

以下是我的 /etc/grub.conf 文件在内核安装之前和之后的清单。您可以看到,在我的安装中,我在 2.4.21 -9.0.1.ELorafw1 内核中加入了另一个片段。如果您愿意,可以更改新文件中的( default )项,这样新内核将成为启动的默认内核。在默认情况下,安装程序设置 default=1 ,继续将旧内核作为默认内核。

Fedora Core 1 的原始 /etc/grub.conf 文件

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE:You have a /boot partition.This means that

# all kernel and initrd paths are relative to /boot/, eg.

# root (hd0,0)

# kernel /vmlinuz-version ro root=/dev/hda3

# initrd /initrd-version.img

#boot=/dev/hda

default=0

timeout=10

splashimage=(hd0,0)/grub/splash.xpm.gz

title Fedora Core ( 2.4.22 -1.2115.nptl)

root (hd0,0)

kernel /vmlinuz- 2.4.22 -1.2115.nptl ro root=LABEL=/ rhgb

initrd /initrd- 2.4.22 -1.2115.nptl.img

在安装内核后, Fedora Core 1 的新配置的 /etc/grub.conf 文件

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE:You have a /boot partition.This means that

# all kernel and initrd paths are relative to /boot/, eg.

# root (hd0,0)

# kernel /vmlinuz-version ro root=/dev/hda3

# initrd /initrd-version.img

#boot=/dev/hda

default=0

timeout=10

splashimage=(hd0,0)/grub/splash.xpm.gz

title Fedora Core ( 2.4.21 -9.0.1.ELorafw1)

root (hd0,0)

kernel /vmlinuz- 2.4.21 -9.0.1.ELorafw1 ro root=LABEL=/ rhgb

initrd /initrd- 2.4.21 -9.0.1.ELorafw1.img

title Fedora Core ( 2.4.22 -1.2115.nptl)

root (hd0,0)

kernel /vmlinuz- 2.4.22 -1.2115.nptl ro root=LABEL=/ rhgb

initrd /initrd- 2.4.22 -1.2115.nptl.img

•  添加模块选项:

将以下各行添加到 /etc/modules.conf 中:

options sbp2 sbp2_exclusive_login=0

post-install sbp2 insmod sd_mod

post-remove sbp2 rmmod sd_mod

将串行总线协议模块 ( sbp2 ) 的参数 sbp2_exclusive_login 设置为零是非常重要的,以便允许多个主机并发地登录和访问 FireWire 磁盘。第二行确保 SCSI 磁盘驱动程序模块 ( sd_mod ) 也会被加载,因为 ( sbp2 ) 需要 SCSI 层。如果 ( sd_mod ) 加载,则会自动加载核心的 SCSI 支持模块 ( scsi_mod ) — 不必为它创建单独的项。

•  重新启动机器

重新启动您的机器,进入新的内核。请确保 firewire (ieee1394) pci 卡已插入到机器中!

•  加载 firewire 堆栈

在大多数情况下,在 /etc/rc.sysinit 文件中已经对 FireWire 堆栈加载进行了配置。该文件中所包含的用于加载 FireWire 堆栈的命令是:

# modprobe ohci1394

# modprobe sbp2

在 Red Hat 的旧版本中,情况有所不同,必须手动运行这些命令或者将其包含在启动文件中。在 Fedora Core 1 和更高版本中,这些命令已经包含在 /etc/rc.sysinit 文件中,并在每次启动时运行。

•  重新扫描 SCSI 总线

在内核的旧版本中,我需要运行 rescan-scsi-bus.sh 脚本来检测 FireWire 驱动器。此脚本的目的是通过使用以下命令为节点创建 SCSI 项:

echo "scsi add-single-device 0 0 0 0" > /proc/scsi/scsi

使用 Fedora Core 1 时,应该可以自动检测到磁盘。

•  检查 SCSI 设备

重新启动机器后,内核应该自动将磁盘检测为 SCSI 设备 ( /dev/sdXX ) 。本部分提供了几个命令,这些命令应该在集群的两个节点上运行,以确保成功地检测到 FireWire 驱动器。

在这个配置中,我同时在两个节点上执行以上的过程。在过程完成后,我关闭两台机器,首先启动 linux1 ,然后启动 linux2 。以下的命令和结果来自于我的 linux2 机器。同样,请确认您在两个节点上都运行了以下的命令,以确保两台机器都能登录到共享驱动器。

首先查看该 FireWire 适配器是否已被成功地检测到:

# lspci

00:00.0 Host bridge:Intel Corp. 82845 845 (Brookdale) Chipset Host Bridge (rev 11)

00:01.0 PCI bridge:Intel Corp. 82845 845 (Brookdale) Chipset AGP Bridge (rev 11)

00:1d.0 USB Controller:Intel Corp. 82801DB USB (Hub #1) (rev 01)

00:1d.1 USB Controller:Intel Corp. 82801DB USB (Hub #2) (rev 01)

00:1d.2 USB Controller:Intel Corp. 82801DB USB (Hub #3) (rev 01)

00:1d.7 USB Controller:Intel Corp. 82801DB USB2 (rev 01)

00:1e.0 PCI bridge:Intel Corp. 82801BA/CA/DB/EB PCI Bridge (rev 81)

00: 1f .0 ISA bridge:Intel Corp. 82801DB LPC Interface Controller (rev 01)

00: 1f .1 IDE interface:Intel Corp. 82801DB Ultra ATA Storage Controller (rev 01)

00: 1f .3 SMBus:Intel Corp. 82801DB/DBM SMBus Controller (rev 01)

01:00.0 VGA compatible controller:nVidia Corporation NV34 [GeForce FX 5200] (rev a1)

02:00.0 Ethernet controller:Linksys Network Everywhere Fast Ethernet 10/100 model NC100 (rev 11)

02:01.0 FireWire (IEEE 1394): Texas Instruments TSB12LV26 IEEE-1394 Controller (Link)

02:05.0 Ethernet controller:Realtek Semiconductor Co., Ltd. RTL-8139/ 8139C / 8139C + (rev 10)

02:07.0 Multimedia audio controller:C-Media Electronics Inc CM8738 (rev 10)

第二步,查看这些模块是否已被加载:

# lsmod |egrep "ohci1394|sbp2|ieee1394|sd_mod|scsi_mod"

sd_mod 13808 0

sbp2 20556 0

scsi_mod 109864 3 [sg sd_mod sbp2]

ohci1394 28904 0 (unused)

ieee1394 63652 0 [sbp2 ohci1394]

第三步,确认已检测到磁盘并由内核创建了一个项目:

# cat /proc/scsi/scsi

Attached devices:

Host:scsi0 Channel:00 Id:00 Lun: 00

Vendor:Maxtor Model:OneTouch Rev: 0200

Type:Direct-Access

现在让我们确认 FireWire 驱动器可以被多个登录所访问,并显示有效的登录:

# dmesg | grep sbp2

ieee1394:sbp2:Query logins to SBP-2 device successful

ieee1394:sbp2:Maximum concurrent logins supported: 3

ieee1394:sbp2:Number of active logins: 2

ieee1394:sbp2:Logged into SBP-2 device

ieee1394:sbp2:Node[01:1023]:Max speed [S400] - Max payload [2048]

ieee1394:sbp2:Reconnected to SBP-2 device

ieee1394:sbp2:Node[01:1023]:Max speed [S400] - Max payload [2048]

从以上输出中,您可以看到我们拥有的 FireWire 驱动器能够支持来自多达 3 个服务器的并发登录。您的驱动器的芯片组应该支持 RAC 集群中所有节点的并发访问,这很重要。

•  对 SCSI 设备检测的故障诊断

如果您在检测 SCSI 设备的任何步骤(如上所述)中遇到问题,可以尝试以下操作:

# modprobe -r sbp2

# modprobe -r sd_mod

# modprobe -r ohci1394

# modprobe ohci1394

# modprobe sd_mod

# modprobe sbp2

创建 “oracle” 用户和目录(在两个节点上执行)

让我们继续我们的示例,创建 UNIX dba 组和 oracle 用户 id 以及所有的相关目录。

# mkdir /u01

# mkdir /u01/app

 

# groupadd -g 115 dba

 

# useradd -u 175 -g 115 -d /u01/app/oracle -s /bin/bash -c "Oracle Software Owner" -p oracle oracle

注意: 当您为每个 RAC 节点设置 Oracle 环境变量时,请确保为每个 RAC 节点分配唯一的 Oracle SID !

对于此示例,我使用:

  • linux1 : ORACLE_SID=orcl1
  • linux2 : ORACLE_SID=orcl2

注意: Oracle Universal Installer (OUI) 在 /tmp 目录中需要最多 400MB 空闲空间。

您可以通过运行以下命令来查看 /tmp 中的可用空间:

# df -k /tmp

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/hda3 36384656 6224240 28312140 19% /

如果因为某种原因,您在 /tmp 中没有足够的空间,则可以临时在其他文件系统中创建空间,并在安装期间将您的 TEMP 和 TMPDIR 指向该空间。以下是完成此任务的步骤:

# su -

# mkdir /<AnotherFilesystem>/tmp

# chown root.root /<AnotherFilesystem>/tmp

# chmod 1777 /<AnotherFilesystem>/tmp

# export TEMP=/<AnotherFilesystem>/tmp # used by Oracle

# export TMPDIR=/<AnotherFilesystem>/tmp # used by Linux programs

# like the linker "ld"

当 Oracle 的安装完成时,您可以使用以下命令删除该临时目录:

# su -

# rmdir /<AnotherFilesystem>/tmp

# unset TEMP

# unset TMPDIR

在两个节点上都创建了 “ oracle ”UNIX 用户 id 后,通过使用以下的 .bash_profile ,确保正确地建立了环境:

# .bash_profile

 

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

 

alias ls="ls -FA"

 

# User specific environment and startup programs

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/ 9.2.0

 

# Each RAC node must have a unique ORACLE_SID.(i.e. orcl1, orcl2,...)

export ORACLE_SID=orcl1

 

export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin

export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin

export ORACLE_TERM=xterm

export TNS_ADMIN=$ORACLE_HOME/network/admin

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib

export CLASSPATH=$ORACLE_HOME/JRE

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib

export THREADS_FLAG=native

export TEMP=/tmp

export TMPDIR=/tmp

export LD_ASSUME_KERNEL= 2.4.1

 

  共8页: 上一页 [1] [2] 3 [4] [5] [6] [7] [8] 下一页   
推荐】【 】【关闭


关于极限 | 站内地图 | 意见反馈 | 广告服务 | 数据服务 | 联系我们
本站所刊登的文章,技术资料,软件均整理于网络资源或本站原创,转载请务必联系原作者或本站。
Copyright ? 2001-2004 UPLinux.com All Rights Reserved.
本站唯一联系信箱:
京ICP备05010519