59 期 - RedHat Cluster for Oracle (上)

網管人雜誌

          本文刊載於 網管人雜誌第 59 期 - 2010 年 12 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。




文章目錄

1、前言
2、實作環境
3、RedHat Enterprise Linux 作業系統安裝
          RedHat Enterprise Linux Advanced Platform 5.4 (64 bit) 安裝
          設定網路卡備援機制
4、IBM System DS3400 Storage 儲存設備安裝及設定
          何謂儲存區域網路 (SAN) 及磁碟陣列 (RAID) 及熱備用 (Hot Sapre)
          IBM DS3400 Storage設定前置作業
          設定磁碟陣列 (RAID) 及熱備用 (HotSpare)
          規劃磁碟陣列 (RAID) 使用空間
          設定 Host Access 及 Host Group
          LUN Mapping 設定
5、RedHat Enterprise Linux安裝 Multipath 套件
          將伺服器上 HBA 卡與儲存設備進行連接
          RHEL 設定HBA卡備援機制
6、結語



1、前言

          在現今競爭激烈的商業環境中能提供給顧客一個高穩定性及反應快速的服務一直是企業營運環境所追求的目標,然而隨著時代的進步目前大多數企業都紛紛將作業環境轉移至電腦上,因此小至個人電腦大至科學運算無一不跟電腦牽連在一起。

          為了達成高穩定性及反應快速的服務提供給顧客的目標,因此企業的 IT 部門便會開始著手建置叢集 (Cluster) 機制,而一般來說叢集又可劃分為三種類型分別是 High Availability、Load Balancing、Grid Computing。

  • High Availability: 高可用性,也就是我們常聽到的 HA 機制 (例如 Active/Standby、Active/Active),此類型的叢集目的通常在於維持服務使得服務隨時處於高穩定的狀況中,例如企業營運環境中常常將資料庫伺服器導入此運作機制,將二台資料庫伺服器設定為 High Availability Cluster 只要其中一台伺服器因為不可抗拒或其它因素損壞時,另外一台伺服器可以在很短時間內將服務接手過來,使用者完全感覺不到有發生過任何事情。
  • Load Balancing: 負載平衡,此類型的叢集目的通常在於能夠同時服務為數眾多的服務請求,例如在企業營運環境中 AP 伺服器常常是這樣的角色,也就是前端佈署多台 AP 伺服器用來同時服務為數眾多的客戶端所送出的大量請求,並將使用者的服務請求進行處理後再寫到後端的資料庫伺服器中。
  • Grid Computing: 網格運算,此類型的叢集較少使用於企業營運環境上,一般通常運用於科學研究上例如將結合多台電腦的強大運算能力串連起來後同時運算找出人類基因的密碼、或者對抗癌症的方法、又或者分析外星人訊息……等。
          談到了高可用性便無法不談到 5 個 9 但何謂 5 個 9 呢? 一般指的就是服務運作高可用性 99.999% 而這樣的數字又代表什麼意義呢? 一般來說當系統的高可用性達到 99.999% 的水準時表示此系統在一年的運作時間當中停止服務的時間不到 6 分鐘,如下為一般解釋高可用性從 1 個 9 到 5 個 9 的服務中斷時間:
  • 90 %: 1 個 9,系統運作一年之中停止服務時間為 36.5 天
  • 99 %: 2 個 9,系統運作一年之中停止服務時間為 3.65 天
  • 99.9 %: 3 個 9,系統運作一年之中停止服務時間為 8.76 小時
  • 99.99 %: 4 個 9,系統運作一年之中停止服務時間為 52.56 分鐘
  • 99.999 %: 5 個 9,系統運作一年之中停止服務時間為5.256 分鐘
          了解上述高可用性 5 個 9 的意義後相信您應該了解要達成這樣的高可用性目標並不僅僅將伺服器建置叢集機制就可以達成,因為所謂的服務並不單單只是伺服器硬體及應用程式而以,還包括例如 網路設備、儲存設備、電力供應…等,也就是整個服務顧客流程中所會經過的企業節點設備都必須建置備援機制即常常聽到的預防單點故障 (SPOF,Single Point Of Failure),例如 我們雖然將伺服器群建立叢集機制但是儲存設備並沒有建置的情況下當儲存設備故障損壞時仍然造成企業服務停擺,又或者網路交換器只有建置一台的情況下也會因為其損壞而造成網路連線中斷進而影響到企業服務停擺,如下圖我們可以看到要預防單點故障最好的方法就是硬體設備最好都建置二套來達成互相備援的機制。




