︿
Top

網管人雜誌

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



文章目錄

1、前言
2、實作環境
3、實作網路架構圖
4、iSCSI 運作原理說明
5、叢集主機設定網路功能
          關閉 Iptables 防火牆及 SELinux安全機制
          設定網路 IP 位址資訊
6、叢集主機為 sdb 硬碟建立分割區
7、叢集主機安裝相關套件
8、結語



1、前言

          目前市場上雲端運算喊得震天價響,但是追根究底提供這樣高可用性並具備高彈性的底層運算基礎便是來自於虛擬化技術,各企業的 IT 人員了解到虛擬化技術所帶來的高可用性及動態遷移性等好處之後,紛紛想將公司目前運作於實體伺服器之上的商業服務轉移至虛擬機器上,然而想要建置一套具備高可用性及可隨時動態遷移的彈性化虛擬架構其建置費用並不便宜,因此很多中小企業在進行虛擬化建置評估後便放棄導入的念頭,其放棄的原因在於要建置完整的虛擬化架構至少需要完備的機房、穩定可靠的備援電力、高效能伺服器、高效能共用儲存設備、高頻寬儲存傳輸環境…等因素,因此可想而知導入虛擬化的預算所費不貲令中小企業 IT 人員望之卻步。

          然而若是您只是想要單純將公司多台實體伺服器進行伺服器合併 (Server Consolidation) 從而方便管理並且避免伺服器閒置導致資源浪費的話,或許您可以考慮看看使用免費版本虛擬化平台 Hypervisor (例如 VMware vSphere Hypervisor、Citrix XenServer、Microsoft Hyper-V Server 2008),所謂的 Hypervisor 指的就是介於軟體與韌體之間一層極小的程式碼它可以為運作於其上的虛擬機器提供動態的硬體資源配置及彈性設定並且管理虛擬資源,如此一來我們便可以使用一台資源豐富的實體伺服器安裝 Hypervisor 之後於其上同時運作多台虛擬機器 (VM),並且配合此篇文章來建置高可用性的 iSCSI 共用儲存設備以提供共用儲存區域資源給予虛擬化平台使用,也就是屆時都將所有虛擬機器存放於iSCSI 儲存設備內,而高效能伺服器僅僅使用其 CPU 及記憶體等運算資源。

          目前企業運作環境中對於共用儲存設備的存取方式約略可以區分為三種即  直接連接儲存 (Direct Attached Storage,DAS)、網路連接儲存(Network Attached Storage,NAS)、儲存區域網路(Storage Area Network,SAN),其中儲存區域網路 SAN 又因為所使用的傳輸媒體介質不同又可以區分為使用光纖作為傳輸媒介的 (Fiber Channel SAN,FC-SAN) 及使用一般乙太網路的 (iSCSI SAN,IP-SAN),本次實作便是建置 IP-SAN 共用儲存資源並且提供高可用性的共用儲存環境給予 Hypervisor 掛載使用。

          iSCSI SAN 簡稱為 IP-SAN,是由 Cisco 與 IBM 一同發起並且交由網際網路工程任務小組 (Internet Engineering Task Force,IETF) 於 2003 年 2 月正式通過網際網路小型計算機系統介面 (Internet SCSI,iSCSI) 的標準,此項技術簡單來說便是將傳統上僅能用於本機傳輸的 SCSI 協定使其可以透過 TCP/IP 網路承載以達到資料高速傳輸的需求,iSCSI 傳輸協定為透過 TCP/IP 的 Port 860 及 3260 作為溝通使得二個主機之間 (Target、Initiator) 可以利用 iSCSI 協定來交換資料傳輸的 SCSI 指令集,這項技術使得主機之間可以透過高速的區域乙太網路將身處於遠端的儲存設備模擬為本地端的儲存設備,並且此項技術最大的優點在於其使用的傳輸線材、網路交換器、網路卡皆可以使用企業繼有的網路架構來達成,這也是近幾年來 iSCSI 技術迅速竄紅的原因之一。

          本次實作內容中將使用 CentOS 作業系統中的 scsi-target-utils 套件來建立軟體式的 iSCSI Target,並且使用 DRBD 套件透過高效能 Block Level 傳輸方式來即時 (Realtime) 同步二台叢集主機之間 iSCSI Target 內儲存的資料,並且配合 OpenSource 中赫赫有名的高可用性 (High Availability,HA)  Heartbeat 套件來監控二台叢集主機之間的連線狀態以便判斷 Active/Standby 叢集主機節點之間是否能夠互相存取對方,當其中一台叢集節點主機因為發生不可預期因素損壞時待命的叢集主機便會立即時接手相關服務 (約 1 ~ 2 分鐘以內) 達成企業提供高可用性服務之目標,最後則是使用免費版本的虛擬化平台 VMware vSphere Hypervisor 上內建的軟體式 iSCSI Initiator (iSCSI Software Adapter) 來掛載 iSCSI Target 所分享的儲存資源至本地端資源池 Datastore 上來存放運作的虛擬主機。



