免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 21737 | 回复: 58
打印 上一主题 下一主题

Oracle 10gR2 RAC+ RHEL4 + VMWare GSX 简明安装步骤 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-19 21:35 |只看该作者 |倒序浏览
前几天做了这个测试,看到我们这个板里面有很多同学对学习RAC感兴趣,但是又苦于没有条件.

我的风格大家也熟悉了,我也不多废话,也不愿意写什么手册,我认为搞稍微复杂一点技术的工程技术人员的最基本的能力就是去做调研和信息搜集,什么事情光靠别人很详细的喂给你,你是永远无法成为高手的,过程本身很麻烦,有时候甚至很让人痛苦和气恼,但是这才是真正能够把你推动到一个"高手"的位置的真正动力. 动手越少,水平越糟。

下面是我前几天做的一个简明步骤,不想写复杂的.我觉得已经足够帮有动手能力的同学过关了.


********************************************
Oracle 10gR2 RAC + RHEL AS4U2 +VMWare GSX 3.2.0   
Deployment brifing guide 0.9
Author: nntp                                          20060119
转载不得修改,请注明作者时间和出处
********************************************



1. 环境

自用的测试工作站一台,如果你的配置环境和我差很远,你就不要玩乐,你会很痛苦的.


------------硬件环境--------------------------------------------------------
CPU: AMD Althon64 3200+ x1
Mem: 2G DDR400
Storage: 1x10GB ATA for Host OS,  2x80G SATA for application

------------Host 的环境----------------------------------------------------------------------
SuSE Enterprise Linux Server 9 SP3 with latest errata Kernel from Novell YOU
(AMD64/EM64T version)

10GB上安装的是我的上面的这个OS,用来做Host OS, 并且已经调优过. (不会这种环境下linux调优的同学,你做出来的性能会和我有不少差距)

2个80GB硬盘,我用linux MD 做软RAID, RAID level 是0, 并且作了调优(不会这种环境下linux阵列配置和优化的同学,你做出来的性能会和我有不少差距)

VMWare gsx3.2.0 安装在 10GB硬盘上,也作了一些小的优化工作(你在VTN上查得到怎么做优化).

80GB做RAID0就变成一个160GB的LUN. 我划乐40GB出来, mount 到  /vmegg上

我用的这个文件系统是ReiserFS, 并作了文件系统级的性能优化.

vmegg的结构如下

/vmegg
....../rac
........./rhel4
............/n1
............/n2
............/share


各位同学自己建好上面这些目录.


-------------------安装的大概步骤------------------------

步骤一: 安装前准备及Guest OS安装配置
步骤二: 安装Oracle 10gR2 clusterware
步骤三: 安装Oracle 10gR2 database
步骤四: 配置netca
步骤五: 配置dbca创建数据库
步骤六: 校验RAC
------------------------------------------------------------

============ 步骤一 安装前准备及Guest OS安装配置=======================
Host OS 准备

1. 从Oracle OTN下载 oracle 10gR2 for x86 linux,下2个zip, 一个是clusterware zip,一个是database zip, comp CD你可以下,我是懒的弄
2. 准备的RHEL AS4U2(x86), 你也可以用CentOS 4.2(x86)
3. 搞清楚你的linux的kernel version
4. 从Oracle OTN下载 ocfs2 , ocfs tools, ocfs console,  ASMLib, ASMLib support & utility,记住这些都是针对你的kernel的,不要下错
5. VMWare gsx 3.2.0 for linux
6. 我的工作站是没有显示器的,我的工作都是在笔记本上作的, 大家都知道Oracle的安装是需要X的,所以你可以VNC过去,也可以在本地用Xserver.
    我用的是ReflectionX,因为还可用来连其他的Unix(HP-UX, AIX等). 这个完全是个人喜好,你搞得定什么用什么.
7. 在笔记本上配置好RelfectionX,做好连接host上的vmware console


Guest OS安装

1. 泡杯茶,会耗不少时间, 我一边安装一边看DVD的,当中会有很多等待时间. 虽然我后来用了几个自动化的方式 .

