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

jinqibingl發表於2012-10-04

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

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


 14. 為遠端訪問配置 RAC 節點

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

在可以安裝並使用 Oracle 真正應用叢集之前,您必須為所有叢集節點上的“oracle”UNIX 使用者帳戶配置安全 shell (RSH) 或遠端 shell (RSH)。此處的目的是為“oracle”UNIX 使用者帳戶設定使用者等效性。利用使用者等效性 (User equivalence),“oracle”UNIX 使用者帳戶無需口令就可訪問叢集中的所有其他節點(執行命令和複製檔案)。使用 SSH 或 RSH(其中 SSH 是首選方法)都可實現此配置。Oracle 在 10g 第 1 版中增加了將 SSH 工具套件用於設定使用者等效項的支援。在 Oracle10g 之前,使用者等效性必須使用遠端 shell 進行配置。 注意,如果 10g 中的 Oracle Universal Installer 沒有檢測出存在安全 shell 工具(sshscp),那麼它將嘗試使用遠端 shell 工具(rshrcp)。那麼,我們為什麼必須設定使用者等效性?安裝 Oracle 叢集件和 Oracle 資料庫軟體只在 RAC 叢集中的一個節點上進行。在特定節點上執行 Oracle Universal Installer (OUI) 時,它將使用 sshscp 命令(如果使用遠端 shell,則用 rshrcp 命令)在叢集內的所有其他節點上執行遠端命令並向這些節點複製檔案(Oracle 軟體)。執行 OUI (runInstaller) 的節點上的“oracle”UNIX 使用者帳戶必須受到您的 RAC 叢集中其他所有節點的信任。這意味著,相對於叢集中的所有其他 Linux 伺服器,您必須能夠在要從其中執行 OUI 的 Linux 伺服器上執行安全 shell 命令(sshscp)或遠端 shell 命令(rshrcp),而不會收到輸入口令的提示。 注意,普通 RAC 操作無需使用安全 shell 或遠端 shell。然而,對於 RAC 和補丁集安裝以及建立叢集資料庫時,必須啟用該配置。第一步是確定使用哪種遠端訪問方法 — 安全 shell 還是遠端 shell。二者各有利弊。例如,遠端 shell 非常易於安裝和配置。它的構造只需很少的幾步,並當登入到受信任的節點(要從其中執行安裝的節點)後,其在終端會話中始終可用。然而,在安裝和任何修補過程中,到遠端節點的連線不安全。另一方面,安全 shell 可在安裝和修補時提供安全連線,但是設定步驟繁瑣。此外,每次 oracle 使用者登入到受信任的節點後,都需要在終端會話中啟用該方法。官方 Oracle 文件僅給出了設定安全 shell 的步驟,並將其作為首選方法。在以下兩個部分對於配置使用者等效性的這兩種方法進行了介紹:
使用安全 Shell 方法

使用安全 Shell 方法
本部分將介紹如何配置 OpenSSH 版本 3。

要確定是否 SSH 已安裝並執行,可輸入以下命令:

# pgrep sshd
2808
如果 SSH 正在執行,那麼該命令的響應將是一個程式 ID 編號(一個或多個)列表。請在叢集中的兩個 Oracle RAC 節點上執行該命令,以驗證 SSH 後臺程式已安裝並正在執行!要了解更多有關 SSH 的資訊,請參閱以下 man 頁:
# man ssh 
在兩個 Oracle RAC 節點上建立 RSA 和 DSA 金鑰
配置 SSH 的第一步是在叢集中的兩個 Oracle RAC 節點上建立 RSA 和 DSA 金鑰對。執行該操作的命令將為 RSA 和 DSA 各建立一個公共金鑰和一個私有金鑰(每個節點總共 4 個金鑰)。然後,需要將 RSA 和 DSA 公共金鑰的內容複製到一個授權金鑰檔案 中,之後將該檔案分發到叢集中的兩個 Oracle RAC 節點。

使用以下步驟建立 RSA 和 DSA 金鑰對。請注意,叢集中的兩個 Oracle RAC 節點上均需要完成這些步驟:


以“oracle”UNIX 使用者帳號進行登入。
# su - oracle 

如果必要,在“oracle”使用者的主目錄中建立 .ssh 目錄,並在其上設定正確的許可權:
$ mkdir -p ~/.ssh
$ chmod 700 ~/.ssh

輸入以下命令,為版本 3 的 SSH 協議生成 RSA 金鑰對(公共金鑰和私有金鑰):
$ /usr/bin/ssh-keygen -t rsa 
在提示符下:
接受針對金鑰檔案的預設位置。
輸入並確認口令短語。該口令應當與“oracle”UNIX 使用者帳戶口令不同,但這不是必需的。

該命令會將公共金鑰寫入 ~/.ssh/id_rsa.pub 檔案,將私有金鑰寫入 ~/.ssh/id_rsa 檔案。注意,始終不要將金鑰分發給任何人!


輸入以下命令,為版本 3 的 SSH 協議生成 DSA 金鑰對(公共金鑰和私有金鑰):
$ /usr/bin/ssh-keygen -t dsa 
在提示符下:
接受針對金鑰檔案的預設位置。
輸入並確認口令短語。該口令應當與“oracle”UNIX 使用者帳戶口令不同,但這不是必需的。

該命令會將公共金鑰寫入 ~/.ssh/id_dsa.pub 檔案,將私有金鑰寫入 ~/.ssh/id_dsa 檔案。注意,始終不要將金鑰分發給任何人!


為叢集中的兩個 Oracle RAC 節點重複以上步驟。

現在,每個 Oracle RAC 節點都包含用於 RSA 和 DSA 的公共和私有金鑰,您需要在其中一個節點上建立一個授權金鑰檔案。授權金鑰檔案只是一個包含每個人(每個節點)的 RSA 和 DSA 公共金鑰的檔案。在授權金鑰檔案包含了所有公共金鑰後,將其分發至叢集中的所有其他節點。

在叢集中的其中一個節點上完成以下步驟,然後分發授權金鑰檔案。考慮到本文的目的,我將使用 linux1


首先,確定該節點上是否已經存在授權金鑰檔案 (~/.ssh/authorized_keys)。在多數情況下,該檔案是不存在的,因為本文假設您使用的是新安裝。如果該檔案不存在,那麼現在開始建立:
$ touch ~/.ssh/authorized_keys
$ cd ~/.ssh
$ ls -l *.pub
-rw-r--r--
-rw-r--r-- 1 oracle dba 223 Aug 31 23:36 id_rsa.pub
以上的列表應當顯示前一部分中建立的 id_rsa.pubid_dsa.pub 公共金鑰。
在該步驟中,使用 SSH 將 ~/.ssh/id_rsa.pub~/.ssh/id_dsa.pub 公共金鑰的內容從叢集中的兩個 Oracle RAC 節點複製到剛才建立的授權金鑰檔案中 (~/.ssh/authorized_keys)。同樣,我將透過 linux1 進行操作。系統將提示您為每個訪問的 Oracle RAC 節點輸入“oracle”UNIX 使用者帳戶口令。注意,在使用 SSH 訪問您所在的節點 (linux1) 時,第一次將提示輸入“oracle”UNIX 使用者帳戶口令。第二次嘗試訪問該節點時,將提示輸入用於解鎖私有金鑰的口令短語。對於任何其他節點,系統將始終詢問“oracle”UNIX 使用者帳戶口令。

以下示例將從 linux1 執行,假設這是個雙節點叢集,即節點 linux1linux2