2、實作環境

IBM xSystem x3650 M3 伺服器 2台
  • 作業系統: RedHat Enterprise Advanced Platform 5.4 (64 bit)
  • Cluster Name: Oracle
  • Cluster IP:192.168.1.10
  • Hostname、IP: db1.weithenn.org、192.168.1.11 (Node1)
  • Hostname、IP: db2.weithenn.org、192.168.1.12 (Node2)
  • 安裝套件: rdac-LINUX-09.03.0C05.0331-source.tar.gz (IBM RDAC)
  • HBA 卡: QLogic QLE2462 Dual Port (4Gbps)
  • 資料庫 : Oracle 10g
  • Base: /oracle
  • Application Home: /oracle/product/10.2.0/db_1
  • Inventory: /oracle/oraInventory
  • SID: testdb (/oracledata/testdb)

IBM System DS3400 Storage
  • 硬碟: 3.5” SAS 300GB *5
  • RAID Level: RAID-10 (4顆 HDD)
  • HotSpare: 1顆 HDD
  • Arrary Name: SQLHA
  • LUN: Quorum (LUN0)、Database (LUN1)
  • Host Group: DB
  • Host Access: db1、db2
  • 管理主機:  192.168.128.100 /24
  • ControllerA: 192.168.128.101 /24
  • ControllerB: 192.168.128.102 /24

ASUS F9S (初始設定 Storage 管理主機)
  • 作業系統: Windows 7
  • 安裝軟體: IBM System Storage DS Storage Manager 10



3、RedHat Enterprise Linux作業系統安裝

RedHat Enterprise Linux Advanced Platform 5.4 (64 bit) 安裝

          要建置 RedHat Enterprise Linux 的叢集機制您必須要購買 RedHat Enterprise Linux Advanced Platform (簡稱 RHEL AP) 授權版本才能安裝相關的叢集套件並建置叢集系統,在安裝過程中唯一要注意的是您必須要正確輸入所購買的 RHEL AP 授權註冊序號才可安裝 Cluster 相關套件,若您未輸入 RHEL AP 的註冊序號而是選擇略過您將發現安裝過程中要勾選安裝套件時不會出現 Cluster 相關套件讓您進行勾選及安裝。

設定網路卡備援機制

          在網路卡方面為了要避免單點故障 (SPOF) 的風險,例如 網路卡損壞、網路線被扯開掉落、網路卡所連接的交換器損壞…等,因此在 RHEL 作業系統上將二張實體網路卡透過內建的 Bonding 模組綁定為在邏輯上視為一塊網路卡的虛擬網路卡,並且將虛擬網路卡設定為 Active-Backup 模式的網卡容錯 (Fault Tolerance) 機制,並且將實體網路線分別連接至不同的網路交換器上,如此一來便可防止單點故障的情況發生。

          此次實作中將二片實體網路卡 eth0、eth1 綁定為一片虛擬網卡 bond0,先將 eth0、eth1 網卡設定檔中加上 MASTER=bond0 及 SLAVE=yes 內容,之後在虛擬網卡 bond0 中填入 IP 位址資訊,若設定主機為Node 1 請填入 IP Address 為【192.168.1.11】而 Node 2 主機請填入IP Address 為【192.168.1.12】,以下為 Node 1 主機設定資訊。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
   DEVICE=eth0
   BOOTPROTO=none
   HWADDR=00:15:17:EF:E5:28
   ONBOOT=yes
   MASTER=bond0
   SLAVE=yes
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
   DEVICE=eth1
   BOOTPROTO=none
   HWADDR=00:15:17:EF:E5:29
   ONBOOT=yes
   MASTER=bond0
   SLAVE=yes
