在 Oracle Enterprise Linux 和 iSCSI 上構建您自己的 Oracle RAC 叢集(7)

jinqibingl發表於2012-10-04

在 Oracle Enterprise Linux 和 iSCSI 上構建您自己的 Oracle RAC 叢集(7)  

在 Oracle Enterprise Linux 和 iSCSI 上構建您自己的 Oracle RAC 叢集(7)
(2007-10-16 17:29:33)
在 Oracle Enterprise Linux 和 iSCSI 上構建您自己的 Oracle RAC 叢集(7) - 軒轅劍 - 摸索著前進總比原地踏步好轉載
var $tag=''; var $tag_code='7b39277fe8bb853cbfdb49ef93ce2ac9'; var $r_quote_bligid='4cbd76e501000b38'; var $worldcup='0'; var $worldcupball='0'; 分類: oracle_rac


 11. 建立“oracle”使用者和目錄

在叢集中的兩個 Oracle RAC 節點上執行以下任務!

您將使用 OCFS2 儲存 Oracle 叢集件軟體需要共享的檔案。在使用 OCFS2 時,叢集中的兩個 Oracle RAC 節點上的 UNIX 使用者 oracle 的 UID 和 UNIX 組 dba 的 GID 必須相同。如果 UID 或 GID 不同,則 OCFS2 檔案系統中的檔案將顯示為“unowned”,甚至可能由其他使用者所擁有。對於本文而言,oracle UID 使用 175,dba GID 使用 115。

建立 Oracle 的組和使用者

讓我們繼續此示例,建立 Unix dba 組和 oracle 使用者帳戶以及所有相關目錄。

# mkdir -p /u01/app
# groupadd -g 115 dba
# groupadd -g 116 oinstall
# useradd -u 175 -g 115 -d /u01/app/oracle -s /bin/bash -c "Oracle Software Owner" -p oracle oracle
# chown -R oracle:dba /u01
# passwd oracle
# su - oracle

注:當您為每個 Oracle RAC 節點設定 Oracle 環境變數時,請確保為每個 RAC 節點分配唯一的 Oracle SID!對於此示例,我使用:


linux1 :ORACLE_SID=orcl1
linux2 :ORACLE_SID=orcl2

為 oracle 使用者帳戶建立登入指令碼

在兩個節點上都建立了“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/10.2.0/db_1 export ORA_CRS_HOME=$ORACLE_BASE/product/crs export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin export JAVA_HOME=/usr/local/java # Each RAC node must have a unique ORACLE_SID.(i.e. orcl1, orcl2,...) export ORACLE_SID=orcl1 export PATH=.:$JAVA_HOME/bin:${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 ....................................

為 OCFS2/叢集件建立掛載點

最後,為將用於儲存兩個 Oracle 叢集件共享檔案的 OCFS2 檔案系統建立掛載點。需要以“root”使用者帳戶執行這些命令:

$ su -
# mkdir -p /u02/oradata/orcl
# chown -R oracle:dba /u02

 


12. 為 Oracle 配置 Linux 伺服器

在叢集中的兩個 Oracle RAC 節點上執行以下配置過程!

每次引導算機時,都需要在叢集中的兩個 Oracle RAC 節點上定義本節討論的核心引數。本節提供了設定 Oracle 必需的那些核心引數的詳細資訊。(“用於所有 Oracle RAC 節點的所有啟動命令”)中包含有關如何將這些命令置於啟動指令碼 (/etc/sysctl.conf) 中的說明。

概述

本節集中討論了針對 Oracle10g RAC 安裝配置兩臺 Oracle RAC Linux 伺服器的步驟。這包括驗證足夠的交換空間、設定共享記憶體和訊號、設定檔案控制程式碼的最大數量、設定 IP 本地埠範圍、設定對 oracle 使用者的 shell 限制、啟用系統的所有核心引數,以及如何驗證兩個叢集節點的日期和時間是否正確。

在本節中,您將注意到可以使用多種方法來配置(設定)這些引數。就本文而言,我將透過把所有命令置於 /etc/sysctl.conf 檔案中使所有更改永久有效(透過重新引導)。

對交換空間的考慮因素


安裝 Oracle10g 第 2 版至少需要 512MB 記憶體。(注:安裝期間交換容量不足會導致 Oracle Universal Installer“掛起”或“當機”)
要檢查您已經具有的記憶體容量,鍵入:
# cat /proc/meminfo | grep MemTotal
MemTotal:1033116 kB

要檢查您已經分配的交換容量,鍵入:
# cat /proc/meminfo | grep SwapTotal
SwapTotal:2031608 kB