$ ssh linux1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'linux1 (192.168.1.100)' can't be established.
RSA key fingerprint is 61:8a:f9:9e:28:a2:b7:d3:70:8d:dc:76:ca:d9:23:43.
Are you sure you want to continue connecting (yes/no)? yes
Warning:Permanently added 'linux1,192.168.1.100' (RSA) to the list of known hosts.
oracle@linux1's password:xxxxx
$ ssh linux1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
Enter passphrase for key '/u01/app/oracle/.ssh/id_rsa':xxxxx
$ ssh linux2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'linux2 (192.168.1.101)' can't be established.
RSA key fingerprint is 84:2b:bd:eb:31:2c:23:36:55:c2:ee:54:d2:23:6a:e4.
Are you sure you want to continue connecting (yes/no)? yes
Warning:Permanently added 'linux2,192.168.1.101' (RSA) to the list of known hosts.
oracle@linux2's password:xxxxx
$ ssh linux2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
oracle@linux2's password:xxxxx
注:第一次使用 SSH 從特定系統連線到節點時,您可能會看見一條類似下面的訊息:
The authenticity of host 'linux1 (192.168.1.100)' can't be established.
RSA key fingerprint is 61:8a:f9:9e:28:a2:b7:d3:70:8d:dc:76:ca:d9:23:43.
Are you sure you want to continue connecting (yes/no)? yes
在提示符下輸入 yes 進行確認。如果從該系統連線到相同的節點,您將不會再次看到該訊息。
此時,在 linux1 上,我們在授權金鑰檔案 (~/.ssh/authorized_keys) 中獲得了來自叢集中各個節點的 RSA 和 DSA 公共金鑰內容。我們現在將其複製到叢集中的其餘節點。在這個雙節點叢集示例中,唯一剩下的節點就是 linux2。使用 scp 命令將授權金鑰檔案複製到叢集中的其餘所有節點:
$ scp ~/.ssh/authorized_keys linux2:.ssh/authorized_keys
oracle@linux2's password:xxxxx
authorized_keys 100% 1652 1.6KB/s 00:00

透過登入到節點並執行以下命令,為叢集中的兩個 Oracle RAC 節點更改授權金鑰檔案的許可權:
$ chmod 600 ~/.ssh/authorized_keys 

此時,如果在另一個節點上使用 ssh 登入或執行命令,則會提示您輸入在建立 DSA 金鑰時指定的口令短語。例如,在 linux1 中測試以下內容:
$ ssh linux1 hostname
Enter passphrase for key '/u01/app/oracle/.ssh/id_rsa':xxxxx
linux1
$ ssh linux2 hostname
Enter passphrase for key '/u01/app/oracle/.ssh/id_rsa':xxxxx
linux2
注:如果除主機名外,您還看到任何其他訊息或文字,則 Oracle 安裝可能失敗了。進行必要的更改,以確保您在輸入這些命令時只有主機名顯示。您應當確保修改生成任何輸出或詢問任何問題的登入指令碼(一個或多個)的任何部分,以便它們僅當 shell 是互動式 shell 時生效。
為當前 Shell 會話啟用 SSH 使用者等效性
執行 OUI 時,需要不用提示輸入口令短語就可執行安全 shell 工具命令(sshscp)。儘管叢集中的兩個 Oracle RAC 節點上都配置了 SSH,使用安全 shell 工具命令時仍會提示輸入口令短語。因此,在執行 OUI 之前,您需要為打算從其中執行 OUI 的終端會話啟用使用者等效性。考慮到本文目的,所有 Oracle 安裝都將在 linux1 中進行。 在嘗試執行 OUI 之前,需要在任何新的終端 shell 會話中啟用使用者等效性。如果您登出並又重新登入將從其中執行 Oracle 安裝的節點,那麼您必須為終端 shell 會話啟用使用者等效性,因為這不是預設設定。 要為當前終端 shell 會話啟用使用者等效性,執行以下步驟:
以“oracle”UNIX 使用者帳戶登入希望從其中執行 OUI 的節點 (linux1)。
# su - oracle 