2. 在vmware console 创建你的 vmware guest OS, 取名 node1, node2, 选择custome create-> Redhat Enterprise Linux ,其它都是默认. 内存选择1G(>800MB你就看不到warning乐), 硬盘选择 LSI bus controller, 大小选择10GB, 建立方式选择 pre-allocated ,也就是马上就创建这个vmdk, 我不喜欢split to 2GB,就把默认的打勾给去掉了.因为我的Host OS以及mount filesystem已经做过优化,我喜欢一个独立的大文件,你们按照自立的路子来做,不要盲目跟我.

3. 创建好后vmware guest OS之后, 给每一个guest 加上一块NIC

4. 关掉vmware console, 这个时候你的两个vmware guest OS都创建好了,分别在n1 n2目录下面,而且每个都加了1个NIC,硬盘都是LSI, 并且大小10GB,而且都预创建好了,并且没有分割成2GB一块

6.  看到很多cluster in vmware的介绍在创建share disk的时候,都是什么用一个vmware guest OS添加vmdk然后修改vmx,然后把另外一个vmware guest的vmx再添加进去,我很不喜欢这种套路。我很少用vmware workstation,所以不知道最新版本是否有vdiskmanager.反正我在gsx里面一直用vdiskmanager.

ssh到你的 Host OS里面(现在是我的SLES9SP3).  到 /vmware/rac/rhel4/share下面,运行 vmware-vdiskmanager 创建几个vmdk.  这里就有点讲究了


如果你在看我的这个文章之前,还没有搞清楚ORACLE RAC的基本结构, raw, ASM, ocfs2的概念,你就不要看下去了,浪费时间.

Oracle RAC 本质上是借鉴了很多Alpha TruCluster的技术,但是也有了很多折衷的设计。 它需要存放OCR, CRS voting 信息的共享空间, 还需要空间给ASM for oracle data, 所以
在存储的布局上,有两种方式,要么是 raw for OCR, CRS voting , ASM for data, 要么是 ocfs2 for OCR, CRS voting, ASM for data.
至于以前那种 raw for OCR, CRS voting, CRS for data的做法,我是不考虑了,做做学习用途还可以,用在production环境是给自己吃药.

所以,如果你选择第一种,你的vmdk这样建,

vmware-vdiskmanager 创建 pre-allocated并且是lsi contoller的硬盘 200MB 一个 for raw for OCR
vmware-vdiskmanager 创建 pre-allocated并且是lsi contoller的硬盘 200MB 一个 for raw for CRS voting
vmware-vdiskmanager 创建 pre-allocated并且是lsi contoller的硬盘 1GB 四个,  2个for ASM Oracle data, 2个for flash recovery area, 你不玩flash recovery也可以省略掉

如果你选择第二种,你的vmdk这样建,

vmware-vdiskmanager 创建 pre-allocated并且是lsi contoller的硬盘 1GB一个 for ocfs2 for OCR + CRS voting
vmware-vdiskmanager 创建 pre-allocated并且是lsi contoller的硬盘 1GB 四个for ASM for Oracle data & flash recovery area (同上)



raw没有什么有意思的,我因为还要在这个环境作其他的test,所以就选择第二种.

这样做好后,你的 /vmware/rac/rhel4/share目录就会产生你刚才创建的这些vmdk了.

7. 分别到 n1和n2的目录,打开node1.vmx 和node2.vmx, 在最后空白处添加这几段内容

scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
scsi1.sharedBus = "virtual"

这段是打开 scsi1上的使用,并且设置成virtual, controller设置成lsilogic

然后依次添加

scsi1:1.present = "TRUE"
scsi1:1.mode = "independent-persistent"
scsi1:1.filename = "/vmegg/rac/rhel4/share/ocfs.vmdk"
scsi1:1.deviceType = "plainDisk"

scsi1:2.present = "TRUE"
scsi1:2.mode = "independent-persistent"
scsi1:2.filename = "/vmegg/rac/rhel4/share/asm1.vmdk"
scsi1:2.deviceType = "plainDisk"

scsi1:3.present = "TRUE"
scsi1:3.mode = "independent-persistent"
scsi1:3.filename = "/vmegg/rac/rhel4/share/asm2.vmdk"
scsi1:3.deviceType = "plainDisk"