如果您的記憶體少於 512MB(介於 RAM 與 SWAP 之間),您可以透過建立臨時交換檔案新增臨時交換空間。這樣,您就不必使用原始裝置甚至更徹底地重建系統了。

以 root 身份建立一個用作額外交換空間的檔案,假設大小為 300MB:
# dd if=/dev/zero f=tempswap bs=1k count=300000

現在我們應該更改檔案的許可權:
# chmod 600 tempswap

最後我們將該“分割槽”格式化為交換分割槽,並將其新增到交換空間:
# mke2fs tempswap
# mkswap tempswap
# swapon tempswap


設定共享記憶體

共享記憶體透過將通用的結構和資料放在共享記憶體段中,使得程式可以對它們進行訪問。這是現有最快的程式間通訊 (IPC) 方式,主要是因為資料在程式之間傳遞時沒有涉及核心操作。不需要在程式間複製資料。

Oracle 將共享記憶體用於它的共享全域性區 (SGA),這是一個由所有的 Oracle 備份程式及前臺程式共享的記憶體區域。為 SGA 分配足夠的容量對於 Oracle 的效能非常重要,這是因為它負責儲存資料庫緩衝區快取記憶體、共享 SQL、訪問路徑,等等。

要確定所有共享記憶體的限制,使用以下命令:

# ipcs -lm
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 32768
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1

設定 SHMMAX

SHMMAX 引數定義共享記憶體段的最大大小(以位元組為單位)。Oracle SGA 由共享記憶體組成,且錯誤設定 SHMMAX 可能會限制 SGA 的大小。在設定 SHMMAX 時,切記 SGA 的大小應該適合於一個共享記憶體段。SHMMAX 設定不足可能會導致以下問題:

ORA-27123:unable to attach to shared memory segment
您可以透過執行以下命令確定 SHMMAX 的值:
# cat /proc/sys/kernel/shmmax
33554432
SHMMAX 的預設值為 32MB。通常,這個值對於配置 Oracle SGA 而言太小了。我通常使用以下方法將 SHMMAX 引數設定為 2GB:
可以透過使用以下命令直接更改 /proc 檔案系統 (/proc/sys/kernel/shmmax) 來更改 SHMMAX 的預設設定,而不必重新引導計算機:
# sysctl -w kernel.shmmax=2147483648 

然後,透過將該核心引數插入到 /etc/sysctl.conf 啟動檔案中,您可以使這種更改永久有效:
# echo "kernel.shmmax=2147483648" >> /etc/sysctl.conf 

設定 SHMMNI

我們現在看一下 SHMMNI 引數。這個核心引數用於設定系統範圍內共享記憶體段的最大數量。該引數的預設值是 4096

可以透過執行以下命令確定 SHMMNI 的值:

# cat /proc/sys/kernel/shmmni
4096
SHMMNI 的預設設定應足以滿足 Oracle RAC 10g 第 2 版安裝的需要。

設定 SHMALL

最後,我們來看 SHMALL 共享記憶體核心引數。該引數控制系統一次可以使用的共享記憶體總量(以頁為單位)。簡言之,該引數的值始終應至少為:

ceil(SHMMAX/PAGE_SIZE)
SHMALL 的預設大小為 2097152,並可以使用以下命令進行查詢:
# cat /proc/sys/kernel/shmall
2097152
SHMALL 的預設設定應足以滿足 Oracle RAC 10g 第 2 版安裝的需要。

(注:i386 平臺上的 Red Hat Linux 中的頁面大小為 4,096 位元組。但您可以使用 bigpages,它支援更大記憶體頁面的配置。)


設定訊號

至此,您已經配置了共享記憶體設定,接下來將配置訊號。對“訊號”的最佳描述是,它是用於在共享資源(如共享記憶體)的程式(或程式中的執行緒)之間提供同步的計數器。UNIX System V 支援訊號集,其中的每個訊號都是一個計數訊號。當應用程式請求訊號時,它使用“集合”來完成此工作。

要確定所有訊號限制,使用以下命令:

# ipcs -ls
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
您還可以使用以下命令:
# cat /proc/sys/kernel/sem
250 32000 32 128

設定 SEMMSL

SEMMSL 核心引數用於控制每個訊號集合的最大訊號數。

Oracle 建議將 SEMMSL 設定為 init.ora 檔案(適用於 Linux 系統上所有資料庫)中的最大 PROCESS 例項引數設定再加上 10。此外,Oracle 建議將 SEMMSL 設定為不小於 100。

設定 SEMMNI

SEMMNI 核心引數用於控制整個 Linux 系統中訊號集的最大數量。Oracle 建議將 SEMMNI 設定為不小於 100。