輸入以下命令:
$ exec /usr/bin/ssh-agent $SHELL $ /usr/bin/ssh-add Enter passphrase for /u01/app/oracle/.ssh/id_rsa:xxxxx Identity added:/u01/app/oracle/.ssh/id_rsa (/u01/app/oracle/.ssh/id_rsa) Identity added:/u01/app/oracle/.ssh/id_dsa (/u01/app/oracle/.ssh/id_dsa)
在提示符下,為生成的每個金鑰輸入口令短語。
如果 SSH 配置正確,您將能夠從該終端對話使用 sshscp 命令,而無需提供口令或口令短語。
$ ssh linux1 "date;hostname" Mon Jun 25 18:24:23 EDT 2007 linux1 $ ssh linux2 "date;hostname" Mon Jun 25 18:26:15 EDT 2007 linux2
注:以上命令應顯示兩個 Oracle RAC 節點上設定的日期及其主機名。如果任何節點提示輸入口令或口令短語,則驗證位於該節點上的 ~/.ssh/authorized_keys 檔案是否包含正確的公共金鑰。此外,如果除日期和主機名外,您還看到其他任何訊息或文字,則 Oracle 安裝可能失敗了。進行必要的更改,以確保您在輸入這些命令時只有日期顯示。您應當確保修改生成任何輸出或詢問任何問題的登入指令碼(一個或多個)的任何部分,以便它們僅當 shell 是互動式 shell 時生效。
Oracle Universal Installer 是一個 GUI 介面,要求使用 X 伺服器。在啟用了使用者等效性的終端會話中(您將從其中執行 Oracle 安裝的節點),將環境變數 DISPLAY 設定為有效的 X 視窗顯示:

Bourne、Korn 和 Bash shell:

$ DISPLAY=:0
$ export DISPLAY
C shell:
$ setenv DISPLAY :0 
DISPLAY 變數設定為有效的 X 視窗顯示後,您應當執行當前終端會話的另一個測試,以確保 X11 forwarding 沒有啟用:
$ ssh linux1 hostname linux1 $ ssh linux1 hostname linux2
注:如果您使用遠端客戶端來連線到執行安裝的節點,則會看到類似下面的訊息:"Warning:No xauth data; using fake authentication data for X11 forwarding.”,這意味著您的授權金鑰檔案配置正確,但是,您的 SSH 配置啟用了 X11 forwarding。例如:
$ export DISPLAY=melody:0
$ ssh linux2 hostname
Warning:No xauth data; using fake authentication data for X11 forwarding.
linux2
注意,啟用 X11 Forwarding 將導致 Oracle 安裝失敗。要糾正這個問題,需為禁用 X11 Forwarding 的“oracle”UNIX 使用者帳戶建立一個使用者級 SSH 客戶端配置檔案:
使用文字編輯器,編輯或建立檔案 ~/.ssh/config
確保 ForwardX11 屬性設為 no。例如,將以下內容插入 ~/.ssh/config file
Host *
ForwardX11 no

您必須從該終端會話執行 Oracle Universal Installer,或記住在從不同終端會話啟動 Oracle Universal Installer 之前,重複這些步驟(該部分的步驟 2、3 和 4)以啟用使用者等效性。
移除所有 stty 命令
在安裝 Oracle 軟體時,系統上任何包含 stty 命令的隱藏檔案(即 .bashrc.cshrc.profile)都將導致安裝過程失敗。

要避免該問題,您必須修改這些檔案以取消所有關於 STDERR 的輸出,如下所示:


Bourne、Bash 或 Korn shell:
if [ -t 0 ]; then
stty intr ^C
fi

C shell:
test -t 0
if ($status == 0) then
stty intr ^C
endif

注:如果由遠端 shell 載入的隱藏檔案包含 stty 命令,則 OUI 將指示錯誤並停止安裝。



在多數 Linux 系統上,遠端 shell 提供的服務預設為禁用。本部分將介紹啟用並配置使用者等效性所需的任務,以供 Oracle Universal Installer、執行命令時以及使用遠端 shell 工具複製到叢集中遠端節點的檔案使用。目的是使 Oracle Universal Installer 能夠使用 rshrcp 來執行命令,以及不用提供口令就可將檔案複製到遠端節點。請注意,使用遠端 shell 方法來配置使用者等效性不安全。

rsh 後臺程式使用位於使用者(oracle 的)主目錄中的 /etc/hosts.equiv 檔案或 .rhosts 檔案驗證使用者。

首先,確保叢集中的兩個 Oracle RAC 節點上都安裝了 rsh RPM:

# rpm -q rsh rsh-server rsh-0.17-25.4 rsh-server-0.17-25.4
根據以上資訊,我們可以確認已經安裝了 rshrsh-server。如果未安裝 rsh,則可以從 RPM 所在的 CD 中執行以下命令:
# su - # rpm -ivh rsh-0.17-25.4.i386.rpm rsh-server-0.17-25.4.i386.rpm 

要啟用“rsh”和“rlogin”服務,必須將 /etc/xinetd.d/rsh 檔案中的“disable”屬性設定為“no”並且必須重新載入 xinetd。這可透過在叢集中的所有節點上執行以下命令來完成:

# su -
# chkconfig rsh on # chkconfig rlogin on # service xinetd reload Reloading configuration:[ OK ]
要使“oracle”UNIX 使用者帳戶在 RAC 節點中獲得信任,在叢集中的所有節點上建立 /etc/hosts.equiv 檔案:
# su - # touch /etc/hosts.equiv # chmod 600 /etc/hosts.equiv # chown root.root /etc/hosts.equiv 
現在,將所有 RAC 節點新增到叢集中類似於以下示例的兩個 Oracle RAC 節點的 /etc/hosts.equiv 檔案中:
# cat /etc/hosts.equiv +linux1 oracle +linux2 oracle +linux1-priv oracle +linux2-priv oracle
注:在以上示例中,第二個欄位只允許 oracle 使用者帳號在所指定的節點上執行 rsh 命令。由於安全原因,/etc/hosts.equiv 檔案應該由 root 所擁有,並應該將許可權設定為 600。實際上,某些系統只有在該檔案的所有者為 root 並且許可權被設定為 600 時才接受此檔案的內容。 嘗試測試 rsh 命令前,確保使用的是正確版本的 rsh。在預設情況下,Red Hat Linux 將 /usr/kerberos/sbin 放在 $PATH 變數的前面。這會導致執行 rsh 的 Kerberos 版本。

我通常會重新命名 rsh 的 Kerberos 版本,以便使用正常的 rsh 命令。使用以下命令:

# su -
# which rsh
/usr/kerberos/bin/rsh
# mv /usr/kerberos/bin/rsh /usr/kerberos/bin/rsh.original
# mv /usr/kerberos/bin/rcp /usr/kerberos/bin/rcp.original
# mv /usr/kerberos/bin/rlogin /usr/kerberos/bin/rlogin.original
# which rsh
/usr/bin/rsh

現在,應從將要執行 Oracle 叢集件和 10g RAC 安裝的節點測試連線並執行 rsh 命令。我將使用節點 linux1 執行所有安裝,因此我將從該節點執行以下命令:

# su - oracle $ rsh linux1 ls -l /etc/hosts.equiv -rw------- 1 root root 70 Jun 25 18:29 /etc/hosts.equiv $ rsh linux1-priv ls -l /etc/hosts.equiv -rw------- 1 root root 70 Jun 25 18:29 /etc/hosts.equiv $ rsh linux2 ls -l /etc/hosts.equiv -rw------- 1 root root 70 Jun 25 18:29 /etc/hosts.equiv $ rsh linux2-priv ls -l /etc/hosts.equiv -rw------- 1 root root 70 Jun 25 18:29 /etc/hosts.equiv
與使用安全 shell 不同,不需要用其他操作或命令來啟用使用者等效性以使用遠端 shell。在成功登入終端會話後,使用者等效性將針對“oracle”UNIX 使用者帳戶啟用。

 



15. 適用於這兩個 Oracle RAC 節點的所有啟動命令

驗證以下啟動命令都包含在叢集中的兩個 Oracle RAC 節點上!

至此,我們已經詳細介紹了需要在 Oracle10g RAC 配置的兩個節點上配置的引數和資源。在本部分中,我們將稍事調整,簡要複述這些引數、命令和條目(在本文前面的章節中已提到過),當引導計算機時需要在兩個 Oracle RAC 節點上執行它們。

對於以下的每個啟動檔案,都應將灰色的條目包含在每個啟動檔案中。

/etc/modprobe.conf

(所有要由核心模組使用的引數和值。)

alias eth0 r8169 alias eth1 e1000 alias scsi_hostadapter ata_piix alias snd-card-0 snd-intel8x0 options snd-card-0 index=0 install snd-intel8x0 /sbin/modprobe --ignore-install snd-intel8x0 && /usr/sbin/alsactl restore >/dev/null 2>&1 || : remove snd-intel8x0 { /usr/sbin/alsactl store >/dev/null 2>&1 || :; }; /sbin/modprobe -r --ignore-remove snd-intel8x0 alias usb-controller ehci-hcd alias usb-controller1 uhci-hcd options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180 

/etc/sysctl.conf

(我們需要調整互聯的預設和最大傳送緩衝區大小以及預設和最大的接收緩衝區大小。)該檔案還包含那些負責配置由 Oracle 例項使用的共享記憶體、訊號和檔案控制程式碼以及本地 IP 範圍的引數。)

# Kernel sysctl configuration file for Red Hat Linux # # For binary values, 0 is disabled, 1 is enabled.See sysctl(8) and # sysctl.conf(5) for more details. # Controls IP packet forwarding net.ipv4.ip_forward = 0 # Controls source route verification net.ipv4.conf.default.rp_filter = 1 # Controls the System Request debugging functionality of the kernel kernel.sysrq = 0 # Controls whether core dumps will append the PID to the core filename. # Useful for debugging multi-threaded applications. kernel.core_uses_pid = 1 # Default setting in bytes of the socket receive buffer net.core.rmem_default=262144 # Default setting in bytes of the socket send buffer net.core.wmem_default=262144 # Maximum socket receive buffer size which may be set by using # the SO_RCVBUF socket option net.core.rmem_max=262144 # Maximum socket send buffer size which may be set by using # the SO_SNDBUF socket option net.core.wmem_max=262144 # +---------------------------------------------------------+ # | SHARED MEMORY | # +---------------------------------------------------------+ kernel.shmmax=2147483648 # +---------------------------------------------------------+ # | SEMAPHORES | # | ---------- | # | | # | SEMMSL_value SEMMNS_value SEMOPM_value SEMMNI_value | # | | # +---------------------------------------------------------+ kernel.sem=250 32000 100 128 # +---------------------------------------------------------+ # | FILE HANDLES | # ----------------------------------------------------------+ fs.file-max=65536 # +---------------------------------------------------------+ # | LOCAL IP RANGE | # ----------------------------------------------------------+ net.ipv4.ip_local_port_range=1024 65000 

/etc/hosts

(RAC 叢集中的節點的所有計算機/IP 條目。)

# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost # Public Network - (eth0) 192.168.1.100 linux1 192.168.1.101 linux2 # Private Interconnect - (eth1) 192.168.2.100 linux1-priv 192.168.2.101 linux2-priv # Public Virtual IP (VIP) addresses - (eth0) 192.168.1.200 linux1-vip 192.168.1.201 linux2-vip # Private Storage Network for Openfiler - (eth1) 192.168.1.195 openfiler1 192.168.2.195 openfiler1-priv 192.168.1.106 melody 192.168.1.102 alex 192.168.1.105 bartman 192.168.1.120 cartman

/etc/hosts.equiv

(/etc/hosts.equiv 檔案僅在使用遠端 shell 方法建立遠端訪問和使用者等效性時需要。使用遠端 shell 方法啟用使用者等效性後,無需提供口令就可以 oracle 使用者帳戶登入各個 Oracle RAC 節點。)

+linux1 oracle
+linux2 oracle
+linux1-priv oracle
+linux2-priv oracle

/etc/rc.local

(載入 hangcheck-timer 核心模組。)

#!/bin/sh
#
# This script. will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style. init stuff.
touch /var/lock/subsys/local
# +---------------------------------------------------------+
# | HANGCHECK TIMER |
# | (I do not believe this is required, but doesn't hurt) |
# ----------------------------------------------------------+
/sbin/modprobe hangcheck-timer

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

相關文章