LINUX平臺下的10.2.0.4版本的CLUSTERWARE引入的變化-關於OPROCD程式

inthirties2發表於2010-02-25
linux 平臺上的Oracle Clusterware 10.2.0.4和以後版本引入了一個新的Oracle Clusterware Process Monitor Daemon (OPROCD)程式來監控系統狀態和叢集中的每個節點的健康狀態,就象已經在不使用第三方的cluster軟體的UNIX系統中提供的那樣,下面來看看 OPROCD到底是何方神聖。


OPROCD在linux平臺上的10.2.0.4版本中和hangcheck- timer一起執行,它和hangcheck-timer模組沒有聯絡和依賴關係,它由init.ccsd程式產生出來並用root使用者執行。 OPROCD程式被鎖定在記憶體中來監控叢集中的每個它自己執行的節點,來檢測機器上的硬體或者驅動的freezes,並且提供I/O的fencing功能 (這和SCSI提供的中斷的fencing功能不同)。如果一個機器被凍結了足夠長的時間後,它被會叢集驅逐出節點,它自己需要強制重啟自己來阻止叢集從 失敗的節點上的鎖資源被重新組織後,失敗的節點仍然訪問共享的資料檔案上的有疑問的I/O操作。為了提供這樣的功能,OPROCD執行檢查,然後停止執行 (休眠),然後如果在期望的時間內不能被喚醒,OPROCD將重啟本機的節點。

注意:OPROCD在第三方實現的叢集環境中是不存在的,因為在LINUX平臺下沒有透過驗證的第三方的叢集解決方案,所以linux平臺下的0.2.0.4版本中OPROCD將總是會存在的。

OPROCD啟動的時候有兩個引數:
-t : 超時時間,預設1000,單位毫秒 (OPROCD_DEFAULT_TIMEOUT=1000)
-m : 重啟前可接受的延遲,單位毫秒,預設500 (OPROCD_DEFAULT_MARGIN=500)

推薦設定DIAGWAIT為13來增加重啟前可接受的時間來把更多的日誌資訊寫入磁碟。
預設的話,-m的間隔為500:
$ ps -efl | grep oprocd
0 S root 6444 3080 0 78 0 - 636 - Apr15 ? 00:00:00 /bin/sh /etc/init.d/init.cssd oprocd
4 S root 7255 6444 0 -40 - - 516 - Apr15 ? 00:00:00 /u01/app/crs11g/bin/oprocd run -t 1000 -m 500 -f

設定了DIAGWAIT為13會預設增加-m的時間,下面顯示設定DIAGWAIT為13後,-m引數值為10000
$ ps -efl | grep oprocd
0 S root 6444 3080 0 78 0 - 636 - Apr15 ? 00:00:00 /bin/sh /etc/init.d/init.cssd oprocd
4 S root 7255 6444 0 -40 - - 516 - Apr15 ? 00:00:00 /u01/app/crs11g/bin/oprocd run -t 1000 -m 10000 -f

OPROCD和hangcheck-timer在linux平臺下是同時執行並提供不同的檢測機制的,當他們導致節點重啟的話,在系統日誌中記錄的資訊是不同的:
oprocd導致的重啟會記錄"SysRq: resetting"
Hangcheck-timer導致的重啟會記錄"Hangcheck: hangcheck is restarting the machine"
[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21565006/viewspace-1031458/,如需轉載,請註明出處,否則將追究法律責任。

相關文章