設定 SEMMNS

SEMMNS 核心引數用於控制整個 Linux 系統中的訊號(而非訊號集)的最大數量。

Oracle 建議將 SEMMNS 設定為系統上每個資料庫的 PROCESSES 例項引數設定之和,加上最大的 PROCESSES 的兩倍,最後為系統上的每個 Oracle 資料庫加上 10。

使用以下計算式確定可以在 Linux 系統上分配的訊號的最大數量。它將是以下兩者中較小的一個值:

SEMMNS -or- (SEMMSL * SEMMNI)

設定 SEMOPM

SEMOPM 核心引數用於控制每個 semop 系統呼叫可以執行的訊號運算元。

semop 系統呼叫(函式)能夠使用一個 semop 系統呼叫完成多個訊號的操作。一個訊號集可以擁有每個訊號集中最大數量的 SEMMSL,因此建議將 SEMOPM 設定為等於 SEMMSL

Oracle 建議將 SEMOPM 設定為不小於 100。

設定訊號核心引數

最後,我們來看如何使用一些方法來設定所有訊號引數。在下文中,我想更改(增加)的唯一引數是 SEMOPM。所有其他的預設設定可以完全滿足我們的示例安裝。


可以透過使用以下命令直接更改 /proc 檔案系統 (/proc/sys/kernel/sem) 來更改所有訊號設定的預設設定,而不必重新引導計算機:
# sysctl -w kernel.sem="250 32000 100 128" 

然後,透過將該核心引數插入到 /etc/sysctl.conf 啟動檔案中,您可以使這種更改永久有效:
# echo "kernel.sem=250 32000 100 128" >> /etc/sysctl.conf 

設定檔案控制程式碼

在配置我們的 Red Hat Linux 伺服器時,確保檔案控制程式碼的最大數量足夠大是非常關鍵的。檔案控制程式碼的設定表示您在 Linux 系統上可以開啟的檔案數。

使用以下命令來確定整個系統中檔案控制程式碼的最大數量:

# cat /proc/sys/fs/file-max
102563
Oracle 建議將整個系統的檔案控制程式碼值至少設定為 65536
可以透過使用以下命令直接更改 /proc 檔案系統 (/proc/sys/fs/file-max) 更改檔案控制程式碼最大數量的預設設定,不必重新引導計算機:
# sysctl -w fs.file-max=65536 

然後,透過將該核心引數插入到 /etc/sysctl.conf 啟動檔案中,您可以使這種更改永久有效:
# echo "fs.file-max=65536" >> /etc/sysctl.conf 

可以透過使用以下命令查詢檔案控制程式碼的當前使用情況:
# cat /proc/sys/fs/file-nr
825 0 65536
file-nr 檔案顯示了三個引數:分配的檔案控制程式碼總數、當前使用的檔案控制程式碼數以及可以分配的最大檔案控制程式碼數。