2、實作環境

擔任 iSCSI Target 叢集主機環境
CentOS 5.5 (Kernel 2.6.18-194.el5) *2台,每台叢集主機各配備 2 顆硬碟其用途及空間分配如下:
  • sda: 10GB (安裝作業系統及相關套件)
  • sdb: 10GB (iSCSI Target 共用儲存空間)

每台叢集主機安裝的套件及版本資訊如下:
  • drbd83-8.3.8-1.el5.centos
  • kmod-drbd83-8.3.8-1.el5.centos
  • heartbeat-ldirectord-2.1.3-3.el5.centos
  • heartbeat-stonith-2.1.3-3.el5.centos
  • heartbeat-2.1.3-3.el5.centos
  • heartbeat-pils-2.1.3-3.el5.centos
  • scsi-target-utils-0.0-6.20091205snap.el5_5.3
  • libibverbs-1.1.3-2.el5
  • libibverbs-devel-1.1.3-2.el5
  • librdmacm-devel-1.0.10-1.el5
  • librdmacm-1.0.10-1.el5

每台叢集主機分別配備四片單埠實體網路卡其設定資訊如下:
  • 屆時的 Primary Node 或稱為 Active Node
  • 主機名稱 (Hostname): node1.weithenn.org
  • 服務 IP 位址 (網卡 bond0): 10.10.25.137
  • 心跳線 IP 位址 (網卡 bond1): 192.168.1.1
  • 屆時的 Secondary Node 或稱為 Standby Node
  • 主機名稱 (Hostname): node2.weithenn.org
  • 服務 IP 位址 (網卡 bond0): 10.10.25.138
  • 心跳線 IP 位址 (網卡 bond1): 192.168.1.2

高可用性叢集資訊如下:
  • 虛擬叢集 IP 位址 (網卡 bond0:0): 10.10.25.136
  • 叢集資源名稱: ha


擔任 iSCSI Initiator 主機環境
  • VMware ESX 4.1.0 (Build Number 260247)
  • Service Console IP 位址 (管理): 10.10.25.131
  • Vmkernel IP 位址 (存取 iSCSI Target 儲存資源): 10.10.25.133



3、實作網路架構圖

          以下是本文實作環境中,所採用的網路架構示意圖:

圖 1、高可用性 iSCSI Target 實作網路架構圖