# vi /etc/sysconfig/network-scripts/ifcfg-bond0
   DEVICE=bond0
   BOOTPROTO=none
   ONBOOT=yes
   IPADDR=192.168.1.11
   NETMASK=255.255.255.0

          完成網路卡設定內容後,請修改 RHEL 模組設定檔內容設定載入虛擬網卡 Bonding 模組及指定網路卡容錯機制 (mode=1),其中二片網路卡之間互相偵測存活時間設定為 100 毫秒 (miimon=100) 也就是當系統上 Active 網卡發生問題超過 100毫秒後仍無回應時 Backup 網卡會馬上接手網路連線作業,因此您不會感覺到有任何網路斷線的情況發生,設定完成後重新啟動網路卡服務後即可查看 Bonding 模組來確定剛才的變更設定是否生效。
# vi /etc/modprobe.conf
   alias bond0 bonding
   options bond0 miimon=100 mode=1
# service network restart
# cat /proc/net/bond0/bonding
   Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008)
   Bonding Mode: fault-tolerance (active-backup)
   Primary Slave: None
   Currently Active Slave: eth0
   MII Status: up
   MII Polling Interval (ms): 100
   Up Delay (ms): 0
   Down Delay (ms): 0
   Slave Interface: eth0
   MII Status: up
   Link Failure Count: 0
   Permanent HW addr: 00:15:17:ef:e5:28
   Slave Interface: eth1
   MII Status: up
   Link Failure Count: 0
   Permanent HW addr: 00:15:17:ef:e5:29



4、IBM System DS3400 Storage 儲存設備安裝及設定

何謂儲存區域網路 (SAN) 及磁碟陣列 (RAID) 及熱備用 (Hot Sapre)

          在開始說明 IBM System DS3400 Storage 儲存設備以前我們先大致說明儲存設備的類型,在目前企業環境中儲存設備的存取方式大約有三種也就是 DAS(Direct Attached Storage)、NAS(Network Attached Storage)、SAN(Storage Area Network),而 SAN 又因為傳輸媒介不同可區分為 FC-SAN (Fiber Channel SAN)、IP-SAN (iSCSI SAN),本次實作的 IBM System DS3400 Storage 儲存設備環境即為其中的 FC-SAN,從下面二張圖表我們可以了解到 DAS、NAS、SAN 在資料存取上的差異點。



          本次的實作中 IBM System DS3400 Storage 儲存設備擁有 5 顆 SAS 硬碟,我們將其中 4 顆硬碟建立磁碟陣列 (RAID, Redundant Array of Independent Disks) 中 RAID-10 Level,也就是結合 RAID 0 快速存取及 RAID 1 硬碟保護這二種磁碟陣列優點而成,以因應屆時資料庫需要高速存取及容許硬碟損壞的需求,並且另外配置1顆硬碟做為熱備用 (通常稱為 Hot Spare 或 Hot Standby) 使用以便儲存設備中一有任何一顆硬碟損壞時儲存設備能在第一時間命令此顆硬碟馬上接手進行整個磁碟陣列重建的作業。