scsi1:4.present = "TRUE"
scsi1:4.mode = "independent-persistent"
scsi1:4.filename = "/vmegg/rac/rhel4/share/asm3.vmdk"
scsi1:4.deviceType = "plainDisk"

scsi1:5.present = "TRUE"
scsi1:5.mode = "independent-persistent"
scsi1:5.filename = "/vmegg/rac/rhel4/share/asm4.vmdk"
scsi1:5.deviceType = "plainDisk"


这样就把刚才创建的那几个vmdk添加好了

最后添加这个

disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"


这段是对vmware使用共享硬盘的方式进行定义,我经常看到很多同学在装RHCS in vmware的时候说这个不正常,那个不正常,你们也可以借鉴一下这个配置
大多数人都知道设置 disk.locking ="false" 却漏掉dataCache

保存退出之后,重新打开你的vmware-console,你就可以看到2个vmware guest OS的配置中,都有这些硬盘出现了.  

其实到现在为止还是一个超级简单的工作.

在你的vmware-console里面edit config 点进看看,但是不要修改和save. !切记,而且之前修改vmx的时候,关掉你的vmware-console

8. 然后就安装你的vmware guest OS,  安装的时候,包选择default,然后点custom进去加几个必需的,  Development Tools, Legacy Software Development Libraries, Kernel Development, Editor, System tools

9. 配置你的2个网卡的固定IP,hostname, DNS, gateway, time server (NTP)

node1:

hostname node1pub
eth0 192.168.0.11
eth1 10.1.1.1.1


node2

hostanme node2pub

eth0 192.168.0.22
eth1 10.1.1.1.2

gateway, DNS就按照自己的需要配

NTP我强烈建议你们配一个,不知道NTP的,后面有古怪事情不要问我.

10. 安装结束后,进入guest OS

修改 /etc/hosts

如下

127.0.0.1   localhost   (必须要这样)

192.168.0.11   node1pub
192.168.0.22   node2pub

10.1.1.1 node1prv
10.1.1.2 node2prv

192.168.0.111 node1vip
192.168.0.222 node2vip

两个node都要一样.


修改后要确认这个hosts 都正确 (ping)

11.  ssh-keygen for root,    dsa/rsa 1024bit  我选择空的 passphase,你可以加你的passphase,但是后面你要ssh-agent $SHELL建立等效,我怕麻烦就省略掉了.

     cd ~/.ssh
     cat  *rsa.pub >> authorized_keys
     cat *dsa.pub >> authorized_keys2
     
    copy .ssh/下面这些到  node2 的 ~/.ssh下面

这些都是基本功,我就不废话了,不熟悉这个的就不要往下看了.

12. 分别在每个node 上做这些事情

   ssh localhost
   ssh node1pub
   ssh node2pub
   ssh node1prv
   ssh node2prv


13. 这个步骤和RAC没有关系,但是也是好习惯之一,检查你的service 状况,disable掉所有不需要用的service ,腾出resource给你的RAC, 什么cups之类乱七八糟的.


14. group add dba oinstall 组在两个node上, 创建oracle 用户, 主组oinstall, 附加组是dba和disk

然后和前面执行root ssh的操作完全一样,执行一次,这步非常重要,漏掉了肯定过不下去.

15. mkdir /u01/app/oracle 在2个node上
  chown  -R oracle.oinstall
  chmod  -R 775

这个目录给oracle和clusterware系统的
   

mkdir /u02/oradata/orcl

chown -R oracle.dba

这个目录给 ocfs2用来装OCR, CRS voting 的

16. 修改你的 /etc/sysctl.conf ,添加这些kernel 参数,这些都是老一套了,大家应该都很熟悉了

net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000


17. 修改 ulimits 如果你想要修改的话

vi /etc/sysconfig/limits.conf

oracle          soft    nproc   2047
oracle          hard    nproc   16384
oracle          soft    nofile  1024
oracle          hard    nofile  65536


18. 修改 pam.d login

vi /etc/pam.d/login

最后添加  session required /lib/security/pam_limits.so


19. 增加 hancheck-timer 模块在2个node上

先看一下有没有  find /lib/modules -name "hangcheck-timer.ko"

然后加上去  echo "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" >> /etc/modprobe.conf

