一、啟動RHCS叢集
RHCS叢集的核心程式有cman和rgmanager,要啟動叢集,依次在叢集的每個節點執行如下命令即可:
 service cman start
 service rgmanager start
 需要注意的是,執行這兩個命令是有先後順序的,需要首先啟動cman,然後在啟動rgmanager。在叢集所有節點成功啟動cman服務後,然後繼續依次在每個節點啟動rgmanager服務。

二、關閉RHCS叢集
 與啟動叢集服務剛好相反,關閉RHCS叢集的命令為:
 service rgmanager stop
 service cman stop
 首先在叢集的每個節點依次關閉rgmanager服務,等待所有節點的rgmanager服務成功關閉後,再依次關閉每個節點的cman服務即可完成真個叢集服務的關閉。
 有時在關閉cman服務時,可能會提示關閉失敗,此時可以檢查本機的共享儲存GFS2檔案系統是否已經解除安裝,還可以檢查其它節點的rgmanager服務是否都已經正常關閉。

三、管理應用服務
 叢集系統啟動後,預設是自動啟動應用服務的,但是如果某個應用服務沒有自動啟動,就需要通過手工方式來啟動。管理應用服務的命令是clusvcadm,通過這個命令可以啟動、關閉、重啟、切換叢集中的應用服務。
1. 啟動某個應用服務
可以通過如下方式啟動某個節點的應用服務:
clusvcadm -e <Service> -m <Node>
其中:
 Service:表示叢集中建立的應用服務名稱。
 Node:表示叢集節點名稱。
例如,要啟動節點web1上的webserver服務,操作如下:
[root@web1 ~]# clusvcadm -e webserver -m web1
Member web1 trying to enable service:webserver…Success
service:webserver is now running on web1
 可以通過/var/log/messages檔案檢視啟動應用服務的詳細資訊。當webserver啟動後,與服務相關的叢集資源:如虛擬IP、應用程式服務指令碼也隨之啟動,可以通過如下命令檢視叢集資源是否已經正常載入:
2. 關閉某個應用服務
可以通過如下方式關閉某個節點的應用服務:
clusvcadm -s <Service> -m <Node>
例如,要關閉節點Mysql1上的mysqlserver服務,操作如下:
[root@Mysql1 ~]# clusvcadm -s mysqlserver -m Mysql1
Member Mysql1 stopping service:mysqlserver…Success
 可以通過/var/log/messages檔案檢視關閉應用服務的詳細資訊。當mysqlserver關閉後,與服務相關的叢集資源:如虛擬IP、應用程式服務指令碼也隨之釋放。
3. 重啟某個應用服務
可以通過如下方式重啟某個節點的應用服務:
clusvcadm -R <Service> -m <Node>
 例如,要重啟節點web1上的webserver服務,操作如下:
[root@web2 ~]# clusvcadm -R webserver -m web1
Member web1 trying to restart service:webserver…Success
 這個命令是在web2節點上執行的,但是也能成功將web1節點上的webserver進行重啟,由此可知,clusvcadm命令在叢集任意節點執行都是可以的。
4. 切換某個服務
 可以通過如下方式將一個應用服務從一個節點切換到另一個節點:
 clusvcadm -r <Service> -m <Node>
 
例如,要將節點web1的服務切換到節點web2上,操作如下:
 [root@web1 ~]# clusvcadm -r webserver -m web2
 Trying to relocate service:webserver to web2…Success
 service:webserver is now running on web2

四、監控RHCS叢集狀態
通過對RHCS的監控,有助於瞭解叢集每個節點的健康狀況,並能發現問題,及時解決問題,RHCS叢集提供了豐富的狀態檢視命令,這裡主要介紹下cman_tool、clustat、ccs_tool的使用方法。
1. cman_tool命令
cman_tool的引數比較多,但是用法比較簡單,基本用法格式為:
cman_tool <join|leave|kill|expected|votes|version|wait|status|nodes|services|debug> [options]
 下面列舉幾個簡單的使用例子:
[root@web1 ~]# cman_tool  nodes -a
Node  Sts   Inc   Joined               Name
   0   M      0   2010-08-23 01:24:00  /dev/sdb7
   1   M   2492   2010-08-23 01:22:43  web2
       Addresses: 192.168.12.240
   2   M   2492   2010-08-23 01:22:43  Mysql1
       Addresses: 192.168.12.231
   3   M   2492   2010-08-23 01:22:43  Mysql2
       Addresses: 192.168.12.232
   4   M   2488   2010-08-23 01:22:43  web1
       Addresses: 192.168.12.230
此命令顯示了節點名稱,以及對應的節點IP地址和加入叢集的時間。
如果要了解更多叢集節點資訊,可以通過如下命令:
[root@web1 ~]# cman_tool   status
Version: 6.2.0
Config Version: 35  #叢集配置檔案版本號
Cluster Name: mycluster   #叢集名稱
Cluster Id: 56756
Cluster Member: Yes
Cluster Generation: 2764
Membership state: Cluster-Member
Nodes: 4   #叢集節點數
Expected votes: 6   #期望的投票數
Quorum device votes: 2   #表決磁碟投票值
Total votes: 6   #叢集中所有投票值大小
Quorum: 4 #叢集法定投票值,低於這個值,叢集將停止服務
Active subsystems: 9 
Flags: Dirty
Ports Bound: 0 177 
Node name: web1
Node ID: 4  #本節點在叢集中的ID號
Multicast addresses: 239.192.221.146 #叢集廣播地址
Node addresses: 192.168.12.230 #本節點對應的IP地址
2. clustat命令
clustat命令使用非常簡單,詳細的使用方法可以通過“clustat  -h”獲取幫助資訊,這裡僅僅列舉幾個例子。

[root@web1 ~]#clustat  -i 3
Cluster Status for mycluster @ Mon Aug 23 18:54:15 2010
Member Status: Quorate
Member Name       ID       Status
 —— —-             —-       ——
 web2              1   Online, rgmanager
 Mysql1         2   Online, rgmanager
 Mysql2        3   Online, rgmanager
 web1          4   Online, Local, rgmanager
 /dev/sdb7         0  Online, Quorum Disk
 Service Name    Owner (Last)     State        
 ——- —-       —– ——        ——–        
 service:mysqlserver   Mysql1    started      
 service:webserver     web1       started
 對輸出內容含義如下: 
 clustat的“-i”引數可以實時的顯示叢集系統中每個節點以及服務的執行狀態,“-i 3”表示每三秒重新整理一次叢集狀態。
 在這個輸出中,可以看到每個節點都處於“Online”狀態,表明每個節點都執行正常,如果某個節點退出了叢集,對應的狀態應該是“Offline”,同時還可以看到,叢集的兩個服務也處於“started”狀態,分別執行在Mysql1節點和web1節點。
 另外,通過“ID”一列可以知道叢集節點的對應關係,例如,web2在此叢集中對應的就是“Node 1”節點,同理,web1對應的是“Node 4”節點。瞭解叢集節點順序有助於對叢集日誌的解讀。

3. ccs_tool命令
 ccs_tool主要用來管理叢集配置檔案cluster.conf,通過ccs_tool可以在叢集中增加/刪除節點、增加/刪除fence裝置、更新叢集配置檔案等操作。
下面是ccs_tool的幾個應用例項:
當在一個節點修改完配置檔案後,可以執行“ccs_tool  update”指令將配置檔案在所有節點進行更新,例如:
[root@web1 cluster]# ccs_tool  update /etc/cluster/cluster.conf
Proposed updated config file does not have greater version number.
  Current config_version :: 35
  Proposed config_version:: 35
Failed to update config file.
 ccs_tool是根據cluster.conf中的“config_version”值來決定是否進行更新的,因此在修改完cluster.conf檔案後,一定要將cluster.conf的config_version值進行更新,這樣執行ccs_tool時才能更新配置檔案。
[root@web1 cluster]# ccs_tool  update /etc/cluster/cluster.conf
Config file updated from version 35 to 36
Update complete.

五、管理和維護GFS2檔案系統
GFS2檔案系統提供了很多管理和維護工具,常用的有gfs2_fsck、gfs2_tool、gfs2_jadd、gfs2_quota、gfs2_convert等,這裡重點介紹前三個命令的用法。

1. gfs2_fsck命令
 類似與ext3檔案系統下的fsck.ext3命令,主要用於檢測和修復檔案系統錯誤。其實GFS2還有一個fsck.gfs2命令,此命令與gfs2_fsck命令完全一致。
gfs2_fsck的用法如下:
 gfs2_fsck [-afhnpqvVy] <device>
下面列舉幾個使用例子:
[root@Mysql1 ~]# gfs2_fsck  -y /dev/sdb5
Initializing fsck
Validating Resource Group index.
Level 1 RG check.
(level 1 passed)
Starting pass1
Starting pass1c
Pass1c complete
…………
Pass5 complete     
gfs2_fsck complete

2. gfs2_tool命令
 gfs2_tool命令引數較多,但使用並不複雜,它主要用來檢視、修改GFS2檔案系統的相關引數資訊。
下面列舉幾個使用例子:
1)檢視GFS2檔案系統掛載資訊
[root@web1 ~]# gfs2_tool df  /gfs2
/gfs2:
  SB lock proto = “lock_dlm”
  SB lock table = “mycluster:my-gfs2”
  SB ondisk format = 1801
  SB multihost format = 1900
  Block size = 4096
  Journals = 4
  Resource Groups = 19
  Mounted lock proto = “lock_dlm”
  Mounted lock table = “mycluster:my-gfs2”
  Mounted host data = “jid=2:id=65539:first=0”
  Journal number = 2
  Lock module flags = 0
  Local flocks = FALSE
  Local caching = FALSE

  Type           Total Blocks    Used Blocks     Free Blocks    use%          
  ————— —————– ————-  —————- ———–
  data           1220724         136578                                 1084146        11%
  inodes         1084263         117                                     1084146        0%

(2)gfs2_tool命令
2)鎖定與解鎖GFS2檔案系統:
[root@node1 gfs2]# gfs2_tool freeze  /gfs2
[root@node1 gfs2]# gfs2_tool unfreeze  /gfs2
 GFS2檔案系統被鎖定後,無法進行讀寫操作,直到被解鎖。
3)查詢GFS2可掛載的接點數
[root@web1 ~]# gfs2_tool journals /gfs2
journal2 – 128MB
journal3 – 128MB
journal1 – 128MB
journal0 – 128MB
4 journal(s) found.
這裡顯示了可掛載節點數為4,並且每個journal的大小為128M。
4)顯示GFS2的版本資訊:
[root@web1 ~]# gfs2_tool  version
gfs2_tool 0.1.62 (built Mar 31 2010 07:34:25)
Copyright (C) Red Hat, Inc.  2004-2006  All rights reserved

(3)gfs2-jadd命令
gfs2-jadd主要用來配置GFS2的Journals數量和大小,用法非常簡單:
gfs2_jadd [-cDhJjqV] /path/to/filesystem
下面列舉幾個用例:
設定Journals的大小為64M
[root@Mysql1 ~]# gfs2_jadd -J 64M
將GFS2可同時掛載的節點數目增加到5個
[root@Mysql1 ~]# gfs2_jadd  -j 5 /gfs2
 另外,另外gfs2_quota用於GFS2檔案系統磁碟配額管理,gfs2_convert是一個資料轉換應用程式,它可以對GFS檔案系統的後設資料進行更新,把它轉換為一個GFS2檔案系統。要深入瞭解它們的使用,請參考幫助資訊,這裡不在進行講述。

(完)