IBM DS3400 Storage設定前置作業

          此次實作的 IBM DS3400 Storage 儲存設備共安裝二片控制器 (Controller) 用意為互相備援之用,在開始設定 IBM DS3400 Storage 以前要先進行二項設定前置作業,首先請將二片控制器的管理介面網路接孔 (Ethernet Port) 與管理主機都進行連接 (例如 一起接至同一台小交換器上),以便設定途中二片控制器能將設定值互相同步達成控制器備援目的,接下來請先將管理主機 (例如 筆記型電腦) 安裝 IBM DS3400 Storage 管理軟體 IBM Storage Manager 後與二片控制器上 Ethernet  Port 1 進行連接,連接完畢後將管理主機設定 IP 位址為 192.168.128.100/24 設定完成後可嘗試是否能 Ping 到 IBM DS3400 Storage 二片控制器 Ethernet Port 1 的預設 IP 位址 192.168.128.101、192.168.128.102。 (請注意: 若您接到的是控制器中 Ethernet Port 2 則預設 IP 位址為 192.168.129.101、192.168.129.102)

          當您確定管理主機能夠 Ping 到 IBM DS3400 Storage 控制器上二個預設管理 IP 位址之後,即可開啟 IBM Storage Manager 來準備管理,當 IBM DS3400 Storage開啟後您在管理視窗中可看到【Discovered Storage Subsystems】項目,請對此項目按下滑鼠右鍵後選擇【Add Storage Subsystem】項目後再接下來跳出視窗中請先選擇【Out-of-band management】項目後輸入二片控制器的預設 IP 位址,此例中輸入 【192.168.128.101、192.168.128.102】 輸入完成後按下【Add】按鈕後即可開始準備管理IBM DS3400 Storage。


設定磁碟陣列 (RAID) 及熱備用 (HotSpare)

          順利與儲存設備連接後我們可以開始準備管理它吧!! 請在 IBM Storage Manager 管理視窗中選擇【Storage Subsystem Unnamed】項目後按下右鍵選擇【Manage Storage Subsystem】,此時您可看到此台儲存設備的相關資訊 例如 控制器數量、硬碟數量、可用空間…等,首先我們先進行熱備用 (HotSpare) 硬碟的指定,請選擇【Configure】頁籤後選擇【Configure Hot Spares (Manual)】來手動指定哪一顆硬碟要擔任熱備用硬碟的角色,在此例中我們指定 【Slot 5】 的硬碟為熱備用硬碟,請先選擇 Slot 5 的硬碟後按下【Assign】按鈕後即可看到在 Hot spare drives 視窗下方中出現 Slot 5 的硬碟資訊,並且看到 Drive 圖示為十字型紅色底 (像是把硬碟貼上 OK 蹦的註記,表示它的用途是救援用),完成熱備用硬碟指定後按下【Close】按鈕即可結束設定,設定完成後在管理視窗中【Summary】頁籤中可以看到 Hot Spare Drives 數量顯示為數字1且狀態為 Standby,如此即表示我們已經成功指定一顆硬碟作為熱備用用途,那麼接下來便可以準備設定磁碟陣列。


          在管理視窗中請選擇【Configure】頁籤後選擇【Create Arrays and Logical Drives】項目後接著選擇【Array:Create a new array using the unconfigured capacity in the storage subsystem】 項目然後按下【Next】按鈕來準備設定磁碟陣列,在跳出的 Create Arrays and Logical Drives – Specify Array 設定視窗中先填入【Array name】 也就是我們等一下要新增磁碟陣列的名稱此例中我們輸入【SQLHA】,之後在 Drive selection choices 項目中請選擇【Manual (Advanced):Choose specific drives to obtain capacity for the new array.】之後請按下【Next】,接下來在 RAID Level 中選擇此次設定的【RAID1】?  先前不是說要設定 RAID10 嗎? 怎麼在這裡卻選擇 RAID1 而且在 RAID Level 下拉選項中也看不到 RAID10 的選項? 再您選擇 RAID1 之後請注意觀看右邊的說明文字,說明內容為當您選擇的硬碟數量超過四顆 (包含四顆) 時 IBM DS3400 Storage 儲存設備會自動幫您建立為 RAID10 的 RAID Level,接下來請再左邊 Unselected drives 視窗中選擇 【Slot 1 ~ Slot 4】 的硬碟後按下【Add】按鈕後則硬碟會跑到右邊 Selected drives (mirrored pari) 視窗中,確定硬碟數量無誤後按下 【Calculate Capacity】按鈕後儲存設備即開始幫您計算這樣的 RAID Level 建立後可使用的空間有多少,此例計算空間完畢後如下圖我們可以看到當 RAID 建立完成後大約有 558GB 的空間可以使用,確定要建立 RAID 之後按下【Finish】 按鈕即開始建立磁碟陣列 (此時硬碟燈號便開始快速閃爍,表示在進行 RAID 初始化)。

          設定完成後在管理視窗中【Summary】頁籤中可以看到 Arrays & Logical Drives 中 Arrays 項目數量顯示為數字 1,而 Capacity 中顯示可使用空間為 558GB,如此即表示我們已經成功建立磁碟陣列 RAID10,那麼接下來便可以準備分配磁碟陣列空間。