(注:如果需要增大 /proc/sys/fs/file-max 中的值,請確保正確設定 ulimit。對於 2.4.20,通常將其設定為 unlimited。使用 ulimit 命令驗證 ulimit 設定:

# ulimit
unlimited

設定 IP 本地埠範圍

配置系統,使本地埠範圍為 1024 至 65000。

使用以下命令確定 ip_local_port_range 的值:

# cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
ip_local_port_range 的預設值是從 32768 到 61000 的埠。Oracle 建議的本地埠範圍是 1024 到 65000。
可以透過使用以下命令直接修改 /proc 檔案系統 (/proc/sys/net/ipv4/ip_local_port_range),以更改本地埠範圍的預設設定,而不必重新引導計算機:
# sysctl -w net.ipv4.ip_local_port_range="1024 65000" 

然後,透過將該核心引數插入到 /etc/sysctl.conf 啟動檔案中,您可以使這種更改永久有效:
# echo "net.ipv4.ip_local_port_range = 1024 65000" >> /etc/sysctl.conf 

為 Oracle 使用者設定 Shell 限制

要改善 Linux 系統上的軟體效能,Oracle 建議您提高 oracle 使用者的 shell 限制:

Shell 限制

limits.conf 中的條目

硬限制

最大開啟檔案描述符數

nofile

65536

可用於單個使用者的最大程式數

nproc

16384
要進行這些更改,以 root 使用者身份執行以下命令:
cat >> /etc/security/limits.conf <oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
EOF
cat >> /etc/pam.d/login <session required /lib/security/pam_limits.so
EOF
為“oracle”UNIX 帳戶更新預設的 shell 啟動檔案。
對於 Bourne、Bash 或 Korn shell,透過執行以下命令將以下行新增到 /etc/profile 檔案:
cat >> /etc/profile <if [ \$USER = "oracle" ]; then 
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
EOF

對於 C shell(csh 或 tcsh),透過執行以下命令將以下行新增到 /etc/csh.login 檔案:
cat >> /etc/csh.login <if ( \$USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
endif
EOF

啟用系統的所有核心引數

此時,我們已經包含了成功進行 Oracle 安裝和配置所需的所有 Linux 核心引數。在以上每一部分中,我們對 Linux 系統進行了配置,將所有核心引數置於 /etc/sysctl.conf 檔案中以將其儲存在系統啟動上。現在,我們可以重新啟動以確保所有這些引數在核心中進行設定,或者,我們只需透過以 root 使用者身份執行以下命令來“執行”/etc/sysctl.conf 檔案。請在叢集的每一個節點上執行該操作!
# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_max = 262144
kernel.shmmax = 2147483648
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

在所有的叢集節點上設定正確的日期和時間

在安裝 Oracle 叢集件、資料庫以及隨附 CD 期間,Oracle Universal Installer (OUI) 將首先安裝執行該安裝程式的本地節點(即 linux1)的軟體。然後,將該軟體以遠端方式複製到叢集中的其餘節點(即 linux2)。在遠端複製過程中,OUI 將在每個遠端節點上執行 UNIX“tar”命令,以提取進行了存檔和複製的檔案。如果執行安裝的節點上的日期和時間大於其要進行復制的節點上的日期和時間,那麼 OUI 將在“tar”中引發一個錯誤,以指示其在試圖提取帶有時間戳的檔案時失敗。
Error while copying directory /u01/app/oracle/product/crs with exclude file list 'null' to nodes 'linux2'. [PRKC-1002 :All the submitted commands did not execute successfully] --------------------------------------------- linux2: /bin/tar:./bin/lsnodes:time stamp 2006-09-13 09:21:34 is 735 s in the future /bin/tar:./bin/olsnodes:time stamp 2006-09-13 09:21:34 is 735 s in the future ...(more errors on this node)

請注意,儘管這看起來像 OUI 中一個嚴重的錯誤,但您完全可以將其看作是一個警告而忽略。“tar”命令 DOES 確實提取了檔案;然而,當您在遠端節點上執行檔案列表時(使用 ls -l),它們將缺少時間欄位,直到伺服器上的時間大於該檔案的時間戳。在啟動以上任何一個所述安裝之前,確保儘可能將叢集的每個成員節點設定為相同的時間和日期。由於兩個 Oracle RAC 節點使用相同的參考 Network Time Protocol 伺服器,因此 Oracle 強烈建議使用多數作業系統的 Network Time Protocol 功能來執行該操作。 然而,訪問 Network Time Protocol 伺服器並非始終可用。在這種情況下,為叢集中的節點手動設定日期和時間,確保要從其中執行軟體安裝的節點 (linux1) 的時間和日期小於叢集中所有其他節點 (linux2)。我一般使二者之間相差 20 秒,如以下示例所示: 設定 linux1 的日期和時間:
# date -s "6/25/2007 23:00:00" 
設定 linux2 的日期和時間:
# date -s "6/25/2007 23:00:20" 
本文中所述的雙節點 RAC 配置沒有使用 Network Time Protocol 伺服器。

 


13. 配置 hangcheck-timer 核心模組

在叢集中的兩個 Oracle RAC 節點上執行以下配置過程!

Oracle9i 第 1 版 (9.0.1) 和 Oracle9i 第 2 版 (9.2.0.1) 使用一個稱為 watchdogd 的使用者空間監視後臺程式 監視叢集的執行狀況,並在出現故障時重新啟動 RAC 節點。從 Oracle9i 第 2 版 (9.2.0.2) 開始(在 Oracle 10g 第 2 版中仍然存在),一個稱為 hangcheck-timer 的 Linux 核心模組取代了監視後臺程式,該模組更好地解決了可用性和可靠性問題。它將 hang-check 計時器載入到 Linux 核心中並檢查系統是否掛起。它將設定一個計時器,並在特定的時間量之後檢查該計時器。有一個用於檢查掛起情況的可配置閾值,如果超過該閾值,計算機將重新引導。儘管 Oracle 叢集件(叢集管理器)操作不需要 hangcheck-timer 模組,但 Oracle 強烈建議使用它。

hangcheck-timer.ko 模組

hangcheck-timer 模組使用了一個基於核心的計時器,該計時器週期性地檢查系統任務排程程式來捕獲延遲,從而確定系統的執行狀況。如果系統掛起或暫停,則計時器重置該節點。hangcheck-timer 模組使用時間戳計數器 (TSC) CPU 暫存器,該暫存器每接收到一個時鐘訊號就將計數加一。由於此暫存器由硬體自動更新,因此 TCS 提供了更精確的時間度量。

關於 hangcheck-timer 專案的更多資訊可在找到。

安裝 hangcheck-timer.ko 模組

hangcheck-timer 通常僅與 Oracle 一同提供,但是,現在從核心版本 2.4.9-e.12 起,該模組與 Red Hat Linux AS 包含在一起。hangcheck-timer 應當已包含在內。使用以下命令來確認您已經包含了該模組:

# find /lib/modules -name "hangcheck-timer.ko" /lib/modules/2.6.9-55.0.0.0.2.ELhugemem/kernel/drivers/char/hangcheck-timer.ko /lib/modules/2.6.9-55.0.0.0.2.ELsmp/kernel/drivers/char/hangcheck-timer.ko /lib/modules/2.6.9-55.0.0.0.2.EL/kernel/drivers/char/hangcheck-timer.ko
在以上輸出中,我們關注的是 /lib/modules/2.6.9-55.0.0.0.2.ELhugemem/kernel/drivers/char 目錄中的 hangcheck 計時器物件 (hangcheck-timer.ko),因為這是我們執行的核心。

配置並載入 hangcheck-timer 模組

hangcheck-timer 模組有兩個關鍵的引數:


hangcheck-tick:此引數定義了系統執行狀況檢查的間隔時間。預設值為 60 秒;Oracle 建議將它設定為 30 秒。
hangcheck-margin:此引數定義了 hangcheck-timer 在重置 RAC 節點前所容許的最大掛起延遲。它定義了以秒為單位的誤差幅度。預設值為 180 秒;Oracle 建議將它設定為 180 秒。
注:這兩個 hangcheck-timer 模組參數列示在該模組重置系統前 RAC 節點必須掛起的時長。當以下條件為真時將會重置節點:
system hang time > (hangcheck_tick + hangcheck_margin)
配置 Hangcheck 核心模組引數

每次載入 hangcheck-timer 核心模組(手動載入或由 Oracle 載入)時,它都需要知道對我們剛剛討論的兩個引數(hangcheck-tick 和 hangcheck-margin) 所使用的值。這些值需要在每次重新引導 Linux 伺服器後可用。為此,在 /etc/modprobe.conf 檔案中建立一個具有正確值的條目,如下所示:

# su -
# echo "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" >> /etc/modprobe.conf
每次載入 hangcheck-timer 核心模組時,它將使用由我在 /etc/modprobe.conf 檔案中建立的條目定義的值。

手動載入 Hangcheck 核心模組以進行測試

Oracle 負責在需要時載入 hangcheck-timer 核心模組。因此,不必在任何啟動檔案(如 /etc/rc.local)中執行 hangcheck-timer 核心模組的 modprobeinsmod

我繼續在 /etc/rc.local 檔案中包含 hangcheck-timer 核心模組的 modprobe 完全只是出於個人習慣。有朝一日我將戒掉這個習慣,但請注意,啟動過程中包含 hangcheck-timer 核心模組的 modprobe 並無害處。

為了使自己保持清醒並能夠在夜晚安睡,我始終按如下所示在每次啟動時配置 hangcheck-timer 核心的載入:

# echo "/sbin/modprobe hangcheck-timer" >> /etc/rc.local 

(注:您不必在每次重新引導後使用 modprobeinsmod 手動載入 hangcheck-timer 核心模組。Oracle 將在需要時自動載入 hangcheck-timer 模組。)

現在,為了測試 hangcheck-timer 核心模組以驗證它是否選取我們在 /etc/modprobe.conf 檔案中定義的正確引數,使用 modprobe 命令。儘管可以透過向其傳遞相應的引數(如 insmod hangcheck-timer hangcheck_tick=30 hangcheck_margin=180)載入 hangcheck-timer 核心模組,但我們需要驗證它是否選取了我們在 /etc/modprobe.conf 檔案中設定的選項。

要手動載入 hangcheck-timer 核心模組並驗證它是否使用在 /etc/modprobe.conf 檔案中定義的正確值,執行以下命令:

# su - # modprobe hangcheck-timer # grep Hangcheck /var/log/messages | tail -2 Jun 25 18:18:31 linux1 kernel:Hangcheck:starting hangcheck timer 0.9.0 (tick is 30 seconds, margin is 180 seconds). Jun 25 18:18:31 linux1 kernel:Hangcheck:Using monotonic_clock(). 

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

相關文章