專(zhuān)利名稱(chēng)::存儲(chǔ)區(qū)域網(wǎng)絡(luò)中分布式虛擬化存儲(chǔ)的方法
技術(shù)領(lǐng)域:
:存儲(chǔ)區(qū)域網(wǎng)絡(luò)中分布式虛擬化存儲(chǔ)的實(shí)現(xiàn)方法屬于存儲(chǔ)區(qū)域網(wǎng)絡(luò)領(lǐng)域,尤其涉及其中的虛擬化存儲(chǔ)
技術(shù)領(lǐng)域:
。
背景技術(shù):
:存儲(chǔ)區(qū)域網(wǎng)絡(luò)(StorageAreaNetworksSAN)技術(shù)是專(zhuān)門(mén)針對(duì)計(jì)算機(jī)存儲(chǔ)領(lǐng)域的技術(shù),具有高可靠性(HighReliability)、可延伸性(Extendibility)和高性能性(HighPerformance)等特點(diǎn)。虛擬化存儲(chǔ)系統(tǒng)是在實(shí)際的物理存儲(chǔ)設(shè)備基礎(chǔ)上,虛擬出邏輯磁盤(pán)設(shè)備供文件系統(tǒng)使用,它被認(rèn)為是可以簡(jiǎn)化管理大型、復(fù)雜、異構(gòu)的存儲(chǔ)環(huán)境的技術(shù),它具有存儲(chǔ)資源控制靈活,能夠動(dòng)態(tài)更改存儲(chǔ)資源和數(shù)據(jù)鏡像等功能。但是目前的虛擬化存儲(chǔ)系統(tǒng)只有單機(jī)版本,不能適應(yīng)于分布式機(jī)群環(huán)境系統(tǒng)。Sistina公司發(fā)布了LVM(LogicalVolumeManager)作為L(zhǎng)inux操作系統(tǒng)內(nèi)核的一部分,目前還不支持分布式環(huán)境下的虛擬化存儲(chǔ)。這給應(yīng)用范圍很廣泛的機(jī)群系統(tǒng)實(shí)現(xiàn)虛擬化存儲(chǔ)的功能提出了困難,本發(fā)明擬解決該問(wèn)題。本發(fā)明實(shí)現(xiàn)了分布式環(huán)境下的虛擬化存儲(chǔ),是針對(duì)SAN環(huán)境下的分布式系統(tǒng)(機(jī)群系統(tǒng),cluster)實(shí)現(xiàn)虛擬化存儲(chǔ)。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種在SAN環(huán)境下實(shí)現(xiàn)分布式虛擬化存儲(chǔ)系統(tǒng)的方法。采用本方法可以在分布式系統(tǒng)上實(shí)現(xiàn)統(tǒng)一的存儲(chǔ)資源的動(dòng)態(tài)管理,更加有效的利用網(wǎng)絡(luò)存儲(chǔ)資源。本方法的核心是在單機(jī)虛擬化系統(tǒng)基礎(chǔ)上,設(shè)計(jì)同步各個(gè)節(jié)點(diǎn)機(jī)之間的虛擬化系統(tǒng)元數(shù)據(jù)的方法,保持內(nèi)核元數(shù)據(jù)與磁盤(pán)元數(shù)據(jù)的一致性;同時(shí)通過(guò)設(shè)定管理節(jié)點(diǎn),統(tǒng)一管理分布式虛擬存儲(chǔ)系統(tǒng)的虛擬化操作和行為,提供給每個(gè)節(jié)點(diǎn)機(jī)上的文件系統(tǒng)一個(gè)統(tǒng)一一致的虛擬化存儲(chǔ)視圖實(shí)現(xiàn)基于機(jī)群系統(tǒng)的統(tǒng)一管理模塊、元數(shù)據(jù)模塊和控制管理平臺(tái)的虛擬化存儲(chǔ)。本發(fā)明的特征在于它是一種通過(guò)由管理節(jié)點(diǎn)機(jī),分布式機(jī)群和光纖交換機(jī)組成的分布式虛擬化存儲(chǔ)系統(tǒng),按照網(wǎng)絡(luò)傳輸協(xié)議TCP和光纖網(wǎng)絡(luò)傳輸協(xié)議FC的規(guī)定,由網(wǎng)絡(luò)磁盤(pán)陣列經(jīng)過(guò)光纖網(wǎng)提供每個(gè)節(jié)點(diǎn)機(jī)上的文件系統(tǒng)一個(gè)統(tǒng)一一致的虛擬化存儲(chǔ)視圖,實(shí)現(xiàn)基于機(jī)群系統(tǒng)的統(tǒng)一管理模塊、元數(shù)據(jù)模塊和控制管理平臺(tái)的虛擬化存儲(chǔ)。本系統(tǒng)在清華大學(xué)計(jì)算機(jī)高性能研究所的TH-MSNS網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)上進(jìn)行了功能的有效性測(cè)試。在前端8個(gè)節(jié)點(diǎn)的機(jī)群上安裝了分布式虛擬華存儲(chǔ)系統(tǒng),借助該系統(tǒng)實(shí)現(xiàn)機(jī)群環(huán)境下的網(wǎng)絡(luò)存儲(chǔ)資源虛擬化功能,提供了多個(gè)主機(jī)的統(tǒng)一存儲(chǔ),實(shí)現(xiàn)了虛擬存儲(chǔ)池,即提供了磁盤(pán)空間的動(dòng)態(tài)隨意分配和修改邏輯磁盤(pán)大小的功能,同時(shí)提供了邏輯磁盤(pán)數(shù)據(jù)鏡像和快照功能,充分驗(yàn)證了本發(fā)明的有效性。圖1分布式虛擬化存儲(chǔ)系統(tǒng)原理示意圖;圖2分布式虛擬化存儲(chǔ)系統(tǒng)結(jié)構(gòu)示意圖;圖3分布式虛擬化存儲(chǔ)系統(tǒng)軟件結(jié)構(gòu)圖;圖4邏輯磁盤(pán)卷集合VG的構(gòu)成圖;圖5分布式虛擬化存儲(chǔ)系統(tǒng)軟件模塊框圖;圖6中央控制和管理模塊的程序流程圖;圖7本發(fā)明所述方法的程序流程框圖;圖8管理配置模塊的狀態(tài)轉(zhuǎn)換圖;圖9內(nèi)核模塊LVM的內(nèi)核結(jié)構(gòu)圖;圖10本方法向各分布式節(jié)點(diǎn)機(jī)提供的網(wǎng)絡(luò)存儲(chǔ)資源視圖。本發(fā)明的具體應(yīng)用的硬件平臺(tái)是分布式集群網(wǎng)絡(luò)存儲(chǔ)環(huán)境,多個(gè)機(jī)群的服務(wù)器通過(guò)存儲(chǔ)網(wǎng)絡(luò)共享網(wǎng)絡(luò)磁盤(pán)空間。節(jié)點(diǎn)機(jī)群和管理節(jié)點(diǎn)機(jī)都連接到以太網(wǎng)絡(luò)上,通過(guò)IP網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通訊。具體的硬件連接環(huán)境如圖1所示。其中,分布式機(jī)群和管理節(jié)點(diǎn)機(jī)上均安裝了光纖通道卡,通過(guò)光纖通道卡與光纖交換機(jī)相連,組成了存儲(chǔ)光纖網(wǎng)絡(luò)。網(wǎng)絡(luò)磁盤(pán)陣列通過(guò)光纖網(wǎng)給分布式機(jī)群提供存儲(chǔ)資源的服務(wù)。網(wǎng)絡(luò)磁盤(pán)是通過(guò)I/O節(jié)點(diǎn)機(jī)掛載SCSI磁盤(pán)陣列來(lái)實(shí)現(xiàn)的,具體的硬件框圖如圖2所示。機(jī)群系統(tǒng)的操作系統(tǒng)為L(zhǎng)inux,內(nèi)核版本為2.4.18以上。分布式虛擬化存儲(chǔ)系統(tǒng)所在的I/O邏輯位置如圖3所示。如圖4所示,PV(PhysicalVolume)是LinuxLVM中最底層的單元,它是單個(gè)的設(shè)備或者分區(qū)。每個(gè)PV都包含VGDA(VolumeGroupDescriptorArea),它包含一些特殊的用于LVM配置的信息。在任何時(shí)間PV都能夠加入已經(jīng)存在的VG(VolumeGroup)中。一個(gè)VG可以看作一個(gè)很大的存儲(chǔ)池,它包含一個(gè)或者多個(gè)LV(LogicalVolume),而每個(gè)LV是作為實(shí)際的邏輯設(shè)備供文件系統(tǒng)使用。圖表示了PV,VG和LV之間的關(guān)系。LVM系統(tǒng)的核心思想是基于物理磁盤(pán)資源虛擬出邏輯磁盤(pán),供文件系統(tǒng)使用。LVM依據(jù)配置情況適當(dāng)修改文件系統(tǒng)發(fā)出的I/O請(qǐng)求命令的操作地址,將它從邏輯地址空間映射到物理地址空間后執(zhí)行該操作。以下結(jié)合圖5,對(duì)本發(fā)明的方法作詳盡描述。用戶(hù)通過(guò)操作界面可以發(fā)送虛擬化存儲(chǔ)的配置操作給分布式虛擬化存儲(chǔ)系統(tǒng),用戶(hù)登陸到管理節(jié)點(diǎn)機(jī)后,通過(guò)相應(yīng)的操作指令來(lái)控制虛擬存儲(chǔ)系統(tǒng)的運(yùn)行。用戶(hù)可以執(zhí)行的操作包括●LV對(duì)象操作(創(chuàng)建和刪除,增加容量,減少容量);●PV對(duì)象操作(查詢(xún)PV的信息資料);●VG的操作(查詢(xún)的詳細(xì)信息)。中央控制和管理模塊依據(jù)用戶(hù)的數(shù)據(jù)輸入產(chǎn)生操作指令字段,其結(jié)構(gòu)定義如下<prelisting-type="program-listing"><![CDATA[typedefstructlvm_msg_tcp{intcmd_type;//COMMANDtypeintcmd_index;//COMMANDindexintsend_host_id;intreceive_host_id;unsignedintlength;intack;void*data;//bufferpointer}_attribute_((packed))lvm_msg_tcp_t;]]></pre>其中,cmd_type用來(lái)表示操作的類(lèi)型,cmd_index用來(lái)表示操作的指令,其他的指令域是一些附加的指令參數(shù)信息。中央控制和管理模塊控制著網(wǎng)絡(luò)上的所有存儲(chǔ)資源。它對(duì)網(wǎng)絡(luò)存儲(chǔ)資源和機(jī)群中的節(jié)點(diǎn)機(jī)進(jìn)行統(tǒng)一的編號(hào),例如san1,san2,host1,host2等等,所有這些都是該模塊需要管理的基本單元,中央控制和管理模塊在啟動(dòng)的時(shí)候通過(guò)讀配置文件方式和通過(guò)查詢(xún)(發(fā)送INQUIRY命令給網(wǎng)絡(luò)磁盤(pán))得到了這些信息。集群節(jié)點(diǎn)配置信息保存于/etc/clvm/node_table,每次中央控制和管理模塊啟動(dòng)時(shí)讀入節(jié)點(diǎn)配置信息,并通過(guò)UDP廣播以收集所有子節(jié)點(diǎn)狀態(tài)信息,最終生成節(jié)點(diǎn)信息表,它的定義如下所示<prelisting-type="program-listing"><![CDATA[typedefstructnode_table_entry//constructcluster_geometry{intstatus;//節(jié)點(diǎn)狀態(tài)structin_addraddr;//節(jié)點(diǎn)inet地址}_attribute_((packed))node_table_entry_t;typedefstruct{intnode_nr;//節(jié)點(diǎn)數(shù)目node_table_entry_ttable[MAX_NODE_NR];}_attribute_((packed))node_table_t;externnode_table_tnode_table;]]></pre>對(duì)于中央控制和管理模塊,得到操作指令字段之后一個(gè)典型的管理操作的流程如圖6所述(1)信息的查詢(xún)一種用戶(hù)發(fā)送的操作請(qǐng)求只是一些信息的查詢(xún),例如LV,VG信息的查詢(xún)等,這部分操作中央控制和管理模塊直接查詢(xún)自己維護(hù)的信息表就可以得到操作的結(jié)果信息。在中央管理和控制模塊中包含的信息資源表有機(jī)群節(jié)點(diǎn)信息表,也就是host信息表,一個(gè)簡(jiǎn)單的例子如下;LV信息列表,也就是邏輯卷信息表,一個(gè)簡(jiǎn)單的例子如下VG信息列表,一個(gè)簡(jiǎn)單的例子如下如果用戶(hù)操作是信息查詢(xún),那么中央控制和管理模塊直接查詢(xún)上述的數(shù)據(jù)之后返回結(jié)果信息給用戶(hù)。(2)功能配置,例如邏輯磁盤(pán)(LV)的容量增加與減少分布式虛擬化存儲(chǔ)系統(tǒng)中,內(nèi)核里的LVM模塊完成物理卷的虛擬功能;同步模塊在各個(gè)節(jié)點(diǎn)機(jī)之間同步元數(shù)據(jù)使得每個(gè)節(jié)點(diǎn)機(jī)保持一致的視圖;控制模塊控制著整個(gè)系統(tǒng)的工作,它們是整個(gè)系統(tǒng)最核心的三個(gè)部分。圖中的各個(gè)模塊的功能分列于表1表1分布式虛擬化存儲(chǔ)系統(tǒng)軟件模塊列表如圖9所示,內(nèi)核功能維護(hù)著一張VGDA(虛擬化元數(shù)據(jù))列表vg,每次創(chuàng)建VG都要把VG所對(duì)應(yīng)的VGDA放入vg中,刪除VG時(shí)則把相應(yīng)的VGDA從表中刪除。VGDA結(jié)構(gòu)中在內(nèi)核源代碼中是一個(gè)結(jié)構(gòu)vg_t,其中兩個(gè)域pv和lv類(lèi)型分別是pv_t和lv_t的指針數(shù)組。這兩個(gè)數(shù)組分別存放指向結(jié)構(gòu)pv_t和lv_t的指針,指明構(gòu)成該VG的PV和LV。Vg_t中的lv_cur和pv_cur則說(shuō)明當(dāng)前的LV數(shù)和PV數(shù)。Lv_t的lv_stripes域說(shuō)明該LV映射的方法,如果lv_stripes<2說(shuō)明是Linear映射,如果lv_stripes>=2則說(shuō)明LV是striped映射并且映射到lv_stripes個(gè)PV上。Lv_stripesize則說(shuō)明每一個(gè)stripe的大小,單位是sector。Lv_t中的lv_current_pe則是一個(gè)pe_t指針的數(shù)組,說(shuō)明了當(dāng)前該LV所映射到的pe。Pv_t的pe域是pe_t指針的數(shù)組,指明該P(yáng)V的pe。Pv_on_disk、vg_on_disk和lv_on_disk應(yīng)該是存放在該P(yáng)V上的metadata。內(nèi)核功能模塊截獲Linux操作系統(tǒng)的所有磁盤(pán)I/O操作,通過(guò)I/O操作的邏輯空間地址到實(shí)際物理地址的轉(zhuǎn)化來(lái)實(shí)現(xiàn)虛擬化功能。內(nèi)核模塊提供給中央控制和管理模塊的接口是IOCTL功能函數(shù),不同的操作參數(shù)對(duì)應(yīng)了不同的操作命令,這些接口函數(shù)的說(shuō)明如下面表2所示IOCTL接口函數(shù)被調(diào)用后返回一個(gè)表示是否成功的值給中央控制和管理模塊。中央控制和管理模塊根據(jù)該值來(lái)確定操作的流程。如果操作失敗,則直接將失敗結(jié)果返回給用戶(hù),如果操作成功,則調(diào)用同步模塊進(jìn)行分布式機(jī)群節(jié)點(diǎn)的元數(shù)據(jù)同步操作,將該操作的結(jié)果返回給用戶(hù)。對(duì)于同步模塊的調(diào)用接口和具體的元數(shù)據(jù)的實(shí)施方式,后面將給予說(shuō)明。機(jī)群中的節(jié)點(diǎn)機(jī)對(duì)網(wǎng)絡(luò)存儲(chǔ)資源進(jìn)行虛擬化操作(例如針對(duì)某一個(gè)已經(jīng)存在的邏輯卷進(jìn)行擴(kuò)容操作)時(shí),需要對(duì)其他節(jié)點(diǎn)機(jī)的內(nèi)核數(shù)據(jù)進(jìn)行同步以保持它們與網(wǎng)絡(luò)磁盤(pán)上的內(nèi)容一致。同步模塊的主要功能就是對(duì)內(nèi)核元數(shù)據(jù)進(jìn)行同步。節(jié)點(diǎn)機(jī)之間的內(nèi)核元數(shù)據(jù)同步操作包括VG元數(shù)據(jù)同步和LV元數(shù)據(jù)同步,而同步操作的工作成兩個(gè)部分(1)用戶(hù)空間數(shù)據(jù)的修改,包括改變存儲(chǔ)磁盤(pán)的元數(shù)據(jù)、改變?cè)獢?shù)據(jù)備份文件和改變對(duì)應(yīng)的設(shè)備文件等;(2)內(nèi)核空間信息的更新,即更新分布式虛擬化存儲(chǔ)系統(tǒng)內(nèi)核功能模塊中的對(duì)象信息。而具體需要同步的元數(shù)據(jù)即為VGDA信息模塊,同步的功能就是從管理節(jié)點(diǎn)的內(nèi)存中讀出VGDA的信息,然后發(fā)送到其他的分布式機(jī)群節(jié)點(diǎn)機(jī)器的內(nèi)存中,使得其他節(jié)點(diǎn)機(jī)器的內(nèi)存數(shù)據(jù)和管理節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)保持一致性。分布式虛擬化系統(tǒng)同步模塊對(duì)外提供主要的接口和功能函數(shù)有voidsync_init_request(intargc,char**argv,Cluster_Message*msg);voidsync_do_request(Cluster_Message*msg);其中Cluster_Message結(jié)構(gòu)是網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)格式協(xié)議。當(dāng)機(jī)群系統(tǒng)的一個(gè)節(jié)點(diǎn)進(jìn)行了虛擬化操作后,系統(tǒng)的管理和配置模塊將調(diào)用同步模塊的接口函數(shù)sync_init_request(char**argv,Cluster_Message*msg)填充msg結(jié)構(gòu)并且廣播到各個(gè)服務(wù)器節(jié)點(diǎn)進(jìn)行同步操作。ClusterMessage的主要結(jié)構(gòu)定義如下typedefstructMSG_cLVM{intcmd_type;intcmd_index;intack;intsend_host_id;intreceive_host_id;unsignedintlength;void*data;}Cluster_Message;Cluster_Message中的cmd_type用于區(qū)分消息類(lèi)型,對(duì)于同步操作消息,這個(gè)值被設(shè)置為L(zhǎng)VM_SYNC_TYPE。而cmd_index被分布式虛擬化村初系統(tǒng)同步模塊用于區(qū)分是何種操作,它的值相應(yīng)的被設(shè)置為上表中的IOCTL命令。Data域是sync_info_t結(jié)構(gòu)指針,提供LVM操作需要的相關(guān)信息。Sync_info_t的結(jié)構(gòu)如下typedefstruct{char*command;intnum;char*info[128];}syn_info_t;這個(gè)結(jié)構(gòu)的command域即操作的名字,num為info域中的項(xiàng)數(shù),info為與該操作相關(guān)的一些信息。被同步機(jī)群服務(wù)器節(jié)點(diǎn)接到要求同步的Message后,同步模塊提供的接口函數(shù)sync_do_request(Cluster_Message*msg)將被調(diào)用。Sync_do_request根據(jù)msg中的信息對(duì)分布式虛擬化存儲(chǔ)系統(tǒng)的內(nèi)核數(shù)據(jù)進(jìn)行更新,更新的步驟流程如下(1)Sync_do_request首先區(qū)分同步操作的類(lèi)型,請(qǐng)求是VG同步還是LV同步,前者則調(diào)用vg_sync(Cluster_Message*msg)進(jìn)行處理,后者則調(diào)用lv_sync(Cluster_Message*msg)進(jìn)行內(nèi)核數(shù)據(jù)的同步操作;(2)Vg_sync和lv_sync都首先從傳過(guò)來(lái)vgda文件中根據(jù)vg_name得到指向VolumeGroup的指針vg(vg_cfgrestore函數(shù))。如果是LV同步,則還需根據(jù)lv_name從vg中得到指向LogicalVolume的指針lv(lv_get_index_by_name函數(shù));(3)在得到vg和lv后,對(duì)vg->pv[p]->pv_dev和lv->lv_current_pe[le].dev進(jìn)行更新,更新的過(guò)程通過(guò)查找DEV表完成(sync_update_dev函數(shù)),sync_update_dev從代理程序Agent中得到設(shè)備在本服務(wù)器節(jié)點(diǎn)上的Major和Minor號(hào)后對(duì)dev重新賦值。(4)同步內(nèi)核數(shù)據(jù)的操作。通過(guò)給內(nèi)核發(fā)送IOCTL命令完成;利用Lvmlib庫(kù)提供的相關(guān)的函數(shù),如vg_create等,通過(guò)調(diào)用這些函數(shù)即可向LVM內(nèi)核發(fā)送操作命令,把相關(guān)的vg或者lv傳送到內(nèi)核模塊以對(duì)數(shù)據(jù)進(jìn)行更新。(5)完成對(duì)內(nèi)核數(shù)據(jù)的更新后,CREATE,REMOVE和RENAME等操作還需對(duì)系統(tǒng)文件作一些相應(yīng)的修改,如表4所示表5-4cLVM需要修改操作(6)最后,sync_do_request填充msg為ack_Message,返回到初始機(jī)群節(jié)點(diǎn),通知其同步操作成功信息。管理和配置模塊的功能比較單一,僅僅對(duì)內(nèi)核模塊和同步模塊進(jìn)行一些簡(jiǎn)單的管理和配置操作,和提供各個(gè)節(jié)點(diǎn)機(jī)之間的數(shù)據(jù)通訊功能。機(jī)群節(jié)點(diǎn)機(jī)的管理與配置模塊的狀態(tài)轉(zhuǎn)換圖如圖8所示管理和配置模塊提供了兩個(gè)接口函數(shù)給中央控制和管理模塊以及同步模塊用于數(shù)據(jù)傳輸,它們是Send(Host,Data);Recv(Host,Data);通過(guò)這兩個(gè)通訊函數(shù),處于不同機(jī)器的同步模塊之間進(jìn)行數(shù)據(jù)的通訊。本系統(tǒng)在清華大學(xué)計(jì)算機(jī)系高性能研究所的TH-MSNS網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)上進(jìn)行了功能的有效性測(cè)試。在前端8個(gè)節(jié)點(diǎn)的機(jī)群上安裝了分布式虛擬化存儲(chǔ)系統(tǒng),借助該系統(tǒng)實(shí)現(xiàn)了機(jī)群環(huán)境下的網(wǎng)絡(luò)存儲(chǔ)資源虛擬化的功能,提供了多個(gè)主機(jī)的統(tǒng)一存儲(chǔ),實(shí)現(xiàn)了虛擬存儲(chǔ)池,即提供了磁盤(pán)空間的動(dòng)態(tài)隨意分配和修改邏輯磁盤(pán)大小的功能,同時(shí)提供了邏輯磁盤(pán)數(shù)據(jù)鏡像和快照功能,充分驗(yàn)證了本發(fā)明的有效性。權(quán)利要求1.存儲(chǔ)區(qū)域網(wǎng)絡(luò)中分布式虛擬化存儲(chǔ)的方法,其特征在于基于由分布式節(jié)點(diǎn)機(jī)群和其中任意指定的一臺(tái)管理機(jī)、網(wǎng)絡(luò)磁盤(pán)和光纖交換機(jī)且按網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)(SAN)組成的分布式集群網(wǎng)絡(luò)存儲(chǔ)系統(tǒng),管理控制臺(tái)提供給用戶(hù)Telnet登陸服務(wù)進(jìn)行分布式虛擬化存儲(chǔ)系統(tǒng)的管理功能,向管理節(jié)點(diǎn)機(jī)中的中央控制和管理模塊提交功能性的或者對(duì)分布式機(jī)群中的作為實(shí)際的邏輯設(shè)備文件系統(tǒng)使用的邏輯磁盤(pán)LV、邏輯磁盤(pán)卷集合VG內(nèi)的內(nèi)核元數(shù)據(jù)進(jìn)行相應(yīng)的操作請(qǐng)求。本方法的核心是在單機(jī)虛擬化系統(tǒng)基礎(chǔ)上,設(shè)計(jì)同步各個(gè)節(jié)點(diǎn)機(jī)之間的虛擬化系統(tǒng)元數(shù)據(jù)的方法,保持內(nèi)核元數(shù)據(jù)與磁盤(pán)元數(shù)據(jù)的一致性;同時(shí)通過(guò)設(shè)定管理節(jié)點(diǎn),統(tǒng)一管理分布式虛擬存儲(chǔ)系統(tǒng)的虛擬化操作和行為,提供給每個(gè)節(jié)點(diǎn)機(jī)上的文件系統(tǒng)一個(gè)統(tǒng)一一致的虛擬化存儲(chǔ)視圖實(shí)現(xiàn)基于機(jī)群系統(tǒng)的統(tǒng)一管理模塊、元數(shù)據(jù)模塊和控制管理平臺(tái)的虛擬化存儲(chǔ)。以上所述方法依次含有以下步驟(1)模塊結(jié)構(gòu)在管理節(jié)點(diǎn)機(jī)中設(shè)置中央控制與管理模塊、簡(jiǎn)稱(chēng)管理配置模塊的分布式虛擬化系統(tǒng)管理配置模塊、簡(jiǎn)稱(chēng)同步模塊的元數(shù)據(jù)同步模塊以及內(nèi)核模塊;在各分布式節(jié)點(diǎn)機(jī)內(nèi)設(shè)置分別由上述同步模塊、管理配置模塊和內(nèi)核模塊內(nèi)容相同的同名的模塊;其中(1.1)中央控制和管理模塊控制網(wǎng)絡(luò)上所有存儲(chǔ)資源該模塊在啟動(dòng)時(shí)通過(guò)讀配置文件和查詢(xún)網(wǎng)絡(luò)磁盤(pán)得到節(jié)點(diǎn)配置信息,生成內(nèi)含節(jié)點(diǎn)序號(hào)信息、LV信息和VG信息的節(jié)點(diǎn)信息表,也稱(chēng)資源信息表;為用戶(hù)進(jìn)行以下操作提供接口對(duì)邏輯磁盤(pán)LV的操作、塊文件LV的創(chuàng)建或刪除、LV容量的增加和減少;對(duì)邏輯磁盤(pán)卷集合VG的操作查詢(xún)信息;對(duì)網(wǎng)絡(luò)磁盤(pán)即物理磁盤(pán)PV的操作查詢(xún)PV內(nèi)的相應(yīng)于邏輯磁盤(pán)卷的元數(shù)據(jù)VGDA;向管理配置模塊提供發(fā)送和接收的兩個(gè)接口;為控制內(nèi)核模塊執(zhí)行功能性操作,向內(nèi)核模塊提供與內(nèi)核模塊的IOCTL函數(shù)接口;該接口發(fā)出的不同操作參數(shù)值對(duì)應(yīng)于要對(duì)VG、LV執(zhí)行的不同操作。(1.2)內(nèi)核模塊在截獲中央控制和管理模塊發(fā)出的所有對(duì)邏輯磁盤(pán)LV、邏輯磁盤(pán)卷集合VG的操作后,把傳來(lái)的文件系統(tǒng)的I/O操作的邏輯空間地址映射到網(wǎng)絡(luò)磁盤(pán)的實(shí)際物理地址,以實(shí)現(xiàn)虛擬化存儲(chǔ);(1.3)元數(shù)據(jù)同步模塊在其分布式節(jié)點(diǎn)機(jī)對(duì)網(wǎng)絡(luò)存儲(chǔ)資源作虛擬化存儲(chǔ)操作時(shí),同步模塊各節(jié)點(diǎn)的內(nèi)核模塊元數(shù)據(jù)和網(wǎng)絡(luò)磁盤(pán)元數(shù)據(jù)同步地保持一致;同步模塊向管理配置模塊提供用于同步各分布式節(jié)點(diǎn)機(jī)內(nèi)核模塊元數(shù)接口函數(shù),記為sync_init_request;同步模塊向內(nèi)核模塊提供用于在某分布式節(jié)點(diǎn)機(jī)對(duì)網(wǎng)絡(luò)存儲(chǔ)資源進(jìn)行虛擬化存儲(chǔ)時(shí),提供執(zhí)行同步類(lèi)型操作命令地接口函數(shù),記為sync_do_request;所述的同步操作包括VG數(shù)據(jù)同步和LV數(shù)據(jù)同步,而同步操作的數(shù)據(jù)分成兩個(gè)部分用戶(hù)空間地址數(shù)據(jù)的修改和內(nèi)核模塊元數(shù)據(jù)的更新;(1.4)分布式虛擬華存儲(chǔ)管理配置模塊它分別設(shè)置發(fā)送接口函數(shù)Send(Host,Data)、接受接口函數(shù)Recv(Host,Data),提供給中央控制和管理模塊、元數(shù)據(jù)同步模塊和內(nèi)核模塊作通信用,其中Host是節(jié)點(diǎn)序號(hào),用于標(biāo)示節(jié)點(diǎn);(2)依次按以下步驟執(zhí)行虛擬化存儲(chǔ)(2.1)啟動(dòng)中央控制和管理模塊,初始化,創(chuàng)建TCP監(jiān)聽(tīng)線程。(2.2)用戶(hù)通過(guò)telnet登陸服務(wù)管理,向中央控制和管理模塊發(fā)出操作請(qǐng)求(2.3)TCP線程收到用戶(hù)廣播請(qǐng)求后,為每一個(gè)用戶(hù)創(chuàng)建一個(gè)TCP處理線程,并調(diào)用Tcp_request_dispatch函數(shù)(2.4)Tcp_request_dispatch函數(shù)判斷操作命令類(lèi)型后,分類(lèi)處理(2.5)若為信息查詢(xún)命令,則查詢(xún)本中央控制和管理模塊的節(jié)點(diǎn)信息表,把查詢(xún)結(jié)果經(jīng)以太網(wǎng)返回用戶(hù)(2.6)若為功能性操作命令,則通過(guò)管理配置模塊直接調(diào)用內(nèi)核模塊的IOCTL接口函數(shù),執(zhí)行中央控制和管理模塊制定的操作,把操作結(jié)果返回管理配置模塊,再經(jīng)中央控制和管理模塊返回用戶(hù);同時(shí),經(jīng)管理配置模塊由光纖交換機(jī)把修改后的VGDA的vg表送到各分布式節(jié)點(diǎn)機(jī),相應(yīng)地,把VG、LV的邏輯地址映射到網(wǎng)絡(luò)磁盤(pán),并按修改后的VGDA的vg表修改網(wǎng)絡(luò)磁盤(pán)元數(shù)據(jù);(2.7)若為同步類(lèi)型操作指令,則通過(guò)管理配置模塊調(diào)用同步模塊的接口函數(shù),執(zhí)行如下操作(2.7.1)先由接口函數(shù)sync_init_rdquest區(qū)別消息類(lèi)型,即同步操作的類(lèi)型VG同步還是LV同步,再分別調(diào)用不同的函數(shù)處理;(2.7.2)在處理時(shí),先從傳過(guò)來(lái)的文件中,根據(jù)vg_name即VG名達(dá)到指向VG的指針,若為L(zhǎng)V同步,則根據(jù)lv_name即LV名從VG表中得到指向LV的指針,然后,分別按照指針位置更新邏輯地址;(2.7.3)同步內(nèi)核數(shù)據(jù)通過(guò)給內(nèi)核模塊發(fā)送IOCTL命令,完成對(duì)VGDA元數(shù)據(jù)的更新;(2.7.4)對(duì)系統(tǒng)文件按VG和LV分別進(jìn)行創(chuàng)建、刪除、修改或更名的操作;(2.7.5)從內(nèi)核模塊中讀出VGDA元數(shù)據(jù),通過(guò)接口函數(shù)sync_init_request向管理配置模塊發(fā)送,同步地保持分布式虛擬化存儲(chǔ)系統(tǒng)內(nèi)核元數(shù)據(jù)和網(wǎng)絡(luò)磁盤(pán)元數(shù)據(jù)的一致性。全文摘要存儲(chǔ)區(qū)域網(wǎng)絡(luò)中分布式虛擬化存儲(chǔ)的方法屬于虛擬化存儲(chǔ)技術(shù)的領(lǐng)域,其特征在于基于存儲(chǔ)區(qū)域網(wǎng)絡(luò)的虛擬化網(wǎng)絡(luò)存儲(chǔ)系統(tǒng),系統(tǒng)的內(nèi)核模塊將文件系統(tǒng)的I/O請(qǐng)求操作地址映射到適當(dāng)?shù)木W(wǎng)絡(luò)磁盤(pán)內(nèi),實(shí)現(xiàn)虛擬化存儲(chǔ)的功能,同時(shí)用以太網(wǎng)向機(jī)群系統(tǒng)中的其它節(jié)點(diǎn)提交內(nèi)核元數(shù)據(jù)進(jìn)行同步操作的請(qǐng)求后,在管理節(jié)點(diǎn)機(jī)中的中央控制和管理模塊統(tǒng)一控制,對(duì)其中的元數(shù)據(jù)作相應(yīng)的操作,并把操作結(jié)果加入到內(nèi)核模塊中的元數(shù)據(jù)表中去,使得機(jī)群系統(tǒng)所有節(jié)點(diǎn)的虛擬存儲(chǔ)元數(shù)據(jù)保持一致,提供一個(gè)統(tǒng)一格式的網(wǎng)絡(luò)存儲(chǔ)資源視圖,以實(shí)現(xiàn)分布式虛擬化存儲(chǔ)系統(tǒng)。文檔編號(hào)G06F12/08GK1540524SQ20031010304公開(kāi)日2004年10月27日申請(qǐng)日期2003年10月31日優(yōu)先權(quán)日2003年10月31日發(fā)明者舒繼武,鄭緯民,李必剛,潘家銘,章宏?duì)N申請(qǐng)人:清華大學(xué)