規劃磁碟陣列 (RAID) 使用空間

          當磁碟陣列完成初始化建立後接下來便是分配此一磁碟陣列上的空間,再下面的設定中會將磁碟陣列 558GB 空間切割分配為二個空間大小一個為 2GB 規劃日後為 Quorum Disk 使用,另一個空間大小為剩下約 556GB 規劃存放 Oracle 資料庫 (datafile、control file、redo log) 使用。

          在管理視窗中請選擇【Configure】頁籤後選擇【Create Arrays and Logical Drives】項目後接著選擇【Logical Drive: Create a new logical drive using free capacity on an existing array.】 項目,在 Select a free capacity node 中您可看到剛才建立的 SQLHA (RAID10, 558GB) 下有個【Free Capacity (558GB)】字樣,點選該項目後按下【Next】繼續,在 New logical drive capacity 輸入數值【2】而 Units 則選擇單位為【GB】,之後 Logical Drive name 則請填入此一空間的名稱,此例中我們輸入名稱為【Quorum】,再 Logical Drive I/O characteristics 中使用預設的【File system(typical)】 項目即可接著按下【Next】繼續設定,在 Select a mapping option 中請選擇【Map later】後按下【Finish】即完成第一塊分割使用空間設定。
接下來請依上述建立步驟方式將剩下儲存空間約 556GB 給 Logical Drive name 名稱為【Database】後同樣選擇【Map later】後按下【Finish】即完成第二塊分割使用空間設定。

          設定完成後在管理視窗中【Summary】頁籤中可以看到 Arrays & Logical Drives 中 Logical Drives 項目數量顯示為數字 2,表示我們已經成功建立二個 Logical Drives空間,接下來只要建立 Host Access、Host Group 後便可進行 LUN Mapping 的動作了,這也是剛才我們為何先選擇 Map later 的原因。


設定 Host Access 及 Host Group

          在開始設定以前建議您先將安裝於 IBM x3650 上面二片 HBA 卡的 WWN 給記錄起來 (一般來說會貼在 HBA 卡上),以便後續設定時將正確的 WWN 指定給相對應的 Host,本次二台 IBM x3650伺服器分別都插上二片 HBA 卡,其 WWN 資訊如下
db1.weithenn.org
  • HBA1(WWPN):21:00:00:02:4f:ff:29:30:1a
  • HBA2(WWPN):21:00:00:02:4f:ff:29:30:1b
