Oracle RAC 之表决磁盘(votedisk)


今天是2014-03-26,因分析deadlock耽误了写RAC的东西,今天再来写篇RAC中表决磁盘的管理日志。特此记录一下。
 表决磁盘(votedisk)是为因网络导致脑裂的情况而创建的。表决磁盘在11G存储在ASM中,且如果放入ASM将有几点要求。
 第一:表决磁盘文件必须全部放入ASM中;
 第二:表决磁盘存在asm中的个数不能删除和添加,而是通过asm的normal,high、external冗余级别决定的。
 如:在normal中必须有3个故障组存在3个votedisk,在high中必须要有5个故障组存在5个votedisk,那么在external只有1个votedisk
 第三:表决磁盘文件在11G不在支持dd命令对其的备份和还原,而是支持crsctl相关命令
 第四:表决磁盘文件的个数要是奇数,便于投票选举,且表决磁盘文件的个数最多为15个,但一般没必要超过5个。
 介绍一下对于网络导致脑裂中表决磁盘的选举过程。
 假如我有三个RAC实例节点分别是A,B,C那么当A节点宕机了,那么在11G中通过先尝试停止响应的资源,进而剔除该节点,那么为什么会剔除该节点呢?那是因为当发生脑裂的时候
 当发生脑裂的时候被分割成两部分,A 为一部分投票为1,BC为一部分投票为2,那么更具选举会选择票数多的那方,从而剔除A;刚刚这是三个节点的例子
 那么对于两个实例组成的RAC怎么处理呢?那么这个时候表决磁盘就起到一定的作用了,当脑裂发生了,那么每一方都持一票,谁也不能剔除谁?这可怎么办呢?那么Oracle会选择
 存留首先获得表决磁盘文件多的那方,将组成一个集群从而剔除另一方。通常我们所说的磁盘心跳就是通过共享磁盘中的表决磁盘来检测的。
 eg:
 [grid@rac-one peer]$ crsctl get css disktimeout
 CRS-4678: Successful get disktimeout 200 for Cluster Synchronization Services.
 [grid@rac-one peer]$
通过ocssd进程来管理
 如何移动表决磁盘文件到另一asm磁盘组呢?
 eg:
 [grid@rac-two ~]$ sqlplus / as sysasm
 
SQL*Plus: Release 11.2.0.4.0 Production on Tue Mar 25 23:31:24 2014
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 

Connected to:
 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
 With the Real Application Clusters and Automatic Storage Management options
 
SQL> col name for a20
 SQL> col path for a40
 SQL> set linesize 200
 SQL> select a.name,b.name,b.path,b.voting_file from v$asm_disk b,v$asm_diskgroup a where a.group_number=b.group_number;
 
NAME                NAME                PATH                                    V
 -------------------- -------------------- ---------------------------------------- -
 DATADG              DATADG_0000          /dev/asm-diskg                          N
 TESTDG              TESTDG_0004          /dev/asm-diskh                          N
 TESTDG              TESTDG_0000          /dev/asm-diski                          N
 TESTDG              TESTDG_0001          /dev/asm-diskj                          N
 TESTDG              TESTDG_0003          /dev/asm-diskf                          N
 GIDG                GIDG_0001            /dev/asm-diskc                          Y
 TESTDG              TESTDG_0002          /dev/asm-diskk                          N
 GIDG                GIDG_0000            /dev/asm-diskd                          Y
 GIDG                GIDG_0002            /dev/asm-diske                          Y
 DATADG              DATADG_0001          /dev/asm-diskb                          N
 
10 rows selected.
 
SQL> exit
 另外还可以使用crsctl query css votedisk 获得信息
 [grid@rac-two ~]$ crsctl query css votedisk
 ##  STATE    File Universal Id                File Name Disk group
 --  -----    -----------------                --------- ---------
  1. ONLINE  3da4160ba0334f66bf4b2e6e9b38cceb (/dev/asm-diskd) [GIDG]
  2. ONLINE  2797b9ed25e84f34bf8fa5948c8fedb6 (/dev/asm-diske) [GIDG]
  3. ONLINE  69ade332aa214f3abfd8b77a410019b0 (/dev/asm-diskc) [GIDG]
 Located 3 voting disk(s).
 当votedisk属于asm组从而移动votedisk的时候将不能使用crsctl add css votedisk命令,否则会报错。但是如果原先votedisk属于集群文件系统文件,那么可以使用该命令进而replace
 完成操作。
 [grid@rac-two ~]$ crsctl add css votedisk +testdg
 CRS-4671: This command is not supported for ASM diskgroups.
 CRS-4000: Command Add failed, or completed with errors.
 将votedisk从磁盘组GIDG 移动到TESTDG
 [grid@rac-two ~]$ crsctl replace votedisk +TESTDG
 Successful addition of voting disk 98f8244772c74fc0bf8c5ddc699775f1.
 Successful addition of voting disk aa123f79eef94f9ebf12ed0953a3caa6.
 Successful addition of voting disk 42e16333baa44f78bf00840265bff13d.
 Successful deletion of voting disk 3da4160ba0334f66bf4b2e6e9b38cceb.
 Successful deletion of voting disk 2797b9ed25e84f34bf8fa5948c8fedb6.
 Successful deletion of voting disk 69ade332aa214f3abfd8b77a410019b0.
 Successfully replaced voting disk group with +TESTDG.
 CRS-4266: Voting file(s) successfully replaced
 [grid@rac-two ~]$ crsctl query css votedisk
 ##  STATE    File Universal Id                File Name Disk group
 --  -----    -----------------                --------- ---------
  1. ONLINE  98f8244772c74fc0bf8c5ddc699775f1 (/dev/asm-diski) [TESTDG]
  2. ONLINE  aa123f79eef94f9ebf12ed0953a3caa6 (/dev/asm-diskk) [TESTDG]
  3. ONLINE  42e16333baa44f78bf00840265bff13d (/dev/asm-diskf) [TESTDG]
 Located 3 voting disk(s).
 [grid@rac-two ~]$ 
备份表决磁盘文件。
 刚刚介绍了无需备份
 如果磁盘文件损坏了那么如何修复呢?
 首先要独占模式启动crs资源
 crsctl start crs -excl
 如果是存在asm中,使用crsctl replace votedisk +diskgroup
 完成修复
 如果是存在集群文件系统,那么需要查看votedisk信息,crsctl query css votedisk然后删除原先的失效的votedisk,进而在添加votedisk
 命令为:crsctl add css votedisk ‘path',
 然后再使用root停止crs,crsctl stop crs
 然后再使用root启动crs ,crsctl start crs

相关内容