今天是2014-03-25,因分析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