然后把这个模块调起来 modprobe hangcheck-timer
然后检查是否工作正常了 grep Hangcheck /var/log/messages | tail -2
看到类似这个的信息就表明工作正常了 Jan 18 01:08:19 n1pub kernel: Hangcheck: starting hangcheck timer 0.5.0 (tick is 30 seconds, margin is 180 seconds).

20. 安装ocfs2 , ocfs2的console的rpm

21. 在每个node 上这样操作

进入X, 然后运行 ocfs2console, 把你的2个node都添加进去

然后编辑 /etc/init.d/o2cb, 删除掉 靠近配置开头的那些带 #的配置行

然后 /etc/init.d/o2cb offline ocfs2
/etc/init.d/o2cb unload ocfs2
/etc/init.d/o2cb configure ocfs2  回答y 就可以了

22. 在一个 node上 mkfs.ocfs2 -b 4k -C 32k -L oradatafiles /dev/sdb1   (就是前面创建的第一个vmdk)

23. 在每个node上

mount -t ocfs2 -o datavolume /dev/sdb1 /u02/oradata/orcl  
修改你的 /etc/fstab , 添加 类似这样的行
/dev/sdb1               /u02/oradata/orcl       ocfs2   _netdev,datavolume      0 0
到这里,我们的ocfs2 for OCR, CRS voting 就OK了

24. 修改 /etc/sysconfig/o2cb

把threshhold 的 值设置成 601

25. 在每个node上

安装你的 ASMLibs, tools, support 三个rpm文件

然后运行 /etc/init.d/oracleasm configure

回答 oracle , dba, y, y 就可以了

26.  创建ASM

在一个node上:

/etc/init.d/oracleasm  createdisk  VOL1 /dev/sdc1
/etc/init.d/oracleasm  createdisk  VOL2 /dev/sdd1
/etc/init.d/oracleasm  createdisk  VOL3 /dev/sde1
/etc/init.d/oracleasm  createdisk  VOL4 /dev/sdf1

记住,ASM在linux下面处理的对象是 partition,不是disk, 所以你那些vmdk要linux 下面partition好才能用,fdisk 就用type 83就可以了

创建好后,  在这个node 上运行  /etc/init.d/oracleasm listdisks  查看


27, 在另外一个node 上

/etc/init.d/oracleasm scandisks
/etc/init.d/oracleasm listdisks  查看

28. 在每个node上

修改 oracle用户家目录下的 .bash_profile

修改成大概这个样子

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORA_CRS_HOME=$ORACLE_BASE/product/crs
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 PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/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


第二个节点的 ORACLE_SID=orcl2  其他都一样



=============步骤二: 安装Oracle 10gR2 clusterware===============================

1.  unset 一些环境变量

$ unset ORA_CRS_HOME
$ unset ORACLE_HOME
$ unset ORA_NLS10
$ unset TNS_ADMIN

检查你的变量
$ env | grep ORA
ORACLE_SID=orcl2
ORACLE_BASE=/u01/app/oracle
ORACLE_TERM=xterm

2. 用oracle 用户login , 然后运行你的unzip 之后的那个clusterware目录下的runInsaller 进入图形安装

3. 确认你的安装目录是/u01/app/oracle/product/crs

4. 修改 你的clustername 从crs到一个随便你想要的名字

然后增加  
node1pub  node1prv node1vip
node2pub  node2prv node2vip

5. 然后指定 eth0 的类型时public

6. 然后制定你的OCR 和mirror

/u02/oradata/orcl/OCRFile
/u02/oradata/orcl/OCRFile_mirror

7. 然后指定你的voting

/u02/oradata/orcl/VotingFile
/u02/oradata/orcl/VotingFile_mirror1
/u02/oradata/orcl/VotingFile_mirror2

8. 然后就开始安装了,当众会让你用完全的root身份在每个节点上运行orainstRoot.sh,你就一个节点一个节点运行,不要抢时间,一个个来

9. 然后要求你在每个节点上用完全的root权限执行 root.sh,你也一样,一个个来,一定要等一个做好了,然后做另外一个

10. 做第二个时候,如果告诉你你的eth0不是public,你就在第二个节点,用oracle用户在 X里面运行vipca, 然后配置好你的vip 信息(虚拟IP的信息,很容易配的)


11. clusterware 就安装好了.