4、iSCSI 運作原理說明

          iSCSI 技術可以區分為 iSCSI 目標端 (iSCSI Target)iSCSI發起端 (iSCSI Initiator),其中 iSCSI Target 可以區分為體式或體式二種技術來建置完成,所謂的硬體式 iSCSI Target 通常表示該儲存設備中內部的硬體控制器內含有可以同時處理 TCP/IP 封包進行 I/O 加速的 TCP 卸載引擎 (TCP Offload Engine,TOE) 以及專門用於處理 iSCSI PDU 封包晶片的磁碟陣列控制器所組合而成,因此在不管是一般網路的 TCP/IP 封包或是傳送資料的 iSCSI 封包其處理效能上非常優異但是相對來說其設備費用較為昂貴,若是站在成本因素考量上或許您可以考慮使用一般的伺服器配合作業系統及相關軟體套件來建置一套軟體式 iSCSI Target,並用它來接收及處理 iSCSI Initiator 所傳輸過來的 iSCSI 指令集以取代費用高昂的 IP-SAN 儲存設備,當然軟體式 iSCSI Target 在 TCP/IP 封包及 iSCSI 封包處理效能上與專用的儲存設備相比之下則較為普通。

          iSCSI Initiator 也可以區分為硬體式或半硬體式及軟體式等三種技術,所謂的硬體式 iSCSI Initiator 通常指的是在主機上安裝一片 iSCSI 主機匯流排介面卡 (iSCSI Host Bus Adapter, iSCSI HBA),此 iSCSI HBA 介面卡上含有一般 TCP/IP 網路控制晶片並加上專門處理 iSCSI PDU 指令集封包晶片,因此安裝此片介面卡的主機在運作時因為在介面卡部份它就可以直接處理 TCP/IP 封包及 iSCSI PDU 指令集,所以配備此介面卡能夠有效減輕主機端的運算效能但是在價格上與 FC HBA 相去不遠為其缺點也是至今無法普及的原因,而半硬體式 iSCSI Initiator 與一般的網路卡最主要不同的地方在於其擁有 TCP 卸載引擎晶片 (TCP Offload Engine,TOE),因此此介面卡可以直接處理 TCP/IP 封包而主機端只要專心處理 iSCSI PDU 指令集封包即可,對於主機端的運算效能可以在某些程度上有所減輕其介面卡的價格約為一般網路卡的 3 ~ 5 倍,最後則是軟體式的 iSCSI Initiator 其透過軟體模擬方式將現有主機及一般網路卡進行模擬,當然此方式最大的優點在於費用便宜並且使用繼有的介面卡,然而相對的由於使用軟體模擬的方式因此所有的 TCP/IP 封包及 iSCSI PDU 指令集的運算任務都將落在主機端上來負責封包的運算及處理,因此在主機端效能表現上是三種技術中最差的。

          下列圖表為將 iSCSI Initiator 的連接程序從最底層的實體介面、乙太網路、介面卡驅動程式、TCP/IP 協定、iSCSI Layer、SCSI Layer 至最上層的作業系統進行三種技術的比較,透過下列比較及圖表相信讀者對於採用何種介面卡及技術時對於主機端效能的影響將更有概念。
  • 介面卡費用 (高至低): 硬體式 iSCSI HBA  >  半硬體式 TOE  >  軟體式
  • 消耗主機效能 (高至低): 軟體式  >  半硬體式 TOE  >  硬體式 iSCSI HBA

圖 2、不同的 iSCSI Initiator 所佔用主機端運算效能影響比較表



5、叢集主機設定網路功能

關閉 Iptables 防火牆及 SELinux安全機制

          於安裝 CentOS 時請注意只安裝作業系統於 sda 硬碟即可 sdb 硬碟在安裝過程中先不用理它後續設定步驟中會進行相關處理,同時為了使設定過程中能夠順利進行不被干擾因此請先將二台叢集節點主機的防火牆 (Iptables) 及安全稽核機制 (SELinux) 關閉以利建置設定過程順利執行,待建置完成後再依相對應的服務 Port 號進行允許通過的動作,在本文相關操作中若沒有特別強調則表示二台叢集主機都要進行相關設定,另外在設定過程中二台叢集主機內的設定檔內容可能大部份內容都相同僅僅部份不同,因此在設定上請小心而筆者屆時也會適時提醒您其不同之處 (因為設定檔內容設定錯誤可能造成屆時叢集無法運作!!),下列關閉防火牆及安全機制服務的操作步驟叢集主機 Node1、Node2 上都必須執行。
# service iptables stop      //停止 IPTables 防火牆服務
# service iptables status    //查看 IPTables 防火牆狀態
  Firewall is stopped.
# chkconfig iptables off     //關閉 IPTables 開機自動啟動機制
# chkconfig iptables --list  //確認 IPTables 開機自動啟動機制已關閉
  iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off
# sestatus                   //確認 SELinux 安全機制已關閉
  SELinux status:                 disabled

