齊東蘭,向 娟,杜 鑫,魏永強,楊雨佳
(1.國家測繪地理信息局重慶測繪院,重慶 400015)
ISCSI(internet small computer system interface,網(wǎng)絡小型計算機系統(tǒng)接口)是一種在TCP/IP協(xié)議網(wǎng)絡上進行數(shù)據(jù)塊傳輸?shù)臉藴蔥1]。其目的是用IP協(xié)議將存儲設備連接在一起,使服務器可以與使用TCP/IP網(wǎng)絡的存儲設備互相交換存儲資料[2],它包括發(fā)起端和目標端,其工作原理是發(fā)起端將SCSI指令和數(shù)據(jù)封裝成ISCSI協(xié)議數(shù)據(jù)單元,提交給TCP,最后封裝成IP數(shù)據(jù)包在IP網(wǎng)絡上傳輸,到達目標端后通過解封裝還原成SCSI指令和數(shù)據(jù),實現(xiàn)SCSI命令和數(shù)據(jù)在IP網(wǎng)絡上的透明傳輸。
ORACLE RAC(ORACLE real application clusters)通常稱作ORACLE真正應用集群[3],其實質(zhì)是使位于不同服務器系統(tǒng)的ORACLE實例可以同時訪問同一個ORACLE數(shù)據(jù)庫。一個ORACLE集群由多臺服務器組成,每臺服務器是一個獨立的數(shù)據(jù)庫實例[4],用于監(jiān)聽自己的網(wǎng)絡端口;每臺服務器有自己的ORACLE RAC服務,用于數(shù)據(jù)庫的集群訪問;所有的服務器通過自己的操作系統(tǒng)訪問一個共享的存儲設備,數(shù)據(jù)庫存儲在共享設備上。
GlusterFS是一個開源的分布式文件系統(tǒng),能夠利用普通的存儲設備來部署可集中管理、橫向擴展、虛擬化的存儲池,使用單一全局命名空間來管理數(shù)據(jù),支持PB存儲容量[5],支持運行在任何標準IP網(wǎng)絡上標準應用程序的標準客戶端。
地理國情普查數(shù)據(jù)量大,如何有效進行管理,是必須考慮的問題。本文利用計算資源、網(wǎng)絡資源、存儲資源等構(gòu)建數(shù)據(jù)庫服務器集群和文件服務器集群,提供分布式存儲環(huán)境。在數(shù)據(jù)庫服務器集群和文件服務器集群上結(jié)合ISCSI技術(shù),搭建ORACLE RAC數(shù)據(jù)庫和分布式文件系統(tǒng),其架構(gòu)如圖1所示。根據(jù)《第一次全國地理國情普查數(shù)據(jù)庫建設技術(shù)設計》的要求,將地理國情普查的地表覆蓋、地理國情要素及其元數(shù)據(jù)等矢量數(shù)據(jù)存儲于ORACLE RAC數(shù)據(jù)庫中,地形地貌數(shù)據(jù)、遙感影像數(shù)據(jù)、遙感影像解譯樣本數(shù)據(jù)等存放在分布式文件系統(tǒng)中,實現(xiàn)海量地理國情普查數(shù)據(jù)的分布式管理,然后驗證使用ISCSI構(gòu)建的存儲環(huán)境能夠滿足海量地理國情普查數(shù)據(jù)的存儲和讀??;最后通過對比驗證基于ISCSI的分布式管理和普通管理方式在數(shù)據(jù)存儲和負載均衡方面的性能。
圖1 分布式存儲架構(gòu)
2.2.1 基于ISCSI的ORACLE RAC數(shù)據(jù)庫
使用相同配置的兩臺服務器部署ORACLE RAC集群,集群節(jié)點同時作為數(shù)據(jù)存儲服務器,其配置信息如表1所示?;贗SCSI將服務器上的存儲資源通過網(wǎng)絡輸送到所有ORACLE RAC節(jié)點,再利用ORACLE 的 ASM[6](automatic storage management,自動存儲管理)將這兩臺服務器上的存儲資源創(chuàng)建成共享存儲來管理地理國情普查數(shù)據(jù),集群內(nèi)部實現(xiàn)分布式存儲設備的維護。
表1 ORACLE RAC配置信息表
構(gòu)建過程如下:
1)整體部署,包括硬件和軟件環(huán)境部署,如表1。
2)配置公共網(wǎng)絡和專用網(wǎng)絡。
3)基于ISCSI配置共享存儲。在網(wǎng)絡協(xié)議的基礎上,在集群節(jié)點上配置好ISCSI協(xié)議并添加ISCSI虛擬磁盤,啟動ISCSI發(fā)起程序,連接至虛擬磁盤,從而綁定磁盤,實現(xiàn)磁盤的本地使用,再配置成共享存儲。
4)安裝集群軟件和數(shù)據(jù)庫。
5)配置客戶端連接ORACLE RAC。
2.2.2 基于ISCSI的GlusterFS分布式文件系統(tǒng)
在GlusterFS中將服務器上剩余的存儲空間使用ISCSI技術(shù)虛擬發(fā)布成網(wǎng)絡存儲設備,并加載多個網(wǎng)絡存儲設備和本地存儲設備,采用兩臺配置信息如表1的服務器,搭建分布式文件系統(tǒng)環(huán)境。其構(gòu)建過程如下:
1)將服務器上的空閑存儲資源以虛擬ISCSI Target服務的方式發(fā)布出來,形成私有的存儲區(qū)域網(wǎng)絡SAN。
2)在5臺存儲服務器上分別安裝GlusterFS,創(chuàng)建GlusterFS集群,各臺服務器上使用GlusterFS將ISCSI存儲設備或本地存儲掛載為數(shù)據(jù)塊并納入管理。
3)配置多個節(jié)點的數(shù)據(jù)存儲數(shù)據(jù)塊融合成組,合并創(chuàng)建成大容量的網(wǎng)絡存儲卷,在網(wǎng)絡上形成NAS存儲網(wǎng)絡。
4)主服務器節(jié)點,通過掛載分布式集群創(chuàng)建的NAS卷,使用Samba(Linux下的文件共享服務軟件)為選定的目錄建立網(wǎng)絡共享,將NAS卷的存儲空間提供出來,供網(wǎng)絡內(nèi)的其他服務器進行共享訪問。
選用一臺配置為Intel(R) Core(TM)i5-2400、內(nèi)存為4 GB、操作系統(tǒng)為Windows 7的臺式機作為客戶端,以某地地理國情普查成果數(shù)據(jù)為實驗數(shù)據(jù),分別對本文提出的分布式存儲與普通集中式管理方式進行了存儲效率和負載均衡性能的測試。
2.3.1 存儲效率性能測試
1)選取記錄數(shù)目分別為3萬條、10萬條和100萬條的地理國情普查矢量數(shù)據(jù),其對應的數(shù)據(jù)大小分別是50 M、200 M、1 000 M,比較導入基于ISCSI的ORACLE RAC數(shù)據(jù)庫和ORACLE數(shù)據(jù)庫的耗時,從ORACLE數(shù)據(jù)庫中查詢分別需要70 s、185 s和354 s;基于ISCSI的ORACLE RAC數(shù)據(jù)庫查詢分別需要31 s、93 s和159 s,其效率提高2.3倍,如圖2所示。
2)選取數(shù)據(jù)量分別為0.1TB、1TB、5TB的地理國情普查影像數(shù)據(jù),比較導入基于ISCSI的分布式文件系統(tǒng)和普通文件系統(tǒng)的耗時,導入普通文件系統(tǒng)分別需要4min、360min和1 800min;導入基于ISCSI的分布式文件系統(tǒng)分別需要2min、240min和1 200min,其效率提高1.5倍,如圖2所示。
圖2 存儲性能測試
從圖2可以明顯看到,基于本文提出的分布式存儲方式具有優(yōu)勢,存儲效率高于普通的數(shù)據(jù)管理方式。
2.3.2 負載均衡性能測試
在ORACLE RAC集群上,首先關閉節(jié)點1上的數(shù)據(jù)庫實例,在節(jié)點2上頻繁執(zhí)行查詢操作,節(jié)點2的大量資源被占用,CPU利用率迅速升高,達到90%;再啟動節(jié)點1上的數(shù)據(jù)庫實例,此時節(jié)點1的CPU利用率升高到46%左右,節(jié)點2的CPU利用率降低到55%左右,幾分鐘之后兩個節(jié)點的CPU利用率都保持在20%左右,如圖3所示。
圖3 ORACLE RAC集群CPU使用情況
通過測試驗證,當集群某一節(jié)點的負載過高,而其他節(jié)點負載較小時,將請求分配給當前負載較小的節(jié)點上,從而實現(xiàn)數(shù)據(jù)交互的均衡分配。
在反復的驗證測試中,最終得出結(jié)論,基于ISCSI的ORACLE RAC數(shù)據(jù)庫和分布式文件系統(tǒng)完全可以應用于地理國情普查數(shù)據(jù)的管理,且具有硬件成本低、存儲效率高、負載能力強等優(yōu)勢。
深入研究了利用ISCSI技術(shù)構(gòu)建的ORACLE RAC集群來管理地理國情普查數(shù)據(jù),將數(shù)據(jù)分散地存儲在多個普通的存儲物理設備上,降低了硬件成本,實現(xiàn)了數(shù)據(jù)的高并發(fā)讀寫和海量數(shù)據(jù)存儲,提高了系統(tǒng)的響應效率,并且系統(tǒng)具備靈活的分布式體系結(jié)構(gòu),支持橫向伸縮;即便隨著地理國情普查后續(xù)工作的推進造成數(shù)據(jù)量的幾何級增長,也可以無縫擴展該存儲系統(tǒng)以滿足需求。