虛擬存儲方法及設(shè)備的制作方法
【專利摘要】本發(fā)明提供一種虛擬存儲方法及設(shè)備,方法包括:接收客戶端根據(jù)映射關(guān)系表生成的塊設(shè)備讀寫請求,所述塊設(shè)備讀寫請求中包含塊設(shè)備標(biāo)識、塊設(shè)備中的存儲位置和讀寫內(nèi)容;根據(jù)所述塊設(shè)備標(biāo)識定位塊設(shè)備,并根據(jù)所述塊設(shè)備中的存儲位置定位數(shù)據(jù)位置,并完成對所述讀寫內(nèi)容的操作。根據(jù)本發(fā)明的虛擬存儲的方法及設(shè)備,通過建立存儲節(jié)點與虛擬磁盤之間的映射關(guān)系,使得客戶端在訪問虛擬磁盤時直接訪問存儲節(jié)點,提高虛擬存儲性能。
【專利說明】虛擬存儲方法及設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息存儲技術(shù),尤其涉及一種虛擬存儲方法及設(shè)備。
【背景技術(shù)】
[0002]隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)數(shù)據(jù)存儲量迅速增加,具有集中性和高效性的虛擬存儲系統(tǒng)將替代傳統(tǒng)的直接附加存儲方式,成為虛擬存儲系統(tǒng)的主體。虛擬存儲為通過對存儲系統(tǒng)或存儲服務(wù)的內(nèi)部功能進(jìn)行抽象、隱藏或隔離,使存儲或數(shù)據(jù)的管理與應(yīng)用、月艮務(wù)器、網(wǎng)絡(luò)資源的管理分離,從而實現(xiàn)應(yīng)用和網(wǎng)絡(luò)的獨立管理。
[0003]隨著實際生活中虛擬存儲需求的大量增加,如何有效實現(xiàn)虛擬存儲成為亟需解決的問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供一種虛擬存儲方法及設(shè)備,以有效實現(xiàn)虛擬存儲。
[0005]本發(fā)明第一個方面提供一種虛擬存儲方法,包括:
[0006]存儲節(jié)點接收客戶端根據(jù)映射關(guān)系表生成的塊設(shè)備讀寫請求,所述塊設(shè)備讀寫請求中包含塊設(shè)備標(biāo)識、塊設(shè)備中的存儲位置和讀寫內(nèi)容;
[0007]存儲節(jié)點根據(jù)所述塊設(shè)備標(biāo)識定位塊設(shè)備,并根據(jù)所述塊設(shè)備中的存儲位置定位數(shù)據(jù)位置,并完成對所述讀寫內(nèi)容的操作。
[0008]本發(fā)明另一個方面提供一種虛擬存儲方法,包括:
[0009]接收用戶對于虛擬磁盤的讀寫操作,并根據(jù)所述虛擬磁盤讀寫操作和映射關(guān)系表生成塊設(shè)備讀寫請求,所述塊設(shè)備讀寫請求包括所所述塊設(shè)備標(biāo)識、塊設(shè)備的存儲位置和讀與內(nèi)容;
[0010]向所述塊設(shè)備所在存儲節(jié)點發(fā)送所述塊設(shè)備讀寫請求,使得存儲節(jié)點能夠根據(jù)所述塊設(shè)備讀寫請求中的設(shè)備標(biāo)識定位所述塊設(shè)備,并依據(jù)塊設(shè)備讀寫請求中的存儲位置和讀寫內(nèi)容完成讀寫內(nèi)容的操作。
[0011]本發(fā)明再一個方面提供一種虛擬存儲方法,包括:
[0012]根據(jù)客戶端的虛擬磁盤標(biāo)識與塊設(shè)備的塊設(shè)備標(biāo)識以及所述虛擬磁盤存儲位置對應(yīng)于所述塊設(shè)備中的存儲位置建立映射關(guān)系表;
[0013]向所述客戶端返回所述映射關(guān)系表,以使所述客戶端在需要讀寫所述塊設(shè)備時,通過所述虛擬磁盤和所述映射關(guān)系表生成讀寫請求。
[0014]本發(fā)明再一個方面提供一種存儲節(jié)點,包括:
[0015]第一接收模塊,用于接收客戶端根據(jù)映射關(guān)系表生成的塊設(shè)備讀寫請求,所述塊設(shè)備讀寫請求中包含塊設(shè)備標(biāo)識、塊設(shè)備中的存儲位置和讀寫內(nèi)容;
[0016]第一處理模塊,用于根據(jù)所述塊設(shè)備標(biāo)識定位塊設(shè)備,并根據(jù)所述塊設(shè)備中的存儲位置定位數(shù)據(jù)位置,并完成對所述讀寫內(nèi)容的操作。
[0017]本發(fā)明又一個方面提供一種客戶端,包括:[0018]第二接收模塊,用于接收用戶對于虛擬磁盤的讀寫操作;
[0019]第二處理模塊,用于根據(jù)所述虛擬磁盤讀寫操作和所述映射關(guān)系表生成塊設(shè)備讀寫請求;
[0020]發(fā)送模塊,用于向所述塊設(shè)備所在存儲節(jié)點發(fā)送所述塊設(shè)備讀寫請求。本發(fā)明另一個方面提供一種主空制節(jié)點,包括:
[0021]建立映射關(guān)系表模塊,用于根據(jù)客戶端的虛擬磁盤標(biāo)識與塊設(shè)備的塊設(shè)備標(biāo)識以及所述虛擬磁盤存儲位置對應(yīng)于所述塊設(shè)備中的存儲位置建立映射關(guān)系表;
[0022]發(fā)送映射關(guān)系表模塊,用于向所述客戶端返回所述映射關(guān)系表,以使所述客戶端在需要讀寫所述塊設(shè)備時,通過所述虛擬磁盤和所述映射關(guān)系表生成讀寫請求。
[0023]本發(fā)明的又一方面提供一種虛擬存儲系統(tǒng),包括上述任一項所述的存儲節(jié)點、客戶端以及主控制節(jié)點。
[0024]由上述技術(shù)方案可知,本發(fā)明提供的虛擬存儲方法及設(shè)備,通過建立虛擬磁盤與塊設(shè)備之間的映射關(guān)系表,并將該映射關(guān)系表存儲在客戶端,使得客戶端在訪問虛擬磁盤時,直接通過包含虛擬磁盤標(biāo)識和塊設(shè)備標(biāo)識的映射關(guān)系的映射關(guān)系表訪問塊設(shè)備,這樣,不僅能夠使客戶端無需經(jīng)過中間層次直接與存儲節(jié)點進(jìn)行交互,提高虛擬存儲性能,還能夠以較低的成本實現(xiàn)虛擬存儲。
【專利附圖】
【附圖說明】
[0025]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0026]圖1為根據(jù)本發(fā)明一實施例的虛擬存儲方法的流程示意圖;
[0027]圖2為根據(jù)本發(fā)明另一實施例的虛擬存儲方法的流程示意圖;
[0028]圖3為根據(jù)本發(fā)明又一實施例的虛擬存儲方法的流程示意圖;
[0029]圖4為根據(jù)本發(fā)明再一實施例的存儲節(jié)點的結(jié)構(gòu)示意圖;
[0030]圖5為根據(jù)本發(fā)明再一實施例的存儲節(jié)點的結(jié)構(gòu)示意圖;
[0031]圖6為根據(jù)本發(fā)明另一實施例的客戶端的結(jié)構(gòu)示意圖;
[0032]圖7為根據(jù)本發(fā)明另一實施例的主控制節(jié)點的結(jié)構(gòu)示意圖。
【具體實施方式】
[0033]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0034]實施例一
[0035]本實施例提供一種虛擬存儲方法,其適用于的虛擬存儲架構(gòu)包括實際存儲數(shù)據(jù)的存儲節(jié)點中的塊設(shè)備、客戶端的虛擬磁盤以及管理塊設(shè)備和虛擬磁盤的主控制節(jié)點。本實施例的虛擬存儲方法,將所有存儲節(jié)點中的塊設(shè)備利用起來,構(gòu)成一個大的存儲池,主控制節(jié)點根據(jù)客戶端的創(chuàng)建虛擬磁盤的創(chuàng)建請求將塊設(shè)備按需分配,并在建立虛擬磁盤與塊設(shè)備的映射關(guān)系后,使得客戶在訪問虛擬磁盤時不需要再通過主控制節(jié)點,而是利用映射關(guān)系直接訪問實際存儲數(shù)據(jù)的存儲節(jié)點。存儲節(jié)點、主控制節(jié)點和客戶端均可以為計算機或服務(wù)器。本實施例的虛擬存儲方法的執(zhí)行主體為存儲節(jié)點。需要指出的是,客戶端為虛擬磁盤的宿主機。
[0036]如圖1所示,為根據(jù)本實施例的虛擬存儲方法的流程示意圖。
[0037]步驟101,存儲節(jié)點接收客戶端根據(jù)映射關(guān)系表生成的塊設(shè)備讀寫請求,塊設(shè)備讀寫請求中包含塊設(shè)備標(biāo)識、塊設(shè)備中的存儲位置和讀寫內(nèi)容。
[0038]讀寫內(nèi)容在不同的操作環(huán)境下代表了不同的含義,具體為:在讀操作時,讀寫內(nèi)容為所要讀取的數(shù)據(jù)的大?。辉趯懖僮鲿r,讀寫內(nèi)容為所要寫入存儲設(shè)備的數(shù)據(jù)內(nèi)容。
[0039]該塊設(shè)備標(biāo)識可以是由以下至少任意一種形式組成的:數(shù)字、英文字母、或字符,用以標(biāo)識塊設(shè)備。一個存儲節(jié)點中可以包含一個或多個塊設(shè)備,具體舉例來說,當(dāng)存儲節(jié)點為一臺計算機時,塊設(shè)備可以是c盤,當(dāng)然還可以是d盤或e盤等。用戶可以根據(jù)實際需要自行定義該塊設(shè)備,例如只將存儲節(jié)點中的c盤作為塊設(shè)備,或者是將c盤中的一部分作為塊設(shè)備,具體可以根據(jù)需要自行設(shè)定。
[0040]塊設(shè)備信息包括塊設(shè)備大小、塊設(shè)備名稱、塊設(shè)備的存儲位置和塊設(shè)備所在的存儲節(jié)點的IP(Intemet Protocol,網(wǎng)絡(luò)之間互連的協(xié)議)地址,還可以包括塊設(shè)備所在的存儲節(jié)點的MAC (Media Access Control)地址、塊設(shè)備所在的存儲節(jié)點的端口地址、塊設(shè)備所在的存儲節(jié)點的監(jiān)聽端口信息。主控制節(jié)點可以是計算機或服務(wù)器,用于為塊設(shè)備和虛擬磁盤分配標(biāo)識,建立塊設(shè)備和虛擬磁盤之間的映射關(guān)系。主控制節(jié)點在接收到塊設(shè)備的注冊請求之后,就根據(jù)塊設(shè)備信息為塊設(shè)備分配塊設(shè)備標(biāo)識。
[0041]步驟102,存儲節(jié)點根據(jù)塊設(shè)備標(biāo)識定位塊設(shè)備,并根據(jù)塊設(shè)備中的存儲位置定位數(shù)據(jù)位置,并完成對讀寫內(nèi)容的操作。
[0042]該步驟一種具體地實現(xiàn)方式可以是,當(dāng)存儲節(jié)點接收到塊設(shè)備讀寫請求后,針對該塊設(shè)備讀寫請求生成塊設(shè)備讀寫響應(yīng),并發(fā)送至客戶端,當(dāng)客戶端接收到該塊設(shè)備讀寫響應(yīng)后,就根據(jù)映射關(guān)系表直接對該塊設(shè)備進(jìn)行訪問,執(zhí)行讀寫操作。
[0043]客戶端在接收到虛擬磁盤讀寫請求后,根據(jù)自身存儲的虛擬磁盤與塊設(shè)備的對應(yīng)關(guān)系以及塊設(shè)備的存儲位置,可以直接向存儲節(jié)點發(fā)送塊設(shè)備讀寫請求,塊設(shè)備讀寫請求中包括塊設(shè)備的標(biāo)識和塊設(shè)備的存儲位置,可選地,映射關(guān)系表還可以包括塊設(shè)備的其它信息,例如塊設(shè)備大小以及塊設(shè)備所歸屬的存儲節(jié)點的IP地址等,這樣客戶端根據(jù)該塊設(shè)備標(biāo)識可以獲取與該塊設(shè)備標(biāo)識對應(yīng)的所有塊設(shè)備信息??蛻舳酥苯釉L問塊設(shè)備的方式為遠(yuǎn)程登錄技術(shù),為現(xiàn)有技術(shù),在此不再贅述。
[0044]根據(jù)本實施例的虛擬存儲方法,通過為塊設(shè)備分配塊設(shè)備標(biāo)識,以便在客戶端進(jìn)行讀寫操作時,直接通過包含虛擬磁盤標(biāo)識和塊設(shè)備標(biāo)識的映射關(guān)系的映射關(guān)系表訪問塊設(shè)備,這樣,不僅能夠使客戶端無需經(jīng)過中間層次直接與存儲節(jié)點進(jìn)行交互,提高虛擬存儲性能,還能夠以較低的成本實現(xiàn)虛擬存儲。
[0045]實施例二
[0046]本實施例基于實施例一提供一種虛擬存儲方法。
[0047]具體地,當(dāng)存儲節(jié)點啟動時,本實施例的虛擬存儲方法還包括:[0048]步驟Ila:存儲節(jié)點獲取自身的配置文件。
[0049]步驟Ilb:根據(jù)配置文件,判斷是第一次連接主控制節(jié)點,則向主控制節(jié)點發(fā)送注冊請求,否則向主控制節(jié)點發(fā)送激活請求。
[0050]具體地,存儲節(jié)點的配置文件中存在一標(biāo)識信息,該標(biāo)識信息用于表示該存儲節(jié)點是否為第一次啟動,例如當(dāng)該標(biāo)識信息為“O”時表示該存儲節(jié)點為第一次啟動,并在該存儲節(jié)點第一次啟動之后,修改該標(biāo)識信息,以便以后該存儲節(jié)點重新啟動時,能夠通過配置文件中的該標(biāo)識信息識別出該存儲節(jié)點不是第一次啟動,例如將該標(biāo)識信息修改為“I”。
[0051]本實施例中,存儲節(jié)點向主控制節(jié)點發(fā)送注冊請求是在其啟動時進(jìn)行發(fā)送的。存儲節(jié)點啟動,可能包括兩種情況,一種情況是存儲節(jié)點第一次啟動,就說明該存儲節(jié)點沒有向主控制發(fā)送過注冊請求,此時在啟動后需要向注冊節(jié)點發(fā)送注冊請求,所述注冊請求中包含了請求類型、主控制節(jié)點的IP地址(還可以包括主控制節(jié)點的MAC地址和/或端口號)和存儲節(jié)點中所包含的塊設(shè)備信息等,例如發(fā)送http格式的注冊請求請求,具體為“http://namenode/datanode ? action = register&ip = 10.71.99.74&port = 8081&data _ransfer_port = 8082&mac = 00-18-82-83-36-4c&target.file.1 = /home/xyl/block_de vice&target.size.1 = 74&target.mac.1 = 00-18-82-83-36_4c”,以使主控制節(jié)點為該存儲節(jié)點中的各塊設(shè)備分配塊設(shè)備標(biāo)識,例如主控制節(jié)點返回Json格式的響應(yīng)消息node_id":2," result":true, " targetlist":[{" index":1," targetid":3}]},其中,"node_id": 2代表存儲節(jié)點標(biāo)識為2, result表示返回結(jié)果,具體地,true表示注冊成功返回,false表示注冊失敗,"targetlist "代表目標(biāo)塊設(shè)備列表,index代表目標(biāo)塊設(shè)備的索引號,“I”表示第I個塊設(shè)備,"targetid":3代表該存儲節(jié)點的塊設(shè)備標(biāo)識為3。這樣,上述響應(yīng)消息就代表與標(biāo)識為“2”的存儲節(jié)點中的第I個塊設(shè)備的標(biāo)識為“3”。
[0052]其中,塊設(shè)備標(biāo)識可以是根據(jù)塊設(shè)備所在的存儲節(jié)點的地址生成的,這樣客戶端在獲取到塊設(shè)備標(biāo)識時,也就同時獲取到了塊設(shè)備所在的存儲節(jié)點的地址,該地址可以是存儲節(jié)點的IP地址。具體舉例來 說,塊設(shè)備標(biāo)識為“202.118.16.28_c”,這樣就表示塊設(shè)備是IP地址為“202.118.16.28”的存儲節(jié)點中的c盤,即存儲節(jié)點標(biāo)識為202.118.16.28。塊設(shè)備標(biāo)識和存儲節(jié)點標(biāo)識都是整個網(wǎng)絡(luò)中唯一的標(biāo)識,即不會出現(xiàn)網(wǎng)絡(luò)中的兩個存儲節(jié)點具有相同的存儲節(jié)點標(biāo)識的情況,也不會出現(xiàn)兩個塊設(shè)備具有相同的塊設(shè)備標(biāo)識的情況。這樣,客戶端在獲取了塊設(shè)備標(biāo)識和塊設(shè)備的存儲位置之后,也同樣就知道了該塊設(shè)備位于哪一個存儲節(jié)點,能夠準(zhǔn)確找到所要訪問的塊設(shè)備。
[0053]能夠想到,獲取塊設(shè)備標(biāo)識的同時還可以獲得其它信息,例如塊設(shè)備大小、塊設(shè)備名稱和塊設(shè)備所在的存儲節(jié)點的IP地址(Internet Protocol,網(wǎng)絡(luò)之間互連的協(xié)議),此外還可以包括塊設(shè)備所在的存儲節(jié)點的MAC (Media Access Control)地址、塊設(shè)備所在的存儲節(jié)點的端口地址、塊設(shè)備所在的存儲節(jié)點的監(jiān)聽端口信息、和/或塊設(shè)備所在的存儲節(jié)點的大小及名稱,上述信息均可以包含在映射關(guān)系表中。本發(fā)明各實施例中均以獲取塊設(shè)備標(biāo)識為例進(jìn)行說明,所述塊設(shè)備標(biāo)識為塊設(shè)備中各種信息里的一種。
[0054]另外一種存儲節(jié)點啟動的情況是:存儲節(jié)點在出現(xiàn)問題并解決后重新啟動,此時可以判斷該存儲節(jié)點已經(jīng)向主控制節(jié)點發(fā)送過注冊請求,此時就不要再重新發(fā)送注冊請求,而是發(fā)送激活請求以使主控制節(jié)點得知該存儲節(jié)點重新運行或者由主控制節(jié)點根據(jù)該激活請求激活存儲節(jié)點,激活請求具體可以發(fā)送http請求,例如http://namen0de/datanode ? action = register&node_id = 2”。
[0055]還可以是,在注冊請求和激活請求中都包括配置文件的標(biāo)識,例如,注冊請求中包括標(biāo)識“0”,激活請求中包括標(biāo)識“1”,主控制節(jié)點根據(jù)請求中的標(biāo)識,就可以判斷該請求是注冊請求還是激活請求,再根據(jù)判斷結(jié)果執(zhí)行相應(yīng)的操作。
[0056]根據(jù)本實施例的虛擬存儲方法,當(dāng)存儲節(jié)點啟動時,通過存儲節(jié)點的配置文件判斷是否需要重新向網(wǎng)絡(luò)發(fā)送注冊請求,這樣能夠避免存儲節(jié)點重復(fù)發(fā)送注冊請求,增加主控制節(jié)點的負(fù)擔(dān)。
[0057]優(yōu)選地,在通過激活請求或注冊請求建立完存儲節(jié)點和主控制節(jié)點之間的連接后,本實施例的虛擬存儲方法還包括:
[0058]每隔預(yù)設(shè)時間,檢測存儲節(jié)點與主控制節(jié)點之間是否保持通信,使得存儲節(jié)點出現(xiàn)異常無法完成存儲時候,由主控制節(jié)點更新客戶端的映射關(guān)系表,分配能夠完成存儲功能的其它存儲節(jié)點。
[0059]這里的預(yù)設(shè)時間可以根據(jù)實際需要自行設(shè)定,例如I分鐘、5分鐘或者I小時。檢測存儲節(jié)點與主控制節(jié)點之間是否保持通信具體可以是:向主控制節(jié)點發(fā)送檢測消息,如果在規(guī)定時間內(nèi)接收到主控制節(jié)點根據(jù)檢測信息作出的檢測響應(yīng),則存儲節(jié)點與主控制節(jié)點之間保持通信,否則,需要重新啟動存儲節(jié)點,以使存儲節(jié)點向主控制節(jié)點發(fā)送激活請求,保持存儲節(jié)點向主控制節(jié)點之間的通信。這樣,通過周期性地檢測存儲節(jié)點與主控制節(jié)點之間是否保持通信,能夠提高系統(tǒng)的可靠性,并能排除主控制節(jié)點在不知情的情況下發(fā)送指令給已經(jīng)意外故障的存儲節(jié)點。
[0060]本實施例的虛擬存儲方法,還可以包括以下所描述的遷移操作。具體地,
`[0061]步驟12a,存儲節(jié)點接收主控制節(jié)點發(fā)送的遷移指令,該遷移指令包括源塊設(shè)備標(biāo)識、源塊設(shè)備的存儲位置、目的塊設(shè)備標(biāo)識、目的塊設(shè)備的存儲位置和源塊設(shè)備中遷移的數(shù)據(jù)大小。
[0062]。遷移指令可以采用http 方式,例如 “http://datanodeIP:port/migrate ?action = migrate_block &src_targetid = l&src_offset = l&dst_targetid =2&dst offset = 3&dst_ip = 10.71.99.77&dst_port = 8082”,涉及到不同存儲節(jié)點之間的數(shù)據(jù)遷移時,所述遷移指令中還要包含目的塊設(shè)備所在存儲節(jié)點地址如dst_ip =
10.71.99.77, src_targetid和src_ofset分別對應(yīng)遷移指令中的源塊設(shè)備的標(biāo)識和源塊設(shè)備的存儲位置,dst_targetid和dst_offset分別對應(yīng)遷移指令中的目的塊設(shè)備的標(biāo)識和目的塊設(shè)備的存儲位置。本步驟的遷移命令可以是由主控制節(jié)點直接發(fā)起的,也可以是由客戶端向主控制節(jié)點發(fā)起一遷移請求,再由主控制節(jié)點根據(jù)該遷移請求生成遷移命令并發(fā)送至源塊設(shè)備。
[0063]步驟12b,源塊設(shè)備所在的存儲節(jié)點根據(jù)遷移指令降源塊設(shè)備中的數(shù)據(jù)復(fù)制到目的塊設(shè)備中。
[0064]復(fù)制方法可以米用建立TCP (Transmission Control Protocol,傳輸控制協(xié)議)套接字連接,從源塊設(shè)備中的源文件中讀取數(shù)據(jù)并存儲到緩沖區(qū)中,然后寫入到目的塊設(shè)備中。復(fù)制完成后,可以發(fā)送遷移成功響應(yīng)告知主控制節(jié)點完成遷移指令,例如“http://namenode:port/ maintenance ? action = block_migrate_notification& taskid =l&result = success”。
[0065]可選地,在步驟12b之后,還可以包括:釋放源塊設(shè)備中的數(shù)據(jù)。釋放數(shù)據(jù)即意味著清除源塊設(shè)備中的數(shù)據(jù),這樣可以確保整個網(wǎng)絡(luò)中僅有一份該數(shù)據(jù)即可,避免存儲空間的浪費。
[0066]可選地,在步驟12b之后還包括:在復(fù)制?呆作完成后,向王控制節(jié)點發(fā)送遷移完成消息,以使主控制節(jié)點得知遷移操作已經(jīng)完成,更新映射關(guān)系表。主控制節(jié)點更新映射關(guān)系表,除了將源塊設(shè)備標(biāo)識對應(yīng)的虛擬磁盤標(biāo)識與源塊設(shè)備標(biāo)識的對應(yīng)關(guān)系改為虛擬磁盤標(biāo)識與目的塊設(shè)備標(biāo)識的對應(yīng)關(guān)系,還要建立虛擬磁盤的存儲位置與目的塊設(shè)備的存儲位置的對應(yīng)關(guān)系。
[0067]另外,在遷移操作進(jìn)行時,如果此時有客戶端向源塊設(shè)備進(jìn)行寫操作,此時源塊設(shè)備所在的源存儲節(jié)點也響應(yīng)客戶端發(fā)送的塊設(shè)備寫請求,在目的塊設(shè)備的存儲位置基礎(chǔ)上計算增加遷移的數(shù)據(jù)大小后的遷移后目的塊設(shè)備的存儲位置,并根據(jù)遷移后的目的塊設(shè)備的存儲位置執(zhí)行塊設(shè)備寫請求。
[0068]根據(jù)本實施例的虛擬存儲方法,通過對存儲節(jié)點的塊設(shè)備進(jìn)行遷移操作,能夠有效管理存儲節(jié)點的存儲空間,優(yōu)化存儲節(jié)點的性能。
[0069]實施例三
[0070]本實施例提供一種虛擬存儲方法,其適用于的虛擬存儲架構(gòu)包括實際存儲數(shù)據(jù)的存儲節(jié)點中的的塊設(shè)備、客戶端的虛擬磁盤以及管理塊設(shè)備和虛擬磁盤的主控制節(jié)點。本實施例的虛擬存儲方法,將所有存儲節(jié)點中的塊設(shè)備利用起來,構(gòu)成一個大的存儲池,根據(jù)客戶端的創(chuàng)建虛擬磁盤的創(chuàng)建請求將塊設(shè)備按需分配,并通過建立虛擬磁盤與塊設(shè)備的映射關(guān)系,使得客戶在訪問虛擬磁盤時直接訪問實際存儲數(shù)據(jù)的塊設(shè)備,其中,“塊設(shè)備”指的是存儲節(jié)點中被用于虛擬存儲的部分。存儲節(jié)點、主控制節(jié)點和客戶端均可以為計算機或服務(wù)器。本實施例的虛擬存儲方法的執(zhí)行主體為客戶。本實施例中塊設(shè)備的存儲位置主要通過地址偏移量來體現(xiàn)。需要指出的是,客戶端為虛擬磁盤的宿主機。
[0071]如圖2所示,為根據(jù)本實施例的虛擬存儲方法的流程示意圖,該虛擬存儲方法包括:
[0072]步驟201,客戶端接收用戶對于虛擬磁盤的讀寫操作。
[0073]可選地,在步驟201之前還包括虛擬磁盤的創(chuàng)建的過程,具體地:
[0074]步驟200a:客戶端向主控制節(jié)點發(fā)送創(chuàng)建虛擬磁盤的創(chuàng)建請求。這里的創(chuàng)建請求可以包括:客戶端的IP地址、客戶端的MAC地址和/或虛擬磁盤的大小。
[0075]該步驟中虛擬磁盤的信息包括虛擬磁盤的大小、虛擬磁盤的存儲位置、虛擬磁盤的MAC地址、IP地址等等,還可以包括虛擬磁盤的分片單位,每一個分片單位可以對應(yīng)一個塊設(shè)備。如表1所示,為映射關(guān)系表中的一部分。
[0076]表1
[0077]
【權(quán)利要求】
1.一種虛擬存儲方法,其特征在于,包括: 存儲節(jié)點接收客戶端根據(jù)映射關(guān)系表生成的塊設(shè)備讀寫請求,所述塊設(shè)備讀寫請求中包含塊設(shè)備標(biāo)識、塊設(shè)備中的存儲位置和讀寫內(nèi)容; 存儲節(jié)點根據(jù)所述塊設(shè)備標(biāo)識定位塊設(shè)備,并根據(jù)所述塊設(shè)備中的存儲位置定位數(shù)據(jù)位置,并完成對所述讀寫內(nèi)容的操作。
2.根據(jù)權(quán)利要求1所述的虛擬存儲方法,其特征在于,所述映射關(guān)系表具體包括: 所述客戶端的虛擬磁盤標(biāo)識與所述塊設(shè)備標(biāo)識的映射關(guān)系; 還包括所述虛擬磁盤存儲位置對應(yīng)于塊設(shè)備中的存儲位置的映射關(guān)系。
3.根據(jù)權(quán)利要求1或2所述的虛擬存儲方法,其特征在于,當(dāng)所述存儲節(jié)點啟動時,所述方法還包括: 獲取所述存儲節(jié)點的配置文件; 根據(jù)所述配置文件,判斷是第一次連接所述主控制節(jié)點,則向所述主控制節(jié)點發(fā)送注冊請求,否則向所述主控制節(jié)點發(fā)送激活請求。
4.根據(jù)權(quán)利要求3所述虛擬存儲方法,其特征在于,在向所述主控制節(jié)點發(fā)送注冊請求之后,還包括: 接收所述主控制節(jié)點為所述 存儲節(jié)點中的塊設(shè)備分配的塊設(shè)備標(biāo)識。
5.根據(jù)權(quán)利要求3所述虛擬存儲方法,其特征在于, 所述激活請求中包含存儲節(jié)點標(biāo)識,以使所述主控制節(jié)點根據(jù)所述存儲節(jié)點標(biāo)識重新獲取自身存儲的對應(yīng)塊設(shè)備信息。
6.根據(jù)權(quán)利要求1~5任一所述的虛擬存儲方法,其特征在于,所述方法還包括: 所述存儲節(jié)點接收所述主控制節(jié)點發(fā)送的遷移指令,所述遷移指令包括源塊設(shè)備的標(biāo)識、源塊設(shè)備的存儲位置、目的塊設(shè)備的標(biāo)識、目的塊設(shè)備的存儲位置和源塊設(shè)備中遷移的數(shù)據(jù)大??; 所述存儲節(jié)點根據(jù)所述遷移指令降所述源塊設(shè)備中的數(shù)據(jù)復(fù)制到所述目的塊設(shè)備中。
7.根據(jù)權(quán)利要求6所述的虛擬存儲方法,其特征在于,存儲節(jié)點在執(zhí)行所述遷移指令過程中,收到客戶端的塊設(shè)備寫請求時,還包括: 所述存儲節(jié)點響應(yīng)塊設(shè)備寫請求; 在所述目的塊設(shè)備的存儲位置基礎(chǔ)上計算增加遷移的數(shù)據(jù)大小后的遷移后的存儲位置,并根據(jù)所述遷移后的存儲位置執(zhí)行所述塊設(shè)備寫請求。
8.根據(jù)權(quán)利要求1~7中任一項所述的虛擬存儲方法,其特征在于,在存儲節(jié)點建立完與主控制節(jié)點連接后,還包括: 每隔預(yù)設(shè)時間,檢測與所述主控制節(jié)點之間是否保持通信,使得所述存儲節(jié)點出現(xiàn)異常無法完成存儲時候,由所述主控制節(jié)點更新所述客戶端的映射關(guān)系表,分配能夠完成存儲功能的其它存儲節(jié)點。
9.一種虛擬存儲方法,其特征在于,包括: 接收用戶對于虛擬磁盤的讀寫操作,并根據(jù)所述虛擬磁盤讀寫操作和映射關(guān)系表生成塊設(shè)備讀寫請求,所述塊設(shè)備讀寫請求包括所所述塊設(shè)備標(biāo)識、塊設(shè)備的存儲位置和讀寫內(nèi)容; 向所述塊設(shè)備所在存儲節(jié)點發(fā)送所述塊設(shè)備讀寫請求,使得存儲節(jié)點能夠根據(jù)所述塊設(shè)備讀寫請求中的設(shè)備標(biāo)識定位所述塊設(shè)備,并依據(jù)塊設(shè)備讀寫請求中的存儲位置和讀寫內(nèi)容完成讀寫內(nèi)容的操作。
10.根據(jù)權(quán)利要求9所述的虛擬存儲方法,其特征在于,所述虛擬磁盤的由用戶申請創(chuàng)建,其創(chuàng)建過程具體包括: 向主控制節(jié)點發(fā)送虛擬磁盤的創(chuàng)建請求; 接收并保存所述主控制節(jié)點返回的虛擬磁盤信息和所述映射關(guān)系表; 根據(jù)所述虛擬磁盤信息創(chuàng)建所述虛擬磁盤。
11.根據(jù)權(quán)利要求9所述的虛擬存儲方法,其特征在于,所述接收用戶對于虛擬磁盤的讀寫操作,并根據(jù)所述虛擬磁盤讀寫操作和所述映射關(guān)系表生成塊設(shè)備讀寫請求具體包括: 判斷所述讀寫操作是否指向不同的塊設(shè)備,如果是,則根據(jù)所述讀寫操作和映射關(guān)系表生成不同塊設(shè)備的讀寫請求。
12.根據(jù)權(quán)利要求9~11中任一項所述的虛擬存儲方法,其特征在于,所述方法還包括: 接收所述主控制節(jié)點發(fā)送刪除虛擬磁盤的刪除指令,并根據(jù)所述刪除指令刪除所述虛擬磁盤,所述刪除指令中包括虛擬磁盤標(biāo)識和客戶端地址標(biāo)識; 更新客戶端中存儲的所述映射關(guān)系表。
13.根據(jù)權(quán)利要求10~12任一所述的虛擬存儲方法,其特征在于,所述創(chuàng)建清求包括所述客戶端的IP地址、客戶端的`MAC地址和/或所述虛擬磁盤的大小。
14.一種虛擬存儲方法,其特征在于,包括: 根據(jù)客戶端的虛擬磁盤標(biāo)識與塊設(shè)備的塊設(shè)備標(biāo)識以及所述虛擬磁盤存儲位置對應(yīng)于所述塊設(shè)備中的存儲位置建立映射關(guān)系表; 向所述客戶端返回所述映射關(guān)系表,以使所述客戶端在需要讀寫所述塊設(shè)備時,通過所述虛擬磁盤和所述映射關(guān)系表生成讀寫請求。
15.根據(jù)權(quán)利要求14所述的虛擬存儲方法,其特征在于,還包括, 對所述存儲節(jié)點進(jìn)行遷移操作,或者接收所述客戶端的遷移請求并根據(jù)所述遷移請求生成遷移指令并對所述存儲節(jié)點進(jìn)行遷移操作; 所述遷移操作包括: 向源塊設(shè)備發(fā)送遷移指令,所述遷移指令包括源塊設(shè)備標(biāo)識、源塊設(shè)備的存儲位置、目標(biāo)塊設(shè)備標(biāo)識和目的塊設(shè)備的存儲位置,以指示所述源塊設(shè)備將所源塊設(shè)備中的數(shù)據(jù)復(fù)制到所述目標(biāo)塊設(shè)備中。
16.根據(jù)權(quán)利要求14或15所述的虛擬存儲方法,其特征在于,所述映射關(guān)系表中還包括所述塊設(shè)備所在存儲節(jié)點的IP地址、存儲節(jié)點的MAC地址、存儲節(jié)點中各塊設(shè)備的塊設(shè)備名稱和/或塊設(shè)備大小。
17.根據(jù)權(quán)利要求14~16中任一項所述的虛擬存儲方法,其特征在于,還包括: 向所述客戶端發(fā)送刪除指令,所述刪除指令中包括虛擬磁盤的標(biāo)識和客戶端MAC地址,以指示所述客戶端刪除所述虛擬磁盤并更新所述映射關(guān)系表。
18.根據(jù)權(quán)利要求14~17中任一項所述的虛擬存儲方法,其特征在于,在所述根據(jù)所述客戶端的虛擬磁盤標(biāo)識與所述塊設(shè)備標(biāo)識以及所述虛擬磁盤存儲位置對應(yīng)于塊設(shè)備中的存儲位置建立映射關(guān)系表之前,還包括: 為所述塊設(shè)備分配所述塊設(shè)備標(biāo)識,所述塊設(shè)備標(biāo)識是根據(jù)所述塊設(shè)備所在的存儲節(jié)點的地址生成的。
19.一種存儲節(jié)點,其特征在于,包括: 第一接收模塊,用于接收客戶端根據(jù)映射關(guān)系表生成的塊設(shè)備讀寫請求,所述塊設(shè)備讀寫請求中包含塊設(shè)備標(biāo)識、塊設(shè)備中的存儲位置和讀寫內(nèi)容; 第一處理模塊,用于根據(jù)所述塊設(shè)備標(biāo)識定位塊設(shè)備,并根據(jù)所述塊設(shè)備中的存儲位置定位數(shù)據(jù)位置,并完成對所述讀寫內(nèi)容的操作。
20.根據(jù)權(quán)利要求19所述的存儲節(jié)點,其特征在于,所述映射關(guān)系表具體包括: 所述客戶端的虛擬磁盤標(biāo)識與所述塊設(shè)備標(biāo)識的映射關(guān)系以及所述虛擬磁盤存儲位置對應(yīng)于塊設(shè)備中的存儲位置的映射關(guān)系。
21.根據(jù)權(quán)利要求19或20所述的存儲節(jié)點,其特征在于,所述存儲節(jié)點還包括: 判斷模塊,用于當(dāng)所述存儲節(jié)點啟動時,獲取所述存儲節(jié)點的配置文件,并根據(jù)所述配置文件判斷是否第一次連接所述主控制節(jié)點,當(dāng)判斷結(jié)果為是時,觸發(fā)發(fā)送注冊請求模塊,當(dāng)判斷結(jié)果為否時,觸發(fā)發(fā)送激活請求模塊; 所述發(fā)送注冊請求模塊,用于向所述主控制節(jié)點發(fā)送注冊請求; 所述發(fā)送激活請求模塊,用于向所述主控制節(jié)點發(fā)送激活請求。
22.根據(jù)權(quán)利要求19~21中任一項所述的存儲節(jié)點,其特征在于,還包括: 所述第一接收模塊,還用于接收所述主控制節(jié)點發(fā)送的遷移指令,所述遷移指令包括源塊設(shè)備的標(biāo)識、源塊設(shè)備的存儲位置、目的塊設(shè)備的標(biāo)識、目的塊設(shè)備的存儲位置和源塊設(shè)備中遷移的數(shù)據(jù)大??; 所述第一處理模塊,還用于根據(jù)所述遷移指令將所述源塊設(shè)備中的數(shù)據(jù)復(fù)制到所述目的塊設(shè)備中。
23.根據(jù)權(quán)利要求19~22中任一項所述的存儲節(jié)點,其特征在于,還包括: 檢測模塊,用于每隔預(yù)設(shè)時間,檢測與所述主控制節(jié)點之間是否保持通信,使得存儲節(jié)點出現(xiàn)異常無法完成存儲時候,由主控制節(jié)點更新客戶端的映射關(guān)系表,分配能夠完成存儲功能的其它存儲節(jié)點。
24.一種客戶端,其特征在于,包括: 第二接收模塊,用于接收用戶對于虛擬磁盤的讀寫操作;第二處理模塊,用于根據(jù)所述虛擬磁盤讀寫操作和所述映射關(guān)系表生成塊設(shè)備讀寫請求; 發(fā)送模塊,用于向所述塊設(shè)備所在存儲節(jié)點發(fā)送所述塊設(shè)備讀寫請求。
25.根據(jù)權(quán)利要求24所述的客戶端,其特征在于,所述客戶端還包括創(chuàng)建模塊和存儲模塊用于創(chuàng)建虛擬磁盤,包括: 所述發(fā)送模塊,還用于向主控制節(jié)點發(fā)送虛擬磁盤的創(chuàng)建請求; 所述第二接收模塊,還用于接收主控制節(jié)點返回的虛擬磁盤信息和映射關(guān)系表,所述虛擬磁盤信息包括所述虛擬磁盤標(biāo)識以及與所述虛擬磁盤標(biāo)識對應(yīng)的虛擬磁盤具體內(nèi)容; 存儲模塊,用于保存所述主控制節(jié)點返回的虛擬磁盤信息和所述映射關(guān)系表;創(chuàng)建模塊,用于根據(jù)所述虛擬磁盤信息創(chuàng)建所述虛擬磁盤。
26.根據(jù)權(quán)利要求24所述的客戶端,其特征在于,所述客戶端還包括刪除模塊和更新模塊,其中: 刪除模塊,用于接收所述主控制節(jié)點發(fā)送刪除虛擬磁盤的刪除指令,并根據(jù)所述刪除指令刪除所述虛擬磁盤,所述刪除指令中包括虛擬磁盤標(biāo)識和客戶端地址; 更新模塊,用于更新所述映射關(guān)系表。
27.根據(jù)權(quán)利要求24~26中任一項所述的客戶端,其特征在于,所述第二處理模塊包括: 判斷子模塊,用于判斷所述讀寫操作是否指向不同的塊設(shè)備,如果是,則觸發(fā)所述生成子模塊; 生成子模塊,用于根據(jù)所述讀寫操作和映射關(guān)系表生成不同塊設(shè)備的讀寫請求。
28.—種主控制節(jié)點,其特征在于,包括: 建立映射關(guān)系表模塊,用于根據(jù)客戶端的虛擬磁盤標(biāo)識與塊設(shè)備的塊設(shè)備標(biāo)識以及所述虛擬磁盤存儲位置對應(yīng)于所述塊設(shè)備中的存儲位置建立映射關(guān)系表; 發(fā)送映射關(guān)系表模塊,用于向所述客戶端返回所述映射關(guān)系表,以使所述客戶端在需要讀寫所述塊設(shè)備時,通過所述虛擬磁盤和所述映射關(guān)系表生成讀寫請求。
29.根據(jù)權(quán)利要求28所述的主控制節(jié)點,其特征在于,所述主控制節(jié)點還包括遷移模塊和發(fā)送模塊,其中:` 遷移模塊,用于生成包括源塊設(shè)備標(biāo)識、源塊設(shè)備的存儲位置、目標(biāo)塊設(shè)備標(biāo)識和目的塊設(shè)備的存儲位置的遷移指令; 發(fā)送模塊,用于向所述源塊設(shè)備發(fā)送遷移指令,以指示所述源塊設(shè)備將所源塊設(shè)備中的數(shù)據(jù)復(fù)制到所述目標(biāo)塊設(shè)備中。
30.根據(jù)權(quán)利要求28或29所述的主控制節(jié)點,其特征在于,所述主控制節(jié)點還包括刪除指令1吳塊,其中: 生成刪除指令模塊,用于生成包含虛擬磁盤的標(biāo)識和客戶端MAC地址的刪除指令;所述發(fā)送模塊,還用于向所述客戶端發(fā)送刪除指令,以指示所述客戶端刪除所述虛擬磁盤并更新所述映射關(guān)系表。
31.一種虛擬存儲系統(tǒng),包括根據(jù)權(quán)利要求20~23任一項所述的存儲節(jié)點、根據(jù)權(quán)利要求24~27任一項所述的客戶端以及根據(jù)權(quán)利要求28~30任一項所述的主控制節(jié)點。
【文檔編號】H04L29/08GK103516755SQ201210215699
【公開日】2014年1月15日 申請日期:2012年6月27日 優(yōu)先權(quán)日:2012年6月27日
【發(fā)明者】徐亞力, 鄒現(xiàn)軍 申請人:華為技術(shù)有限公司