确认一下.

$ /u01/app/oracle/product/crs/bin/olsnodes -n
node1pub  1
node2pub  2


$ ls -l /etc/init.d/init.*
-r-xr-xr-x  1 root root  1951 Oct  4 14:21 /etc/init.d/init.crs*
-r-xr-xr-x  1 root root  4714 Oct  4 14:21 /etc/init.d/init.crsd*
-r-xr-xr-x  1 root root 35394 Oct  4 14:21 /etc/init.d/init.cssd*
-r-xr-xr-x  1 root root  3190 Oct  4 14:21 /etc/init.d/init.evmd*

===============步骤三: 安装Oracle 10gR2 database========================

1.1.  unset 一些环境变量

$ unset ORA_CRS_HOME
$ unset ORACLE_HOME
$ unset ORA_NLS10
$ unset TNS_ADMIN

检查你的变量
$ env | grep ORA
ORACLE_SID=orcl2
ORACLE_BASE=/u01/app/oracle
ORACLE_TERM=xterm

2. 用oracle用户,运行你unzip之后的那个database目录下的runInstaller

3. ORACLE安装目录指定到 /u01/app/oracle/product/10.2.0/db_1

4. 把2个node选择上

5. 选择 Install database Software only

6. 会要求你用完全的root权限运行 root.sh ,分别在2个node上一一运行,不要抢时间

7. 安装完毕


==================步骤四: 配置netca==========================

1. oracle 用户在一个node上运行 netca

2. 选择所有node

3. 选择  Listener configuration

4.添加一个LISTEN, 1521 port

5. 回到开始界面,选择Naming Methods configuration

6. 把Local Naming和Easy Naming 添加进去.然后结束配置

7. 确认一下

$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'
LISTENER_NODE1PUB




==============步骤五: 配置dbca创建数据库=========================

1. 用oracle用户运行 dbca

2. 选择custom database

3. 输入数据库的全局名,比如orcl

4. 给你的系统的不同角色建立密码,我都选择same as ....

5. 选择用ASM管理数据库

6. 输入你前面设定的管理员密码,并把SPFILE 设定成/u02/oradata/orcl/dbs/spfile+ASM.ora

7.进入ASM配置界面, create NEW, 名字叫做DATA
然后下面你会看到你前面创建的4个ASM VOL1-4, 你选择  1 和2, "Redundancy" 选择 Normal.
这样 DATA diskgroup就创建好了

8. 回到ASM界面后. 仍旧选择create new, 然后名字叫做FLASH_RECOVERY_AREA, 选择第3和4两个卷,然后"Redundancy" 选择External

9. 然后OK结束ASM配置

10.Database File Locations 选择DATA

11. Recovery Configuration 选择刚才创建的 FLASH_RECOVERY_AREA diskgroup

12. 接下来默认的就可以了

13. Database Services 这里,你选择Add你一个新的service, 随便叫名字,比如ractest

然后选择 TAF Policy,是Basic

14. 开始创建数据库


===================步骤六: 校验RAC============================

1.用oracle用户login, 运行

$ srvctl status database -d orcl
Instance orcl1 is running on node node1pub
Instance orcl2 is running on node node2pub

2.
$ srvctl status service -d orcl -s ractest
Service orcltest is running on instance(s) orcl2, orcl1


3.
    $ srvctl status nodeapps -n node1pub
    VIP is running on node:  node1pub
    GSD is running on node: node1pub
    Listener is running on node: node1pub
    ONS daemon is running on node: node1pub


4.
$ srvctl status asm -n node1pub
ASM instance +ASM1 is running on node node1pub.

5.
$ srvctl config nodeapps -n node1pub -a -g -s -l
VIP exists.: /node1vip/192.168.1.111/255.255.255.0/eth0:eth1
GSD exists.
ONS daemon exists.
Listener exists.

6. 运行 sqlplus  /nolog

SQL> connect /as sysdba
SQL>

    SELECT
        inst_id
      , instance_number inst_no
      , instance_name inst_name
      , parallel
      , status
      , database_status db_status
      , active_state state
      , host_name host
    FROM gv$instance
    ORDER BY inst_id;

     INST_ID  INST_NO INST_NAME  PAR STATUS  DB_STATUS    STATE     HOST
    -------- -------- ---------- --- ------- ------------ --------- -------
           1        1 orcl1      YES OPEN    ACTIVE       NORMAL    node1pub
           2        2 orcl2      YES OPEN    ACTIVE       NORMAL    node2pub