設定網路 IP 位址資訊

          在叢集主機實體網路卡方面為了盡量避免「單點故障 (Single Point Of Failure,SPOF)」 的風險發生例如: 網路卡損壞、網路線被扯開或脫落、網路卡所連接的網路交換器損壞…等因素造成網路傳輸中斷,因此在 CentOS 作業系統上將二張實體網路卡透過內建的 Bonding 模組綁定為在邏輯觀念上視為一張網路卡的虛擬網路卡,並且將該虛擬網路卡設定為 Active-Backup 模式的網卡容錯 (Fault Tolerance) 機制,也就是平時只有一片實體網路卡會進行資料傳輸而另外一片網路卡為待命狀態,待 Active 網路卡傳輸發生異常中斷時 Backup 網路卡才接手並繼續剛才的傳輸工作,由於切換網路卡的時間差非常短 (100 毫秒) 因此並不會感覺到有斷線的狀況發生,當網路卡綁定的設定動作完成後請將連接於實體網路卡的網路線分別連接至不同的網路交換器上,並且請將二台網路交換器的電源也分接於不同的 UPS 迴路之上,如此一來便可以有效防止單點故障的情況發生在實體網路卡、網路線、網路交換器之等網路節點上面。

          此次實作中每台叢集主機共配備了四片實體網路卡,我們將其中二片實體網路卡 eth0、eth1 綁定為一片虛擬網路卡 bond0作為屆時提供 iSCSI Target 儲存資源服務,而另外二片實體網路卡 eth2、eth3 則綁定為另一片虛擬網路卡 bond1 作為二台叢集主機之間互相偵測對方是否運作的心跳線,在設定網路 IP 位址到網路卡設定檔的過程中必須要注意的地方為將 eth0、eth1 網卡設定檔加上 MASTER=bond0SLAVE=yes 內容,而 eth2、eth3 則加上 MASTER=bond1SLAVE=yes 請注意不要設定 IP 位址相關資訊於實體網路卡上,您必須將 IP 位址及網路遮罩等相關設定至虛擬網路卡 bond0 及 bond1 上。

叢集主機 Node1 虛擬網路卡
  • bond0 的 IP 位址: 10.10.25.137 (由網路卡 eth0、eth1 組成)
  • bond1 的 IP 位址: 192.168.1.1 (由網路卡 eth2、eth3 組成)


叢集主機 Node2 虛擬網路卡
  • bond0 的 IP 位址: 10.10.25.138 (由網路卡 eth0、eth1 組成)
  • bond1 的 IP 位址: 192.168.1.2 (由網路卡 eth2、eth3 組成)

          叢集主機 Node1 實體網路卡 (eth0、eth1、eth2、eth3) 及虛擬網路卡 (bond0、bond1)設定檔內容如下:
# vi /etc/sysconfig/network-scripts/ifcfg-eth0  //實體網路卡 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  //實體網路卡 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 //虛擬網路卡 bond0
  DEVICE=bond0                            
  BOOTPROTO=none                        
  ONBOOT=yes                              
  IPADDR=10.10.25.137                      
  NETMASK=255.255.255.0
# vi /etc/sysconfig/network-scripts/ifcfg-eth2  //實體網路卡 eth2
  DEVICE=eth2                            
  BOOTPROTO=none                      
  HWADDR=00:15:17:EF:E5:30            
  ONBOOT=yes                            
  MASTER=bond1                          
  SLAVE=yes                                
# vi /etc/sysconfig/network-scripts/ifcfg-eth3  //實體網路卡 eth3
  DEVICE=eth3                            
  BOOTPROTO=none                        
  HWADDR=00:15:17:EF:E5:31            
  ONBOOT=yes                              
  MASTER=bond1                            
  SLAVE=yes                                
# vi /etc/sysconfig/network-scripts/ifcfg-bond1 //虛擬網路卡 bond1
  DEVICE=bond1                            
  BOOTPROTO=none                        
  ONBOOT=yes                              
  IPADDR=192.168.1.1                      
  NETMASK=255.255.255.0


          叢集主機 Node2 實體網路卡 (eth0、eth1、eth2、eth3) 及虛擬網路卡 (bond0、bond1)設定檔內容如下:# vi /etc/sysconfig/network-scripts/ifcfg-eth0  //實體網路卡 eth0
  DEVICE=eth0                            
  BOOTPROTO=none                      
  HWADDR=00:15:17:AB:ZD:28            
  ONBOOT=yes                            
  MASTER=bond0                          
  SLAVE=yes                                