db2.weithenn.org
  • HBA1(WWPN):21:00:00:02:4f:ff:29:31:1c
  • HBA2(WWPN):21:00:00:02:4f:ff:29:31:1d

          請在管理視窗中選擇【Configure】頁籤後選擇【Configure Host Access (Manual)】項目,在 Enter host name 中請您輸入此次要與 IBM DS3400 Storage 主機連接的 IBM x3650 資訊,此例中我們輸入【db1】而 Select host type 則選擇此次 IBM x3650 伺服器所安裝的作業系統類型【Linux】 後按下【Next】 按鈕繼續,在 Known HBA host ports 中選擇伺服器 db1 所屬的二片 HBA 卡 WWPN 後按下【Add】 按鈕後即可看到所選取的 WWPN 加入到右邊的 Selected HBA host port identifiers/aliases 視窗內,確定無誤後按下【Next】繼續設定,由於我們尚未建立  Host Group 因此請先選擇【No: This host will NOT share access to the same logical drives with other hosts】按下【Next】會顯示我們剛才設定的 Host name、Host Type、WWPN等資訊,確定無誤後按下【Finish】即完成 Host Access 設定,接下來請依上述步驟設定方式新增第二台伺服器其 Host name 為 【db2】,並且將db2 伺服器所屬 HBA 卡的 WWPN 加入,如此即完成建立 Host Access。


          接下來為建立 Host Group 請在管理視窗中選擇 【Configure】頁籤後選擇【Create Host Group】項目後,在 Enter new host group name 中輸入 Host Group 的名稱此例輸入【DB】,並於 Select hosts to add 中選擇剛才建立的 【Host db1、Host db2】 後按下【Add】後即可看到選擇的 Host 出現於 Hosts in group 內,確定無誤後按下【OK】即完成 Host Group 的建立。




LUN Mapping 設定

          當完成 Logical Drive、Host Access、Host Group 的建立後最後就剩 LUN Mapping 的部份,LUN (Logical Unit Number) 為儲存設備空間在空間表示上最小的邏輯單位,而究竟 LUN Mapping 又是什麼意思呢? 簡單來說就是將剛才建立的 Logical Drive、Host Group 進行相互對應連結 (Mapping) 的動作,經過這個連結的動作之後 IBM x3650 伺服器上的作業系統便可以看到 IBM DS3400 Storage 的儲存空間了。

          請在管理視窗中選擇【Configure】頁籤後選擇【Create Host-to-Logical Drive Mappings】項目,您會在 Select a host group or host 中看到剛才建立的 Host Group DB 及加入此群組的 Host db1、Host db2 當然若您有多個 Host Group 上也會在此顯示,因為本次實作只有建立一個 Host Group 因此只有顯示一個群組,點選此群組後按下【Next】,此時在 Select logical drives 視窗中可看到我們在前面步驟所建立 Quorum (2GB)、Database (556GB) 的 Logical Drive資訊,請勾選【Select all logical drives】項目後按下【Finish】按鈕便完成將 Logical Drive 與 Host Group 進行對應連結的動作,而儲存設備會自動將 LUN ID 自動指派給相關的 Logical Drive,所以 Quorum 會被自動指定為 LUN0 而 Database 則為 LUN1。

          設定完成後在管理視窗中【Summary】頁籤中可以看到 Host & Mappings 中 Configure Hosts 項目數量顯示為數字 2,而 Host-to-Logical Drive Mappings項目數量顯示為數字 4,表示我們已經成功建立Logical Drives與 Host Group對應連結的動作。





5、RedHat Enterprise Linux安裝 Multipath 套件

將伺服器上 HBA 卡與儲存設備進行連接

          與網路卡備援模式相同概念,在 HBA 卡方面為了要避免單點故障 (SPOF) 的風險,例如 HBA卡損壞、Fibre線被扯開掉落、HBA卡所連接的 SAN Switch或 Storage Controller損壞……等,而且當有多片 HBA 卡透過 Fibre 線連接至儲存設備存取 LUNs 時,會因為多條路徑的關係使得 RHEL 會錯認有多個 LUNs 此時也必須要依靠 Multipath 機制來告知 RHEL 其實有些 LUNs 是重複的。

          此次實作的儲存設備為 IBM DS3400 Storage 而 IBM 有專門為此儲存設備及相對應的 HBA 卡發行 Multipath 軟體稱為 RDAC (Redundant Disk Array Controller) 驅動可安裝於 RHEL 上面運作 (此次實作並未使用 RHEL 內建的 Multipath),並透過實體接線連接至不同的 SAN Switch 或儲存設備來提供資料傳輸上具備多路徑選擇及備援功能,如此一來便可防止 HBA 卡單點故障的情況發生。

          此次實作中 HBA 卡與儲存設備實體線路 Fibre 接法如下圖所示:


RHEL 設定HBA卡備援機制

          此次在 IBM DS3400 Storage 上建立 2 個 LUNs 而 RHEL 主機上的 HBA 卡也透過實體多條路徑與儲存設備進行連接,在尚未將 RHEL 設定 Multipath 機制時可發現 RHEL 會誤認為系統目前抓到 4 個 LUNs (因為多條路徑的關係),待後續安裝 IBM RDAC 驅動於 RHEL 上並將 RHEL 重新開機完成載入後即可順利識別儲存設備上的 2 個 LUNs,並且當 HBA 卡或 Fibre 線或 Storage Controller 損壞時能提供另一條路徑繼續傳輸資料達到容錯的目的。

查看RHEL 掛載 LUNs 的狀態
          在尚未安裝 IBM RDAC 驅動至 RHEL 主機以前我們可以透過指令查看 /proc/partitions 及 scsi_device 內容來了解目前 RHEL 所掛載的 LUNs,當您查看 scsi_device 時會發現有四個數字其代表的意義分別為 SCSI ID : Channel ID : ID : LUN Number,透過查看得到的資訊可以確定 RHEL 目前誤認為有 4 個 LUNs (因為多條路徑的關係有 2 個 LUNs 其實是重複的!!)
# cat /proc/partitions
   major minor  #blocks  name
      8     0  142577664 sda        
      8     1     120456 sda1
      8     2    8715262 sda2
      8     3   53014500 sda3
      8     4           1 sda4
      8     5   80726593 sda5
      8    16    2097152 sdb          //LUN 0 (Quorum)
      8    32    2097152 sdc          //LUN 0 (Quorum)
      8    48  582791168 sdd          //LUN 1 (Database)
      8    64  582791168 sde          //LUN 1 (Database)
# ls -ld /sys/block/sd*/device/scsi_device*
   lrwxrwxrwx 1 root root 0 Jul 28 12:02 /sys/block/sda/device/scsi_device:0:2:0:0 -> ../../../../../../../class/scsi_device/0:2:0:0
   lrwxrwxrwx 1 root root 0 Jul 28 12:08 /sys/block/sdb/device/scsi_device:5:0:0:0 -> ../../../../../../../../class/scsi_device/5:0:0:0
   lrwxrwxrwx 1 root root 0 Jul 28 12:08 /sys/block/sde/device/scsi_device:5:0:0:1 -> ../../../../../../../../class/scsi_device/5:0:0:1
   lrwxrwxrwx 1 root root 0 Jul 28 12:08 /sys/block/sdc/device/scsi_device:6:0:0:0 -> ../../../../../../../../class/scsi_device/6:0:0:0
   lrwxrwxrwx 1 root root 0 Jul 28 12:08 /sys/block/sdd/device/scsi_device:6:0:0:1 -> ../../../../../../../../class/scsi_device/6:0:0:1

下載及安裝 IBM RDAC 套件
          接下來請先下載相對應此次 HBA 卡及 RHEL 作業系統核心版本的 IBM RDAC 套件至 RHEL 本機上,並執行將 RDAC 套件解壓縮及安裝套件的動作。
# cd /tmp
# wget  http://www.lsi.com/rdac/rdac-LINUX-09.03.0C05.0331-source.tar.gz
# tar zxvf rdac-LINUX-09.03.0C05.0331-source.tar.gz
# cd linuxrdac-09.03.0C05.0331
# make clean
# make
# make install