7.其他的测试,测试方法n多,你用sqlplus, asmcmd, 或者通过Web进 enterprise manager都可以.

随便你了.


就这些了,不要问我在这个doc里面的问题.

[[i] 本帖最后由 nntp 于 2006-1-20 21:09 编辑 [/i]]

论坛徽章:
0
2 [报告]
发表于 2006-01-20 00:24 |只看该作者
很详细 不过能不能改一下禁止使用表情!

论坛徽章:
0
3 [报告]
发表于 2006-01-20 16:41 |只看该作者
版主就是版主,我试过好多次了,不是这个问题,就是那个问题,这次我要按版主的步骤再去试验一吧。

谢谢

论坛徽章:
0
4 [报告]
发表于 2006-01-20 23:09 |只看该作者
Oracle RAC 本质上是借鉴了很多Alpha TruCluster的技术,但是也有了很多折衷的设计。
---------------------------------------
nntp,能不能对照TRUCLUSTER把和AC把两者的相同之处讲讲,我想知道到底那些东西借鉴了truconster

论坛徽章:
0
5 [报告]
发表于 2006-01-21 03:23 |只看该作者
原帖由 fengwy 于 2006-1-20 23:09 发表
Oracle RAC 本质上是借鉴了很多Alpha TruCluster的技术,但是也有了很多折衷的设计。
---------------------------------------
nntp,能不能对照TRUCLUSTER把和AC把两 ...



Ok, 我虽然比较熟悉TruCluster和Tru64,但是系统内部的信息和知识是很庞大的,我也所知不多,就说一些我比较清楚地和大家分享

1. cache fusion

Oracle RAC从 版本9开始推出来,最吸引人的(也是大吹特吹的)就是 cache fusion了

因为实现了cache fusion,所以Oracle的不同节点才可以几乎实时的cache 同步, TruCluster在很早之前就实现了SSI(Single System Image), 在Alpha系统上通过插MCA(Memory Channel Adapter) 实现多个node之间集群系统的cache 一致性操作.

现在RAC的 cache fusion还是通过private network 交换的(GbE network),但是RAC已经可以用Infiniband来搭了,我会以后有空给大家介绍这种做法的.本质上Infiniband network 做hb, cache fusion 基本上就是TruCluster MCA的地位和作用.


这个是他们的相同点,不同点是 oracle RAC的cache fusion 是DB 对DB的操作,不是OS里面的,TruCluster则是在OS上的操作,技术实现上更胜一筹.不过有意思的是 Oracle 10g从Release 2开始的clusterware,也可以做一些有限的保护第三方的应用的集群了.  呵呵. DEC的伟大和技术先进性,可见一斑. 早在n年前就实现的技术.


2. CDSL

CDSL = Context Dependent Symbolic Links 就是上下文关联的符号连接.

DEC Tru64 Unix很早就可以实现Clusterwide filesystem, (请注意是clusterwide,不是clusteraware,我在这个板的的另外一个帖子也有说明).

也就是说,可以在TrueCluster的不同node 之间,建立一个集群文件系统,放在共享存储上,使得多个节点可以随意访问共享存储,修改操作数据和程序等等.

而且TrueCluster还可以把自己,也就是节点操作系统自己,完全的放到这个集群文件系统上,实现ClusterRoot Filesystem  这个是很牛B的.因为所有node除了裸机,连OS都只有五物理的一份,而且是shared,并且支持并发使用的.

Oracle最近推出的是OCFS2,  当初OCFS是ASM还没有出来之前搞出来的,因为你要做RAC,多个节点肯定要操作一个共享存储,但是同时操作的时候,每个节点的文件系统都是由自己的OS控制和感觉的,不会互相说话沟通,所以必然造成共享数据的dirty read/dirty write出现问题,甚至很容易破坏数据和应用程序. 为了建立一个在整个集群所有成员节点都能够协调和感觉的文件系统,所以就搞了ocfs, ocfs 当时主要用来放voting(quorum)和membership service的.