# vi /etc/sysconfig/network-scripts/ifcfg-eth1  //實體網路卡 eth1
  DEVICE=eth1                            
  BOOTPROTO=none                        
  HWADDR=00:15:17:AB:ZD:29            
  ONBOOT=yes                              
  MASTER=bond0                            
  SLAVE=yes                                
# vi /etc/sysconfig/network-scripts/ifcfg-bond0 //虛擬網路卡 bond0
  DEVICE=bond0                            
  BOOTPROTO=none                        
  ONBOOT=yes                              
  IPADDR=10.10.25.138                      
  NETMASK=255.255.255.0
# vi /etc/sysconfig/network-scripts/ifcfg-eth2  //實體網路卡 eth2
  DEVICE=eth2                            
  BOOTPROTO=none                      
  HWADDR=00:15:17:AB:ZD:30            
  ONBOOT=yes                            
  MASTER=bond1                          
  SLAVE=yes                                
# vi /etc/sysconfig/network-scripts/ifcfg-eth3  //實體網路卡 eth3
  DEVICE=eth3                            
  BOOTPROTO=none                        
  HWADDR=00:15:17:AB:ZD:31            
  ONBOOT=yes                              
  MASTER=bond1                            
  SLAVE=yes                                
# vi /etc/sysconfig/network-scripts/ifcfg-bond1 //虛擬網路卡 bond1
  DEVICE=bond1                            
  BOOTPROTO=none                        
  ONBOOT=yes                              
  IPADDR=192.168.1.2                      
  NETMASK=255.255.255.0


          完成將二片實體網路卡綁定為一片虛擬網路卡設定內容後,接著請修改 CentOS 系統模組設定檔 (/etc/modprobe.conf) 內容為作業系統載入虛擬網路卡 Bonding 模組並指定網路卡容錯機制 (mode=1),並且設定二片網路卡之間互相偵測存活時間設定為 100 毫秒 (miimon=100),也就是當系統 Bonding 模組運作時 Active 實體網路卡發生網路中斷的情況超過 100毫秒後仍無回應時,此時 Backup 實體網路卡將會馬上接手網路連線作業因此您不會感覺到有任何網路中斷的情況發生,當模組設定檔設定完成後請重新啟動網路卡服務後即可查看 Bonding 模組資訊來確定剛才的設定是否生效,下列修改模組設定檔的內容叢集主機 Node1、Node2 都相同。
# vi /etc/modprobe.conf            //修改模組設定檔
  alias bond0 bonding              //載入虛擬網卡 bond0
  options bond0 miimon=100 mode=1  //設定容錯機制及偵測時間
  alias bond1 bonding              //載入虛擬網卡 bond1
  options bond1 miimon=100 mode=1
# service network restart          //重新啟動網路服務
# cat /proc/net/bond{0,1}/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
  ...略...


          緊接著設定二台叢集主機的主機名稱 (Hostname)、預設閘道位址 (Default Gateway)、名稱解析資訊 (DNS),在此設定過程中叢集主機 Node1、Node2 除了主機名稱設定不同之外其餘都相同。
  • 主機名稱:  Node1 主機 (node1.weithenn.org)、Node2 主機 (node2.weithenn.org)
  • 預設閘道 IP 位址: 10.10.25.254
  • 名稱解析 IP 位址: 8.8.8.8、168.95.192.1

# cat /etc/sysconfig/network   //設定主機名稱及預設閘道位址
  NETWORKING=yes
  NETWORKING_IPV6=no
  HOSTNAME=node1.weithenn.org //Node2 請填入 node2.weithenn.org
  GATEWAY=10.10.25.254
# cat /etc/resolv.conf         //設定名稱解析資訊
  domain weithenn.org
  nameserver 8.8.8.8
  nameserver 168.95.192.1


          因為 Heartbeat 高可用性套件對於叢集主機的完整網域名稱 (Fully Qualified Doamin Name,FQDN) 其設定正確與否非常要求,因此請將叢集主機名稱都加入主機設定檔 (/etc/hosts) 內以便名稱解析服務 DNS 運作出現問題時也能保持主機名稱與 IP 位址的正確對應關系確保叢集服務運作無誤,此一主機設定檔修改內容叢集主機Node1、Node2 都相同,設定主機名稱完畢後請立刻進行名稱解析測試,請分別於 Node1、Node2 主機上交互測試能否使用 FQDN 去 ping 到對方主機以確保後續叢集運作機制正常 (請注意不正確的 FQDN 設定將會影響叢集服務運作!!)。
[root@node1 ~]# cat /etc/hosts               //設定 FQDN 名稱及主機名稱
  127.0.0.1       localhost.localdomain localhost
  ::1             localhost6.localdomain6 localhost6
  10.10.25.137    node1.weithenn.org node1
  10.10.25.138    node2.weithenn.org node2
[root@node1 ~]# ping -c 2 node2.weithenn.org //在 Node1 主機測試能否 Ping 到 Node2
  PING node1.weithenn.org (10.10.25.137) 56(84) bytes of data.
  64 bytes from node1.weithenn.org (10.10.25.137): icmp_seq=1 ttl=64 time=0.020 ms
  64 bytes from node1.weithenn.org (10.10.25.137): icmp_seq=2 ttl=64 time=0.023 ms
[root@node2 ~]# ping -c 2 node1.weithenn.org //在 Node2 主機測試能否 Ping 到 Node1
  PING node1.weithenn.org (10.10.25.137) 56(84) bytes of data.
  64 bytes from node1.weithenn.org (10.10.25.137): icmp_seq=1 ttl=64 time=0.020 ms
  64 bytes from node1.weithenn.org (10.10.25.137): icmp_seq=2 ttl=64 time=0.023 ms




6、叢集主機為 sdb 硬碟建立分割區

          先前我們在安裝 CentOS 時僅將作業系統安裝於 sda 硬碟,現在則是要處理 sdb 硬碟為其建立分割區,此顆硬碟空間也就是屆時二台叢集主機要存放 iSCSI Target 資源分享空間及同步資料的硬碟 (企業正式運作環境上應該為 RAID 磁碟陣列而非單一硬碟!!),在進行 sdb 硬碟建立分割區動作以前請先使用 fdisk -l 指令來確定系統是否有抓到 sda、sdb 共二顆硬碟後才進行後續動作。
# fdisk –l   //確認系統有抓到二顆硬碟 (sda、sdb)
  Disk /dev/sda: 10.7 GB, 10737418240 bytes
  255 heads, 63 sectors/track, 1305 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
     Device Boot      Start         End      Blocks   Id  System
  /dev/sda1   *           1          13      104391   83  Linux
  /dev/sda2              14        1305    10377990   8e  Linux LVM
  Disk /dev/sdb: 10.7 GB, 10737418240 bytes
  255 heads, 63 sectors/track, 1305 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  Disk /dev/sdb doesn't contain a valid partition table


          確定作業系統有抓到二顆硬碟後便可以進行 sdb 硬碟建立分割區的動作,請執行指令 fdisk /dev/sdb 後鍵入 n 表示要建立分割區之後鍵入 p 表示要建立主要分割區,接著鍵入數字 1 表示主要分割區代號之後於開始及結束磁柱值時按下 Enter 採用預設值即可,最後則鍵入 w 表示確定套用剛才的設定值當系統完成建立分割區後記得執行指令 partprobe 來更新作業系統分割表 (Partition Table) 的內容 (/proc/partitions),請注意當分割區建立完成後請先不要進行格式化在後續步驟中會在適當時機進行,此建立分割區的動作叢集主機 Node1、Node2 都必須執行。
