丛集档案系统 OCFS2 实战应用.docx
- 文档编号:5222367
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:11
- 大小:872.60KB
丛集档案系统 OCFS2 实战应用.docx
《丛集档案系统 OCFS2 实战应用.docx》由会员分享,可在线阅读,更多相关《丛集档案系统 OCFS2 实战应用.docx(11页珍藏版)》请在冰豆网上搜索。
丛集档案系统OCFS2实战应用
叢集檔案系統OCFS2實戰應用
作者:
徐秉義(AlbertHsu)
在過往印象中,高可用度叢集系統(High-Availabilitycluster又名HACluster)應用,對於一般的中小企業來說,是多麼遙不可及的感覺。
主因是HACluster在過去只出現在IBM、HP、Sun等等廠商的大型主機系統而並非存在於一般x86伺服器,由大型主機所建構成的叢集系統不僅建置成本高、維護的價格也是相當驚人,倘若應用系統所執行的任務並非極度重要,一般來說是沒有資金能夠供養這些堅不可摧的大型主機叢集系統。
由於這幾年來軟硬體的進步,使得許多企業應用PC伺服器搭配Linux作業系統,漸漸地擔任企業重要的應用程式任務,像是ERP、EIP、Web、Mail、DataBase等等,若執行的任務越是重要,就會更需要高可用度叢集來執行7x24不間斷的服務。
當我們建置高可用度叢集系統的伺服節點(Node)時,經常會做共享磁碟(SharedStorage)架構(如下圖)必須使用到叢集檔案系統(ClusterFileSystem),本文提到的OCFS2檔案系統就是知名的叢集檔案系統之一,而另一個知名Linux叢集檔案系統就是RedHat主推的GFS(GlobalFileSystem)。
快照自維基百科「高可用度叢集」示意圖(網址:
http:
//upload.wikimedia.org/wikipedia/en/6/63/2nodeHAcluster.png),我們這次的主題落在「OCFS2」叢集檔案系統建置,這個OCFS2是用於SAN(StorageAreaNetwork)內的Disk(例如Disk1)由Server1與Server2所共享的叢集檔案系統。
相較於一般檔案系統是一個檔案系統由一台主機控制(一對一方式),頂多是再透過NFS或CIFS分享給網路上的其他主機存取,也就是NAS(NetworkAttachStorage)方式;叢集檔案系統與一般檔案系統不同的是,一個叢集檔案系統可同時提供多台電腦來控制,也就是一個檔案系統對應多台電腦的完全控制,且每台電腦擁有相同存取權限、存取能力與存取效率(通常需要有SAN的架構)。
筆者初次見到OCFS2的實機示範是在NovellSuSELinuxEnterpriseServer10發表會場上,會場示範將網站資料(Webdata)放置在OCFS2磁區上,而由多台Apache網頁伺服器共同來存取使用,當時筆者就很想親自玩玩看OCFS2的實際操作,後來在Oracle原廠網站與NovellWiKi網站上找到相關文件(可惜大多是英文的資料)並實際測試後,接著就與讀者朋友分享OCFS2建置實做流程。
溫馨提示:
一個關於叢集檔案系統之Enterprise級應用,就是最近當紅的Xen配合叢集檔案系統所做到的「LiveMigration」(在線遷徙)DomU功能。
基礎觀念
OCFS2
OCFS(OracleClusterFileSystem)原本是軟體公司Oracle為其知名的高可用度叢集資料庫OracleRAC(RealApplicationCluster)所設計的叢集檔案系統,至今已發展到第二版(Version2,也就是OCFS2),應用也更加的廣泛,除了給OracleRAC資料庫使用外,也可以給一些常見的UnixDaemon使用(像是NFS、Samba、Apache、Mail與ftp等等)甚至亦有可能支援其他廠牌的資料庫來應用。
使用到OCFS2這種「叢集檔案系統」至少要有兩個節點(Node)去共享儲存設備(SharedStorage),也因為如此這促使我們必須先有SAN(StorageAreaNetwork)架構才行,談到Linux上面常用SAN有三種:
FibreChannel、iSCSI與AoE(ATAOverEthernet),為求測試簡便我們採用AoE以Ethernet為基礎的SAN來實戰OCFS2建置。
溫馨提示:
AoE(ATAOverEthernet)別以為這是微軟出的「世紀帝國」遊戲喔!
她其實是在乙太網路上跑的ATA磁碟傳輸方式,筆者曾於本雜誌第七期專欄介紹過,是一個便宜又大碗的EthernetSANStorage。
叢集應用程式
OracleRAC資料庫是「支援叢集檔案系統」應用程式,很多常見的資料庫以及UnixDaemon預設都不是這種「支援叢集檔案系統」的應用程式,『不是叢集軟體』不代表一定不能夠用在叢集檔案系統,而是使用上要特別的小心注意,尤其又以資料庫軟體最容易發生問題。
簡單的說:
若應用程式已經運行在共享的NFS、CIFS磁區資料上而沒有問題的話,那大概跑在叢集檔案系統上面應該也沒有太大的問題。
如果應用程式(例如資料庫)會例行性的快取(Cache)磁碟資料在記憶體的話,叢集內各個節點與節點之間就必須相互知會這些「快取資料」的同步與鎖定(尤其是最終需要寫入磁碟的資料),雖然最終的讀寫會由叢集檔案系統來統籌處理,這些『非叢集軟體』(尤其是「非叢集資料庫軟體」)很容易發生在各節點的資料不同步而發生資料遺失、不正確或損毀問題。
溫馨提示:
所以若要跑商用資料庫在「叢集檔案系統」的話,最好還是要找專業資料庫廠商以及專門的系統整合商(SI)會比較保險。
測試環境與測試流程
測試OCFS2需要有三台Linux作業系統的電腦,筆者是使用兩台SLES10(SuSELinuxEnterpriseServer10)搭配一台FC5(FedoraCore5),兩台SLES10任務是叢集的兩個節點Node1與Node2;而共享磁碟則由FC5上提供AoE(ATAOverEthernet)來辦理,提供AoE磁碟的主機她所安裝的Linux版本就比較沒有限制,記得要裝上『編譯工具』來CompilerAoE的Target工具程式vblade就可以了。
下圖iSCSI+Lun部份換成AoESAN的話,就是我們以下實做的架構,圖片快照自Novell官方網站說明文件,官方文件建議使用的共享磁碟是採用Linux主機搭配iSCSITarget軟體做出來的Lun磁碟,筆者覺得準備SAN環境使用AoE會比使用iSCSI簡單許多,能簡化測試OCFS2叢集檔案系統的流程。
SLES10硬體需求
SLES10對於硬體要求主要瓶頸在於「記憶體」,事實上記憶體128MB就可以裝、可以用(只是會跑的很慢、且大量存取Swap),而筆者是使用256MB勉強還OK,至於要跑的順的話則建議要512MB以上。
溫馨提示:
若是您的主機配備還不錯(例如:
記憶體1GB)甚至可以一台實體機器虛擬(使用Xen或VMWare)出三台Linux主機來實戰以下的測試。
使用SLES10測試OCFS2的好處就是不需要自行編譯OCFS2相關程式ocfs2-tools與ocfs2console這兩個套件,SLES10已經與OCFS2整合的很不錯了,若是您要使用別的Linux版本來實做OCFS2的話,請參考OCFS2網頁內有詳細介紹。
網路部份的配置
有了三台Linux(兩個SLES10Node1與Node2、一個AoETarget磁碟)後,接著使用Ethernet+Switch連接起來後,測試用到的「作業系統」、「電腦硬體」與「網路架構」大致上就算搞定了。
溫馨提示:
其實測試環境Ethernet線路也只有一個星狀網路,所以我們測試時的SAN與LAN是混在一起的。
測試流程概況
測試的整個流程概況如下:
∙作業系統、電腦硬體與網路架構基礎建設
∙架構SAN也就是共享磁碟的建置(使用AoE方式)
∙配置OCFS2檔案系統於共享磁碟裝置
架構SAN(使用AoE方式)
筆者曾在本刊(NetAdmin網管人雜誌)第七期(2006年八月號)中介紹如何使用AoE(ATAOverEthernet)打造EthernetSAN建置,因為本篇重點在於「OCFS2」故底下所述AoE的建置流程會比較精簡,也請讀者多多包含!
AoETarget端配置流程
AoETarget端主機(提供共享磁碟的主機),需完成AoETarget端的建置,建置完成後Target端才能提供出這個共享磁碟。
溫馨提示:
請準備好編譯工具,像是gcc、make與glibc-devel等等,這樣才能編譯vblade軟體。
第一步:
至下載一個名為『vblade』的軟體,筆者以vblade-14.tgz為例。
第二步:
使用指令「tar-zxfvblade-14.tgz」解開包裹後,並進入vblade目錄
第三步:
使用指令「make」來編譯vblade程式
第四步:
使用指令「ddif=/dev/zeroof=disk.isoseek=2097152count=1」來製造一個虛擬磁碟名為disk.iso且磁碟的大小為1GB(可利用seek數字來調整空間大小)
第五步:
使用指令「./vblade12eth0disk.iso」執行vblade程式,來將disk.iso變成AoE的Target磁碟
溫馨提示:
欲使用實體裝置(device)來當作Target磁碟也可以(例如/dev/sdb1),效能會比用一般檔案當Target磁碟來的好許多。
AoEInitiator端配置流程
AoEInitiator端主機(也就是兩個節點的主機),需完成AoEInitiator端的建置,建置完成後兩個節點才能抓到AoETarget端共享磁碟。
AoEInitiator端的驅動程式(在Linux稱為KernelModule)新版本的Linux都已經內建了,所以只要使用指令「modprobeaoe」來載入AoE核心模組即可。
(使用指令modprobe-raoe來移除載入的AoE模組)
載入AoE模組後,所有發現的AoE磁碟都會位於/etc/etherd底下(例如/etc/etherd/e1.2這一顆)
若要下次開機就自動載入AoE核心模組的話,SLES10是寫到/etc/sysconfig/kernel的MODULES_LOADED_ON_BOOT參數內。
溫馨提示:
接著我們就是要在共用的/dev/etherd/e1.2磁碟上面使用OCFS2檔案系統。
配置OCFS2
我們就從兩個節點皆標準安裝好SLES10且已經設定好開機自動載入aoe模組開始吧!
大部分安裝流程與一般預設安裝方式沒什麼差異,只需注意的部份為建議您於安裝期間就先行『關閉防火牆』,以簡化測試流程,若是安裝完成後要調整防火牆,請使用指令「yast2firewall」呼叫出防火牆管理視窗即可輕鬆調整。
溫馨提示:
防火牆並非不能開啟,而是要知道OCFS2用到那些埠號(或是採用以主機IP-Based的開放),才能用來調整防火牆的相關設定。
安裝OCFS2相關套件
標準安裝完成的SLES10預設沒有安裝OCFS2相關套件,在SuSE可使用指令「yast2sw_single」呼叫出軟體管理視窗,搜尋「ocfs」關鍵字後,將OCFS2相關軟體「ocfs2console」與「ocfs2-tools」勾選安裝。
溫馨提示:
請記得兩個節點主機都要安裝OCFS2相關套件。
設定主機名稱與IP位址
底下為此次測試所使用的主機名稱與IP的對應表:
角色
完整主機名稱
短的主機名稱
IP位址
Node1
sles10n1.ol
sles10n1
172.16.1.3
Node2
sles10n2.ol
sles10n2
172.16.1.4
OCFS2對於「主機名稱對應IP解析」是否正確相當的敏感(有些UnixDaemon程式也是這樣),所以最好是先行將主機設定成『固定IP』並且『主機名稱能夠正確的解析到對應的IP位址』即可,不論您使用「DNS解析」或「/etc/hosts解析」都可行,特別要注意到的是,不論採用那一種解析方式,設定後的FQDN(完整主機名稱)或是短的主機名稱(不含『點』的主機名稱,也就是指令hostname-s顯示出來的名稱)最好是都要正確對應才行。
SuSE可使用指令「yast2network」來設定固定IP以及主機名稱,若測試環境沒有DNS解析,那就設定這兩台主機的/etc/hosts檔案內容吧!
範本如下:
在Node1則是新增解析Node2這一行「172.16.1.4 sles10n2.olsles10n2」
在Node2則是新增解析Node1這一行「172.16.1.3 sles10n1.olsles10n1」
下圖為Node1的/etc/hosts檔案內容
溫馨提示:
設定重點在於『互相要能夠解析的到』、『短的主機名稱也要可以使用』。
採用DNS解析對於完整主機名稱(FQDN)一般來說都能夠正常解析,筆者建議最好順便也使得「短的主機名稱」解析正確無誤,解決方法就是增加或修改/etc/resolv.conf檔案內的searchdomainname來辦到,以筆者的環境來舉例,就是新增或修改/etc/resolv.conf檔案內的searchol那一行(ol即是測試環境的網域名稱)。
使用ocfs2console工具
第一步:
在Node1執行指令「ocfs2console」來呼叫出圖形設定工具,下拉選單【Cluster】→【ConfigureNode...】,分別將sles10n1與sles10n2這兩個Node以及各自的IP位址輸入進去。
溫馨提示:
若要設定防火牆的話,所要開通的7777埠就是在這顯示出來啦!
溫馨提示:
第一步驟完成後,其實就設定好Node1主機/etc/ocfs/cluster.conf檔案,內容如下:
第二步:
繼續在Node1使用「ocfs2console」圖形設定工具,下拉選單【Cluster】→【PropagateConfiguration...】,她會將sles10n1主機的cluster.conf透過ssh方式,同步至sles10n2主機
溫馨提示:
ssh在第一次連線時需肯定的回答「yes」用來確認我們相信對方是『真正的對方主機』
第三步:
繼續在Node1使用「ocfs2console」圖形設定工具,下拉選單【Tasks】→【Format...】,呼叫初格式化磁碟的介面,確認磁碟裝置是我們要Format的AoE磁碟後,按下「確定」按鈕來執行Format磁碟。
第四步:
接著分別在兩台Node主機使用指令mkdir建立掛載點,例如:
指令「mkdir/ocfs2」,建立掛載點完成後再按下「ocfs2console」工具列「Mount」按鈕並填入掛載點目錄,例如/ocfs2並按下確定來掛載ocfs2磁區。
第五步:
同樣也在Node2使用「ocfs2console」工具來將OCFS2磁區掛載到/ocfs2目錄,掛載成功以後整體OCFS2設定流程算是完成囉。
至於測試的部份,您可以分別在兩個Node使用指令「df-h」來觀察掛載情況,或是輪流在Node1新增檔案與資料夾於Node2瀏覽、Node2新增檔案與資料夾於Node1瀏覽。
溫馨提示:
進一步的測試就是要模擬其中一個Node掛掉,重新開機又再度加入叢集。
結語
在完成OCFS2測試後,不難發現她與其他檔案系統似乎不太一樣,怎麼說呢?
一般檔案系統例如:
像是Linux用的ext3/ext2、Reiserfs、Windows用的NTFS、FAT32大多是用在本機磁碟;而來自於網路的檔案系統像是Unix/Linux用的NFS、Windows/Samba用的CIFS主要是用在NAS磁碟系統;而OCFS2與GFS比較適合用在有Cluster與SAN的叢集電腦系統環境。
要達到完全「無懈可擊」叢集系統(也就是「單點」故障不影響運作),並沒有辦法單靠「叢集檔案系統」來完成,以我們這次測試的例子來說:
AoE磁碟就沒有備援功能,如果還要「即時」備援Storage磁碟的話,還可以利用DRBD(網址http:
//www.drbd.org/)來作Storage磁碟的即時鏡像(透過網路)。
溫馨提示:
DRBD(全名為DistributedReplicatedBlockDevice)能夠即時複製(Replicated)區塊裝置(BlockDevice)到網路上的另一台電腦的BlockDevice用以達到HA目的,有機會的話必定與讀者分享架設DRBD心得。
許多HACluster在交互偵測系統可用度方面,都使用Heartbeat(心跳線)架構與機制(可參考本文最前面Cluster架構圖),不論OCFS2或DRBD也都不例外,她們也都可以搭配heartbeat軟體(現在出到heartbeat2版)來使用,關於heartbeat請參考網址http:
//www.linux-ha.org/HeartbeatProgram,也就是linux-ha網站上關於heartbeat的說明與介紹。
筆者原先只使用一台電腦安裝Linux搭配Xen虛擬三台來測OCFS2建置,SLES10就必須要讓Heartbeat2也正常運作才可以掛載使用OCFS2磁碟,也就是在Xen的Dom0與DomU架構下,可以FormatOCFS2磁區但卻一直mount不起來,後來看說明設定好Heartbeat2後,就可以掛載使用OCFS2磁區。
筆者第二次測試改採三台獨立電腦,就不一定要設定heartbeat2就直接可以mountOCFS2磁區來使用,我想SuSE這樣的用意,在於OCFS2的SAN可以搭配Xen架構下的LiveMigration並配合heartbeat2偵測,成為企業Enterprise級的HACluster應用方案。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 丛集档案系统 OCFS2 实战应用 丛集 档案 系统 实战 应用