如果大家现在再去看OCFS2,就会发现除了我们安装Oracle RAC的时候可以把CRS, OCR还有ASM SPFile放到ocfs2上去,还可以把整个Oracle_HOME也放上去,所有的node都只有一份ORACLE_HOME.

所以你可以看出就目前ocfs2的技术,和n年前的Trucluster clusterwide filesystem比较,还是有很大的差距. 当然我这个也是废话,稍微了解点行业背景老手都知道,DEC和Oracle在技术上根本不是一个层面的公司. DEC的技术产品和员工,对现在的Intel, AMD, HP, Compaq, Oracle, Lifekeeper还有很多很多公司产生了巨大的历史影响.


3. DLM

DLM= Distributed Lock Manager

既然是多个node一起工作,存取集群文件系统上的数据,就需要同步和加锁.  一个机器上的同步和锁管理有点操作系统基本知识的人都可以理解,实现起来还是很成熟的,但是现在是多个机器在同时协同工作,要让他们这些OS的locking 和sync都得互相协调和通信,就需要分布式的Lock Manager.

DEC很早就实现了完整的DLM机制,Trucluster的DLM机制是非常成熟和牛B的. Locking Manager的机制和设计好坏,直接影响到整个机群的运行效率.

Oracle 目前在数据库的范围内实现了DLM,相比OS层面的实现,你也可以知道大概了.

RAC目前的扩展比还不是最理想的, 4台服务器组成的RAC比2台组成的,性能并不是2倍的关系. 这也和DLM实现优劣有一定的关系

4. DRD

DRD= Device Request Dispatcher

DRD就是在其集群中建立对于本地和共享存储的一个虚拟界面,使得存取本地和远程的数据都是一样的操作. Oracle的ASM就需要 DRD实现作为基础. 配置过ASM的同学应该对ASM的便捷性是有深刻影响的.

我个人觉得ASM是目前Oracle RAC实现中比较成功的一点,ASM的DRD实现做得比较好,而且的确在客观上,大大降低了DBA team对于DB storage管理的复杂性.

TruCluster的DRD是用来支持他的CFS(clusterwide filesystem)的,可以用来放不仅仅是数据库的所有其他数据和应用,应用范围和成熟度要比ASM高的多,ASM目前仅能放Oracle data , tablespace等. 其他文件类型也只能放有限的几种.


我对Tru64 Unix/Cluster所知有限,当你面对这样牛B的一个设计的时候,才知道自己所学连芝麻都不如. 只是可惜了一帮不懂技术的混蛋. 把DEC的一大堆好东西,可以真正推动社会发展的技术和思想给糟蹋了.

抛砖以引玉,欢迎大家comment.

论坛徽章:
0
6 [报告]
发表于 2006-01-21 20:55 |只看该作者
看这篇帖子才是长知识,惊为天人!!!

论坛徽章:
0
7 [报告]
发表于 2006-01-22 13:21 |只看该作者
斑竹,真的很佩服你。

论坛徽章:
0
8 [报告]
发表于 2006-01-23 22:43 |只看该作者
DEC的nonstop系统,真是被hp给浪费了.
到目前为止,也只有true unix的nonstop才是唯一真正的群集系统.
原来在sco unixware7系统上实现过,可惜未能推广开,真是可惜.

论坛徽章:
0
9 [报告]
发表于 2006-01-23 23:40 |只看该作者
原帖由 unix007 于 2006-1-23 22:43 发表
DEC的nonstop系统,真是被hp给浪费了.
到目前为止,也只有true unix的nonstop才是唯一真正的群集系统.
原来在sco unixware7系统上实现过,可惜未能推广开,真是可惜.


你错了.

nonstop配合硬件,实现的并不是集群,是容错机. 这是2个范畴上的东西

www.compaq.com/productbulletin上你可以看到详细的nonstop的规格.

东西是在sco unixware上弄得,但是改变比较大的,定位和具体的安装实施的状况和HA集群和不一样.

论坛徽章:
0
10 [报告]
发表于 2006-01-24 20:56 |只看该作者
这样的帖子怎么还不加精,nntp小心激起民愤

[ 本帖最后由 fengwy 于 2006-1-24 21:03 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP