一種去中心化的分布式異構(gòu)存儲系統(tǒng)數(shù)據(jù)分布方法
【專利摘要】本發(fā)明公開了一種去中心化的分布式異構(gòu)存儲系統(tǒng)數(shù)據(jù)分布方法,它包括以下步驟:1、將數(shù)據(jù)對象分類;2、將存儲設(shè)備分類;3、將存儲數(shù)據(jù)分成不同的“放置組集群”,每種存儲設(shè)備的類型對應(yīng)于一類“放置組集群”;4、計算待存入的每種數(shù)據(jù)對象應(yīng)該放置到不同類型“放置組集群”的比例;5、利用哈希算法確定待存入的數(shù)據(jù)對象屬于“放置組集群”中的哪一個“放置組”;6、利用存儲系統(tǒng)的數(shù)據(jù)分布算法,將每個“放置組”中的數(shù)據(jù)對象存儲到多個對應(yīng)的存儲設(shè)備中。本發(fā)明的有點(diǎn)是:保持了存儲系統(tǒng)的性能、負(fù)載均衡和可擴(kuò)展性,又減少了對固態(tài)硬盤的寫操作次數(shù),延長其壽命。
【專利說明】
一種去中心化的分布式異構(gòu)存儲系統(tǒng)數(shù)據(jù)分布方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于分布式計算機(jī)存儲技術(shù)領(lǐng)域,具體涉及一種去中心化的分布式異構(gòu)存 儲系統(tǒng)數(shù)據(jù)分布方法。
【背景技術(shù)】
[0002] 在大數(shù)據(jù)應(yīng)用、科學(xué)計算和云計算平臺中,可靠并且可擴(kuò)展的存儲系統(tǒng)對系統(tǒng)性 能有著至關(guān)重要的作用。隨著數(shù)據(jù)量增大(PB級別),存儲系統(tǒng)的數(shù)據(jù)分布策略必須保證性 能和可擴(kuò)展性。去中心化的數(shù)據(jù)分布策略,比如Ceph,利用存儲設(shè)備本身的處理能力提供可 靠的對象存儲系統(tǒng)。固態(tài)硬盤(SSD)讀寫性能優(yōu)于傳統(tǒng)的機(jī)械硬盤(HDD),越來越被廣泛地 應(yīng)用到存儲系統(tǒng)中,形成大規(guī)模分布式異構(gòu)存儲系統(tǒng)。然而,存儲系統(tǒng)的數(shù)據(jù)分布策略必須 考慮固態(tài)硬盤的"寫耐受性",同時保證系統(tǒng)的可擴(kuò)展性和負(fù)載均衡,因?yàn)檫^多的寫操作會 加速固態(tài)硬盤存儲介質(zhì)的損耗。
[0003] 目前,有許多研究致力于工作流系統(tǒng)的數(shù)據(jù)分布和任務(wù)調(diào)度。比如在科學(xué)計算中, "工作流管理系統(tǒng)"會更具執(zhí)行計算站點(diǎn)的存儲資源和計算能力分配計算任務(wù)。根據(jù)工作流 模型中任務(wù)的依賴關(guān)系,可以確定這些任務(wù)所需數(shù)據(jù)的數(shù)據(jù)量大小,然后將不同階段的計 算任務(wù)分配到不同的計算站點(diǎn),分配方案中主要考慮減少不同站點(diǎn)的遠(yuǎn)程訪問傳輸開銷。 Ceph利用存儲設(shè)備自身的通信能力,設(shè)計出了一種新的數(shù)據(jù)分布方法,該方法分為兩步,第 一步利用哈希算法,將數(shù)據(jù)對象映射到"放置組",哈希函數(shù)的輸入就是數(shù)據(jù)對象的全局唯 一的標(biāo)識符,哈希函數(shù)的輸出結(jié)果相同的數(shù)據(jù)對象被放置到同一個"放置組"。第二步利用 偽隨機(jī)哈希算法,將每個"放置組"分布到多個存儲設(shè)備。該數(shù)據(jù)分布方法沒有考慮存儲系 統(tǒng)的異構(gòu)特性,這樣會導(dǎo)致對固態(tài)硬盤產(chǎn)生密集的寫操作。還有一些工作利用固態(tài)硬盤提 升中心化的存儲性能,這種中心化的數(shù)據(jù)分布策略使得系統(tǒng)不具備擴(kuò)展性,不適合超大規(guī) 模的數(shù)據(jù)應(yīng)用。
【發(fā)明內(nèi)容】
[0004] 針對現(xiàn)有技術(shù)存在的不足,本發(fā)明所要解決的技術(shù)問題是提供一種去中心化的分 布式異構(gòu)存儲系統(tǒng)數(shù)據(jù)分布方法,它通過分析數(shù)據(jù)對象的訪問方式來保持存儲系統(tǒng)的性 能、負(fù)載均衡和可擴(kuò)展性,同時減少對固態(tài)硬盤的寫操作。
[0005] 本發(fā)明所要解決的技術(shù)問題是通過這樣的技術(shù)方案實(shí)現(xiàn)的,它包括以下步驟: 步驟1、在程序的執(zhí)行過程中,統(tǒng)計每個數(shù)據(jù)對象被讀/寫的次數(shù),將讀寫次數(shù)轉(zhuǎn)換為權(quán) 值,作為數(shù)據(jù)的訪問模式;根據(jù)數(shù)據(jù)的訪問模式,將數(shù)據(jù)對象分類; 步驟2、根據(jù)存儲設(shè)備的容量和讀寫性能,將存儲設(shè)備分類; 步驟3、將存儲數(shù)據(jù)分成不同的"放置組集群","放置組集群"包含多個"放置組",每種 存儲設(shè)備的類型對應(yīng)于一類"放置組集群"; 步驟4、根據(jù)存儲系統(tǒng)的負(fù)載均衡目標(biāo)和性能指標(biāo),計算待存入的每種數(shù)據(jù)對象應(yīng)該放 置到不同類型"放置組集群"的比例; 步驟5、利用哈希算法確定待存入的數(shù)據(jù)對象屬于"放置組集群"中的哪一個"放置組"; 步驟6、利用存儲系統(tǒng)的數(shù)據(jù)分布算法,將每個"放置組"中的數(shù)據(jù)對象存儲到多個對應(yīng) 的存儲設(shè)備中。固態(tài)硬盤的"放置組"會被分配到固態(tài)硬盤,機(jī)械硬盤的"放置組"會被分配 到機(jī)械硬盤。
[0006] 本發(fā)明的技術(shù)效果: 本發(fā)明根據(jù)數(shù)據(jù)對象的訪問模式,將不同類別的數(shù)據(jù)分布到不同的"放置組集群",此 時需要計算待存入的不同類型數(shù)據(jù)對象放到不同的"放置組集群"的比列,用來控制"放置 組集群"之間的負(fù)載均衡,在確定了每個數(shù)據(jù)對象所屬的"放置組集群"之后,再利用哈希算 法計算該數(shù)據(jù)對象對應(yīng)的"放置組";再把"放置組"中的數(shù)據(jù)對象分布到存儲設(shè)備中。這樣 將數(shù)據(jù)均勻分布到存儲設(shè)備中,排除了中心化的數(shù)據(jù)存儲結(jié)構(gòu),既保持了存儲系統(tǒng)的性能、 負(fù)載均衡和可擴(kuò)展性,又減少了對固態(tài)硬盤的寫操作次數(shù),延長其壽命。
【附圖說明】
[0007] 本發(fā)明的【附圖說明】如下: 圖1為計算每種待存入數(shù)據(jù)對象存儲到每種"放置組集群"的比例算法流程圖; 圖2為本發(fā)明的數(shù)據(jù)存儲過程圖; 圖3為映射讀密集型數(shù)據(jù)對象映射到"放置組"的示意圖; 圖4為映射寫密集型數(shù)據(jù)對象映射到"放置組"的示意圖。
【具體實(shí)施方式】
[0008] 下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步說明: 本發(fā)明包括以下步驟: 步驟1、在程序的執(zhí)行過程中,統(tǒng)計每個數(shù)據(jù)對象被讀/寫的次數(shù),將讀寫次數(shù)轉(zhuǎn)換為權(quán) 值,作為數(shù)據(jù)的訪問模式;根據(jù)數(shù)據(jù)的訪問模式,將數(shù)據(jù)對象分類,比如讀密集型,寫密集型 和混合型;分類方法可以采用常見的K-Means聚類算法,每種類型的數(shù)據(jù)對象有個屬性值用 來表示這類數(shù)據(jù)對象平均寫次數(shù); 步驟2、根據(jù)存儲設(shè)備的容量和讀寫性能,將存儲設(shè)備分類,比如高速固態(tài)硬盤,低速固 態(tài)硬盤,高速機(jī)械硬盤,低速機(jī)械硬盤,每種存儲設(shè)備有自己的讀寫性能參數(shù),比如平均讀 寫延遲時間、容量。
[0009]步驟3、將存儲數(shù)據(jù)分成不同的"放置組集群","放置組集群"包含多個"放置組", 每種存儲設(shè)備類型對應(yīng)于一類"放置組集群"。"放置組集群"用來將讀寫屬性相似的數(shù)據(jù)對 象組合到一起;"放置組集群"是一個邏輯的概念,主要用來對數(shù)據(jù)對象做聚合,同時,"放置 組集群"也有容量和讀寫性能的屬性,容量就是該"放置組集群"對應(yīng)的所有硬盤的容量,讀 寫性能是這些硬盤的平均讀寫延遲。
[0010]步驟4、根據(jù)存儲系統(tǒng)的負(fù)載均衡目標(biāo)和性能指標(biāo),計算待存入的每種數(shù)據(jù)對象應(yīng) 該放置到不同類型"放置組集群"的比例; 例如,假設(shè)系統(tǒng)有3個"放置組集群",對于讀密集型數(shù)據(jù),20%放入第一個"放置組集 群",30%放入第二個"放置組集群",50%放入第三個"放置組集群",這個比例指的是放入每 類"放置組集群"的個數(shù)占該類數(shù)據(jù)總數(shù)的比例。
[0011] 存儲系統(tǒng)的性能指標(biāo)根據(jù)存儲設(shè)備的讀寫性能來設(shè)定,比如,要求對所有的數(shù)據(jù) 對象,讀取操作的平均延遲為0.2毫秒,寫入操作的平均延遲為0.5毫秒。設(shè)置每種數(shù)據(jù)對象 在不同類型"放置組集群"比例的目的就是要保證數(shù)據(jù)在"放置組集群"之間均衡分布。在極 端的情況下,所有的數(shù)據(jù)對象都是寫密集型,按照存儲設(shè)備分配的目標(biāo),寫密集型數(shù)據(jù)對象 應(yīng)分配到機(jī)械硬盤中,以便減少對固態(tài)硬盤的寫操作,但如果所有數(shù)據(jù)對象都是寫密集型 的,那么全都會被分配到機(jī)械硬盤對應(yīng)的"放置組集群",使得固態(tài)硬盤中沒有數(shù)據(jù)。為了避 免這種情況,需要將同一種類型的數(shù)據(jù)對象分配到不同的"放置組集群",用這個比例來控 制"放置組集群"之間的負(fù)載均衡。
[0012] 步驟5、利用哈希算法確定待存入的數(shù)據(jù)對象屬于"放置組集群"中的哪一個"放置 組",因?yàn)橐粋€"放置組集群"中包含多個"放置組"。
[0013]步驟6、利用存儲系統(tǒng)的數(shù)據(jù)分布算法,將每個"放置組"中的數(shù)據(jù)對象存儲到多個 對應(yīng)的存儲設(shè)備中,固態(tài)硬盤對應(yīng)"放置組集群"中的"放置組"會被分配到固態(tài)硬盤,機(jī)械 硬盤對應(yīng)"放置組集群"中的"放置組"會被分配到機(jī)械硬盤。
[0014] -個"放置組"存儲到多個存儲設(shè)備的原因是為了對同一個數(shù)據(jù)多次備份。備份 數(shù)由系統(tǒng)初始化設(shè)置。因?yàn)橥粋€"放置組"對應(yīng)的存儲設(shè)備有多個,所以需要有個映射算 法將確定每個"放置組"應(yīng)該放入哪一個存儲設(shè)備。
[0015] 上述步驟4中,計算每種待存入數(shù)據(jù)對象放置到每種"放置組集群"的比例算法流程圖 如圖1所示: 該流程開始于步驟801,然后: 在步驟802,計算所有待存入數(shù)據(jù)對象的總數(shù),即不同類型數(shù)據(jù)對象的總和; 在步驟803,計算已有數(shù)據(jù)對象的總數(shù),即在初始狀態(tài)下,所有存儲設(shè)備已經(jīng)存儲的數(shù) 據(jù)對象的個數(shù); 在步驟804,根據(jù)負(fù)載均衡條件,計算每個"放置組集群"能存儲的數(shù)據(jù)對象最大值;即 確定每個"放置組集群"的容量; 負(fù)載均衡是系統(tǒng)的配置參數(shù),在所有數(shù)據(jù)對象完全平均分布的情況下,根據(jù)每個存儲 設(shè)備的容量增加或者減少5%都認(rèn)為是負(fù)載均衡的。比如,某個"放置組集群"在完全平均分 布的狀態(tài)下能存儲100個數(shù)據(jù)對象,負(fù)載均衡的平衡條件允許5%的浮動,那么該"放置組集 群"最多能存儲100+100*0.05=105個數(shù)據(jù)對象; 在步驟805,將所有待存入數(shù)據(jù)對象按照平均寫次數(shù)升序排列,平均寫次數(shù)是不同類的 數(shù)據(jù)對象的屬性; 假設(shè)待存入數(shù)據(jù)對象被分成了3類,讀密集性,寫密集型和混合型,其中讀密集型數(shù)據(jù) 的平均寫次數(shù)是10,寫密集型的平均寫次數(shù)是80,混合型的平均寫次數(shù)是50。
[0016]在步驟806,將所有"放置組集群"按照性能降序排列,其中"放置組集群"的性能就 是與其對應(yīng)的存儲設(shè)備的讀寫性能,固態(tài)硬盤的讀寫性能優(yōu)于機(jī)械硬盤; 在步驟807,初始化變量i=0,用來掃描待存入數(shù)據(jù)對象類別; 假設(shè)待存入數(shù)據(jù)對象被分成了 3類,這個流程中的i就是1,2,3,這是一個循環(huán)迭代過 程,即分別掃描待存入的每個類別的數(shù)據(jù)對象; 在步驟808,初始化變量j=0,用來掃描"放置組集群"類別; 假設(shè)數(shù)據(jù)"放置組集群"被分成了 4類,這個流程中的j就是1,2,3,4; 在步驟809,將第i類待存入的數(shù)據(jù)對象分配到第j類"放置組集群"; 該步驟是按照步驟805和步驟806中排好的順序,依據(jù)步驟804所計算的"放置組集群" 容量依次填充待存入的每類數(shù)據(jù)對象的個數(shù); 在步驟810,記錄存儲在"放置組集群" j中i類待存入的數(shù)據(jù)對象的個數(shù),用于計算待存 入的每類數(shù)據(jù)對象的存儲比例; 每一類待存入的數(shù)據(jù)對象的總個數(shù)是已知的,記錄每一類待存入數(shù)據(jù)對象放置到每一 個"放置組集群"的個數(shù),用該數(shù)值除以每一類待存入記錄數(shù)據(jù)對象的總數(shù),就得到了比值。 [0017]在步驟811,判斷"放置組集群" j是否達(dá)到最大存儲個數(shù),如果是,執(zhí)行步驟812,否 則執(zhí)行步驟813; 在步驟813,判斷是否所有待存入數(shù)據(jù)對象處理完畢,如果是,執(zhí)行步驟816,否則,執(zhí)行 步驟814; 在步驟814,將用來掃描數(shù)據(jù)對象類別數(shù)組的指針i移動到下一個位置,即處理下一類 待存入數(shù)據(jù)對象,執(zhí)行步驟809; 在步驟812,將用來掃描"放置組集群"數(shù)組的指針j移動到下一個位置,即處理下一個 "放置組集群"; 在步驟815,判斷是否所有"放置組集群"處理完畢,如果是,執(zhí)行步驟816,否則,執(zhí)行步 驟809; 在步驟816,根據(jù)步驟810中記錄的每個"放置組集群"存儲的每類待存入數(shù)據(jù)對象的個 數(shù),計算每類待存入數(shù)據(jù)對象分配到每種"放置組集群"的比例; 在步驟817,每類待存入數(shù)據(jù)分配到各類"放置組集群"的算法結(jié)束。
[0018] 上述步驟5和步驟6的數(shù)據(jù)存儲過程如圖2所示,將存儲系統(tǒng)的"放置組"劃分為不同的 "放置組集群",每一個"放置組集群"包含多個"放置組"。存儲數(shù)據(jù)對象時,需要首先根據(jù)每 個數(shù)據(jù)對象的類別和該類別的數(shù)據(jù)對象在"放置組集群"的分配比例,確定該數(shù)據(jù)屬于哪一 個"放置組集群",這個過程要通過圖1的流程來計算不同類型的對象放到不同的"放置組集 群"的比列,以來控制"放置組集群"之間的負(fù)載均衡,再利用哈希算法確定該數(shù)據(jù)對象屬于 這個"放置組集群"中的哪一個"放置組"。步驟6利用一個偽隨機(jī)哈希算法(CRUSH)把這個 "放置組"映射到不同的存儲設(shè)備中去。
[0019] (一)、圖1所示流程圖的實(shí)施例 假設(shè)存儲系統(tǒng)有5類存儲設(shè)備,每類存儲設(shè)備對應(yīng)一個"放置組集群",那么系統(tǒng)有5個 "放置組集群"。所有放置組集群已經(jīng)按照性能從高到低進(jìn)行排序(對應(yīng)于步驟806)。如表1 所示。
[0020] 表3系統(tǒng)存儲設(shè)備的屬性
存儲系統(tǒng)的總?cè)萘繛椋?000+1500+2000+2500+3000=10000
假設(shè)待存入的數(shù)據(jù)對象分成了 3類,每類對象的平均讀寫次數(shù)和數(shù)量如表2所示。每個 類型已經(jīng)按照寫次數(shù)進(jìn)行排序(對應(yīng)于步驟805)。
[0021]表i所有待存入數(shù)據(jù)對象的屬性
根據(jù)圖1所示的流程,算法的運(yùn)行過程如下: 在步驟802,所有待存入的數(shù)據(jù)對象總數(shù)為350+150+200=700; 在步驟803,計算已有數(shù)據(jù)對象的總數(shù)為60+260+300+530+700=1850; 數(shù)據(jù)對象的總數(shù)量為:700+1850=2500; 在步驟804,假設(shè)系統(tǒng)負(fù)載均衡的平衡因子e=0.001,則對于每一個"放置組集群"計算 出其相應(yīng)可容納的最大值RMAX,計算公式如下: "放置組集群" 1:RMAX. 1: (1+0? 001 )*( 1000*(700+1850))/10000=255; "放置組集群"2:RMAX.2: (1+0? 001 )*( 1500*(700+1850))/10000=383; "放置組集群"3:RMAX.3: (1+0? 001 )*(2000*(700+1850))/10000=511; "放置組集群"4:RMAX.4: (1+0? 001 )*(2500*(700+1850))/10000=638; "放置組集群"5:RMAX.5: (1+0? 001 )*(3000*(700+1850))/10000=766; 因此,對五個"放置組集群",假設(shè)數(shù)據(jù)完全平均分配時的最大容量RMAX分別為:255, 383,511,638,766。
[0022]在步驟807,i初始化為0,用來掃描A,B,C三類待存入的數(shù)據(jù)對象。
[0023]在步驟808,j初始化為0,用來掃描"放置組集群" 1,2,3,4,5. 在步驟809的分配與步驟810記錄過程如下: 對三種類型數(shù)據(jù)對象進(jìn)行分類時,對平均寫次數(shù)最少讀次數(shù)較多的A類優(yōu)先分配到寫 延遲小讀延遲小的OSD. 1上。
[0024] 1.放置組集群1本身負(fù)載為60,計算出的可容納最大值為255,可容納量255-60= 195〇
[0025] 故可分配類型A的195個數(shù)據(jù)對象分配到放置組集群1中,此時類型A剩余350-195= 155。
[0027] 2 .放置組集群2本身負(fù)載為260,計算出的可容納最大值為383,可容納量383-260= 123〇
[0028] 繼續(xù)將類型A的123個數(shù)據(jù)對象分配到放置組集群2中,類型A剩余155-123=32。
[0029]放置組集群2已滿。
[0030] 3 .放置組集群3本身負(fù)載為300,計算出的可容納最大值為511,可容納量511-300= 211; 繼續(xù)將類型A的32個數(shù)據(jù)對象分配到放置組集群3中,類型A分配完畢,剩余0; 放置組集群3剩余容量為211-32=179; 對類型B進(jìn)行分配,優(yōu)先分配到讀寫延遲都相對較小的放置組集群3中; 將類型B的150個數(shù)據(jù)對象全部分配到放置組集群3中。此時放置組集群3剩余容量179-150=29; 對類型C進(jìn)行分配,仍優(yōu)先分配到讀寫延遲都相對較小的放置組集群3中; 將類型C的29個數(shù)據(jù)對象分配到放置組集群3中,類型C剩余200-29=171。
[0031]放置組集群3已滿。
[0032] 4.放置組集群4本身負(fù)載530,計算出的可容納最大值為638,可容納量為638-530=108; 繼續(xù)將類型C的108個數(shù)據(jù)對象分配到放置組集群4中,類型C剩余63=171-108。
[0033]放置組集群4已滿。
[0034] 5.放置組集群5本身負(fù)載700,計算出的可容納最大值為766,可容納量為766-700=66; 將類型C的63個數(shù)據(jù)對象分配到放置組集群5中,類型C分配完畢,剩余0。
[0035]放置組集群5剩余容量仍為66-63=3。
[0036] 在步驟816,根據(jù)最后的結(jié)果,計算每類待存入的數(shù)據(jù)對象分配到每個"放置組集群"的 比例:
(二)、下面說明本發(fā)明的步驟5如何將不同類型的數(shù)據(jù)對象映射到不同的"放置組"。
[0037] 本實(shí)施例中,假設(shè)系統(tǒng)有100個"放置組",編號從1到100。根據(jù)系統(tǒng)存儲設(shè)備類型, 這些"放置組"被分成了3個"放置組集群" :1-20號為第一個"放置組集群",21-50號為第二 個"放置組集群",51-100號為第三個"放置組集群"。
[0038] 如圖3所示,將一個讀密集型的數(shù)據(jù)對象映射到"放置組"13。假設(shè)通過如圖1的流 程算法得出讀密集型數(shù)據(jù)對象在三個"放置組集群"中的分布比例(Distribution Ratio) 為6:2:2,也就是:1-20號"放置組"為第一個"放置組集群",有60%的讀密集型的數(shù)據(jù)屬于第 一個"放置組集群",21-50號"放置組"為第二個"放置組集群",有20%的讀密集型數(shù)據(jù)屬于 第二個"放置組集群",51-100號"放置組"為第三個"放置組集群",有20%的讀密集型數(shù)據(jù)屬 于第三個"放置組集群"。由于當(dāng)前這個讀密集型數(shù)據(jù)對象的標(biāo)識經(jīng)過哈希函數(shù)得到的結(jié)果 是50,在第一個"放置組集群"的范圍之內(nèi),再利用哈希算法,計算出此該數(shù)據(jù)對象的目標(biāo) "放置組"為13。
[0039] 如圖4所示,將一個寫密集型的數(shù)據(jù)對象映射到"放置組"62。假設(shè)寫密集型數(shù)據(jù)對 象在三個"放置組集群"中的分布比例為1:3:6,該數(shù)據(jù)對象的標(biāo)識經(jīng)過哈希函數(shù)得到的結(jié) 果也是50,但50屬于第三個"放置組集群"(因?yàn)樽x密集型數(shù)據(jù)和寫密集型數(shù)據(jù)對應(yīng)放置到 每個放置組集群的比例是不一樣的,圖4中間哈希值列出三個"放置組集群"的放置比例,哈 希值1-10的數(shù)據(jù)對象可以認(rèn)為是放置到第一類"放置組集群"的,哈希值11-40的數(shù)據(jù)對象 是放置到第二類"放置組集群"的,哈希值41-100的數(shù)據(jù)對象是放置到第三類"放置組集群" 的),因此這個對象最終被映射到"放置組"62中。
【主權(quán)項(xiàng)】
1. 一種去中心化的分布式異構(gòu)存儲系統(tǒng)數(shù)據(jù)分布方法,其特征是,包括以下步驟: 步驟1、在程序的執(zhí)行過程中,統(tǒng)計每個數(shù)據(jù)對象被讀/寫的次數(shù),將讀寫次數(shù)轉(zhuǎn)換為權(quán) 值,作為數(shù)據(jù)的訪問模式;根據(jù)數(shù)據(jù)的訪問模式,將數(shù)據(jù)對象分類; 步驟2、根據(jù)存儲設(shè)備的容量和讀寫性能,將存儲設(shè)備分類; 步驟3、將存儲數(shù)據(jù)分成不同的"放置組集群","放置組集群"包含多個"放置組",每種 存儲設(shè)備的類型對應(yīng)于一類"放置組集群"; 步驟4、根據(jù)存儲系統(tǒng)的負(fù)載均衡目標(biāo)和性能指標(biāo),計算待存入的每種數(shù)據(jù)對象應(yīng)該放 置到不同類型"放置組集群"的比例; 步驟5、利用哈希算法確定待存入的數(shù)據(jù)對象屬于"放置組集群"中的哪一個"放置組"; 步驟6、利用存儲系統(tǒng)的數(shù)據(jù)分布算法,將每個"放置組"中的數(shù)據(jù)對象存儲到多個對應(yīng) 的存儲設(shè)備中。2. 根據(jù)權(quán)利要求1所述的一種去中心化的分布式異構(gòu)存儲系統(tǒng)數(shù)據(jù)分布方法,其特征 是,所述步驟4中,計算待存入每種數(shù)據(jù)對象放置到每種"放置組集群"的比例的步驟包括: 步驟802,計算所有待存入數(shù)據(jù)對象的總數(shù); 步驟803,計算已有數(shù)據(jù)對象的總數(shù); 步驟804,根據(jù)負(fù)載均衡條件,計算每個"放置組集群"能存儲的數(shù)據(jù)對象最大值; 步驟805,將所有待存入數(shù)據(jù)對象按照平均寫次數(shù)升序排列; 步驟806,將所有"放置組集群"按照性能降序排列; 步驟807,初始化變量i=0,用來掃描待存入數(shù)據(jù)對象類別; 步驟808,初始化變量j=0,用來掃描"放置組集群"類別; 步驟809,將第i類待存入的數(shù)據(jù)對象分配到第j類"放置組集群"; 步驟810,記錄存儲在"放置組集群" j中i類待存入的數(shù)據(jù)對象的個數(shù); 步驟811,判斷"放置組集群" j是否達(dá)到最大存儲個數(shù),如果是,執(zhí)行步驟812,否則執(zhí)行 步驟813; 步驟813,判斷是否所有待存入數(shù)據(jù)對象處理完畢,如果是,執(zhí)行步驟816,否則,執(zhí)行步 驟814; 步驟814,處理下一類待存入數(shù)據(jù)對象,執(zhí)行步驟809; 步驟812,處理下一個"放置組集群"; 步驟815,判斷是否所有"放置組集群"處理完畢,如果是,執(zhí)行步驟816,否則,執(zhí)行步驟 809; 步驟816,根據(jù)步驟810中記錄的每個"放置組集群"存儲的每類待存入數(shù)據(jù)對象的個 數(shù),計算每類待存入數(shù)據(jù)對象分配到每種"放置組集群"的比例。3. 根據(jù)權(quán)利要求2所述的一種去中心化的分布式異構(gòu)存儲系統(tǒng)數(shù)據(jù)分布方法,其特征 是,所述步驟809中,第i類待存入的數(shù)據(jù)對象分配到第j類"放置組集群"的方法是:按照步 驟805和步驟806中排好的順序,依據(jù)步驟804所計算的"放置組集群"容量依次填充待存入 的每類數(shù)據(jù)對象的個數(shù)。4. 根據(jù)權(quán)利要求1所述的一種去中心化的分布式異構(gòu)存儲系統(tǒng)數(shù)據(jù)分布方法,其特征 是:步驟6中,采用偽隨機(jī)哈希算法把這個"放置組"映射到不同的存儲設(shè)備中。
【文檔編號】G06K9/62GK106055277SQ201610376033
【公開日】2016年10月26日
【申請日】2016年5月31日
【發(fā)明人】沙行勉, 諸葛晴鳳, 吳林
【申請人】重慶大學(xué)