修改 RHEL 開機設定檔
          安裝 IBM RDAC 套件後請修改 RHEL 開機設定檔修改前建議先備份原開機設定檔,在設定檔中我們先將 hiddenment 註解以便 RHEL 重新開機時能顯示開機選單供我們手動選擇開機項目,待之後確定 RDAC 能正確載入並開機完成後再將 RDAC 項目修改至預設開機項目上,請於開機設定檔中加上 RDAC 功能內容共四行,修改開機設定檔完成後請將 RHEL 重新啟動。
# cp /boot/grub/grub.conf /boot/grub/grub.conf.def
# vi /boot/grub/grub.conf
  default=0
  timeout=5
  splashimage=(hd0,0)/grub/splash.xpm.gz
  #hiddenmenu           //註解此行
  title Red Hat Enterprise Linux Server (2.6.18-164.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.18-164.el5.img
  title Red Hat Enterprise Linux Server (2.6.18-164.el5) with RDAC  //加入此四行內容
        root (hd0,0)
        kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet
        initrd /mpp-2.6.18-164.el5.img

確認 RDAC 驅動是否運作無誤
          將 RHEL 重新啟動後顯示開機選單時請選擇結尾有 with RDAC 字樣項目以便載入 IBM RDAC 驅動 (mpp) 進行開機,開機完成後我們可透過查看剛才的 /proc/partitions 及 scsi_device 內容確定 RDAC 驅動是否正常運作,再度查看 /proc/partitions 內容可以發現剛才重覆的 LUNs 消失了,相同的查看 scsi_device 內容也可以發現先前的5:0:0:0、5:0:0:1 及6:0:0:0、6:0:0:1 已經合併為 7:0:0:0、7:0:0:1,另外也可以透過指令來查看 RDAC 驅動 (mpp) 的相關內容
# cat /proc/partitions
   major minor  #blocks  name
      8     0  142577664 sda
      8     1     120456 sda1
      8     2    8715262 sda2
      8     3   53014500 sda3
      8     4            0 sda4
      8     5   80726593 sda5
      8    16    2097152 sdb
      8    32  582791168 sdc
# ls -ld /sys/block/sd*/device/scsi_device*
   lrwxrwxrwx 1 root root 0 Jul 28 12:52 /sys/block/sda/device/scsi_device:0:2:0:0 -> ../../../../../../../class/scsi_device/0:2:0:0
   lrwxrwxrwx 1 root root 0 Jul 28 13:05 /sys/block/sdb/device/scsi_device:7:0:0:0 -> ../../../../../../class/scsi_device/7:0:0:0
   lrwxrwxrwx 1 root root 0 Jul 28 13:05 /sys/block/sdc/device/scsi_device:7:0:0:1 -> ../../../../../../class/scsi_device/7:0:0:1
# ls –lR /proc/mpp

          現在我們可以確定 RDAC 驅動已正確運作於 RHEL 之上,請修改 RHEL 開機設定檔將顯示開機選單的 hiddenment 取消註解,並將預設開機項目指定為載入 RDAC 驅動 (將default 數值由 0 修改為 1),修改完成的開機設定檔內容如下,之後 RHEL 重新啟動時便不會顯示開機選單且自動載入 RDAC 驅動。
# cat /boot/grub/grub.conf
   default=1
   timeout=5
   splashimage=(hd0,0)/grub/splash.xpm.gz
   hiddenmenu                                  
   title Red Hat Enterprise Linux Server (2.6.18-164.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.18-164.el5.img
   title Red Hat Enterprise Linux Server (2.6.18-164.el5) with RDAC    
        root (hd0,0)
        kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet
        initrd /mpp-2.6.18-164.el5.img



6、結語

          在此篇文章中我們已經完成了叢集運作及預防單點失敗 (SPOF) 的前置作業包括了RHEL AP 5.4 作業系統安裝、設定網路卡備援機制、叢集主機連接至儲存設備、安裝及設定 IBM DS3400 儲存設備、設定 RHEL HBA 卡 Multipath 多路徑機制…等,當叢集環境準備完成後在下一篇文章中我們便可以著手進行叢集的設定及進行叢集服務上線前的災難演練了!!