# fdisk /dev/sdb          //準備為 sdb 建立分割區
  Command (m for help): n //鍵入 n 表示要建立分割區
  Command action
     e   extended
     p   primary partition (1-4)
  p                                   //鍵入 p 表示建立主要分割區
  Partition number (1-4): 1           //鍵入 1 為此主要分割區代號
  First cylinder (1-1305, default 1): //開始磁柱值,按下 enter 即可
  Using default value 1
  Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305):  //結束磁柱值,按下 Enter 即可
  Using default value 1305
  Command (m for help): w        //鍵入 w 表示確定執行剛才設定
  The partition table has been altered!
  Calling ioctl() to re-read partition table.
  Syncing disks.                 //建立 sdb 分割區成功
# partprobe                      //套用至 Partition Table
# cat /proc/partitions |grep sdb //查看 Partition Table 是否存在 sdb 分割區
     8    16   10485760 sdb
     8    17   10482381 sdb1




7、叢集主機安裝相關套件

          接下來我們使用 CentOS 的套件管理工具 (Yellow dog Updater Modified,YUM) 來輕鬆安裝此次實作中使用到的 iSCSI Target、DRBD、Heartbeat 等相關套件及其相依性套件 (而非自行在茫茫網海中尋找 RPM 來進行安裝),在安裝套件以前建議您先將系統抓取套件的來源鏡像站台設定為台灣本地端的鏡像站台 (Taiwan Mirror Sites),此次我們透過 sed –i 指令將套件管理工具 YUM 設定檔 (/etc/yum.repos.d/CentOS-Base.repo) 內的來源站台網址從預設的國外網站取代為台灣鏡像站台之一的元智大學如此一來抓取相關套件時將有效縮短套件下載時間,此一更改抓取套件的來源鏡像網站動作叢集主機Node1、Node2 都必須執行。
# cd /etc/yum.repos.d
# cp CentOS-Base.repo CentOS-Base.repo.bak  //備份原 YUM 設定檔
# sed -i 's,mirror.centos.org/centos,ftp.cse.yzu.edu.tw/pub/CentOS,g' CentOS-Base.repo //指向元智大學
# yum -y install drbd83 kmod-drbd83  //安裝 DRBD 相關套件
# yum -y install heartbeat           //安裝 Heartbeat 相關套件
# yum -y install heartbeat heartbeat-ldirectord heartbeat-pils heartbeat-stonith
# yum -y install scsi-target-utils   //安裝 iSCSI Target 相關套件
# yum -y install libibverbs libibverbs-devel librdmacm librdmacm-devel


          在上述安裝套件動作中 libiberbs、librdmacm 為iSCSI Target (scsi-target-utils) 的相依性套件,但在套件管理工具 YUM 中未整合到這二個套件所以必須要手動再次執行安裝,若您未安裝這二個相依性套件則屆時欲啟動 iSCSI Target 服務 (tgtd) 時會在系統記錄檔 (/var/log/messages) 中發現如下錯誤訊息表示作業系統找不到相對應的模組檔案,並且造成 iSCSI Target 服務運作中斷。
Apr  7 15:57:20 node1 tgtd: libibverbs.so: cannot open shared object file: No such file or directory - iser transport not used
Apr  7 16:27:55 node1 tgtd: librdmacm.so: cannot open shared object file: No such file or directory - iser transport not used




8、結語

          本文中我們已經將整個 iSCSI 高可用性的基礎也就是叢集節點主機分別完成相關項目,例如安裝 CentOS 5.5 作業系統、安裝四片單埠實體網路卡至叢集主機上、設定叢集主機的網路通訊組態 (網卡容錯設定) 以及叢集主機與網路交換器的實體連接線路以避免單點故障 SPOF 的情況發生,並且為屆時的 iSCSI Target 儲存空間建立分割區及後續的高可用性叢集設定安裝所需要的相關軟體套件。

          在下篇文章中便會接著設定網路鏡像同步技術 (Network RAID-1) 也就是資料保全解決方案 DRBD,以及如何透過 Heartbeat 套件來達成 iSCSI 高可用性服務的目標。以便實體伺服器要進行硬體故障排除檢修或者進行歲修時,更甚者要將實體伺服器轉移機房的狀況發生時,此時應該如何正確地將叢集服務進行轉移以便在實體伺服器在檢休完成或轉移機房之後能夠在最短時間內恢復其高可用性。
文章標籤: