本發(fā)明專利技術(shù)實施例公開了一種數(shù)據(jù)分發(fā)方法,用于提升分布式存儲系統(tǒng)的性能。本發(fā)明專利技術(shù)實施例方法包括:數(shù)據(jù)分發(fā)裝置接收用戶的存儲指令,將存儲指令指示存儲的待存儲的數(shù)據(jù)劃分為P個數(shù)據(jù)段,并確定每個數(shù)據(jù)段對應(yīng)的存儲節(jié)點組,最后將每個數(shù)據(jù)段分發(fā)到對應(yīng)的存儲節(jié)點組的主節(jié)點上。本發(fā)明專利技術(shù)實施例還提供了相關(guān)的數(shù)據(jù)存儲方法、相關(guān)裝置以及系統(tǒng)。
【技術(shù)實現(xiàn)步驟摘要】
本專利技術(shù)涉及數(shù)據(jù)存儲領(lǐng)域,尤其涉及一種數(shù)據(jù)分發(fā)方法、數(shù)據(jù)存儲方法、相關(guān)裝置 以及系統(tǒng)。
技術(shù)介紹
現(xiàn)階段的分布式存儲系統(tǒng)越來越多的采用糾刪碼(EC,ErasUreCode)技術(shù)對數(shù)據(jù) 進行存儲。糾刪碼技術(shù)原理是將數(shù)據(jù)進行分割成m個數(shù)據(jù)塊,并且采用冗余算法對m個數(shù) 據(jù)塊進行校驗編碼,生成k個校驗塊,該m個數(shù)據(jù)塊與k個校驗塊組成一個EC條帶。每個 EC條帶能容忍k個數(shù)據(jù)塊或者校驗塊的丟失。 在糾刪碼技術(shù)中,數(shù)據(jù)分發(fā)裝置對數(shù)據(jù)進行EC編碼,生成m個數(shù)據(jù)塊與k個校驗 塊后分發(fā)給m+k個存儲節(jié)點。若有多個數(shù)據(jù)分發(fā)裝置同時讀寫相同的EC條帶的數(shù)據(jù),則需 要使用分布式鎖來解決多個數(shù)據(jù)分發(fā)裝置之間的沖突問題。 但是若采用分布式鎖方式來解決多數(shù)據(jù)分發(fā)裝置沖突的問題,則當(dāng)遇到上層應(yīng)用 在不同數(shù)據(jù)分發(fā)裝置分發(fā)10的情況時,將導(dǎo)致數(shù)據(jù)分發(fā)裝置之間頻繁的搶鎖和鎖切換。由 于鎖切換是一種較為費時的操作,因此頻繁的鎖切換會產(chǎn)生較大的讀寫時延,不能滿足實 際應(yīng)用的需求。
技術(shù)實現(xiàn)思路
本專利技術(shù)實施例提供了一種數(shù)據(jù)分發(fā)方法,用于提升分布式存儲系統(tǒng)的讀寫性能。 本專利技術(shù)實施例的第一方面提供了一種數(shù)據(jù)分發(fā)方法,應(yīng)用于分布式存儲系統(tǒng),所 述分布式存儲系統(tǒng)通過糾刪碼EC條帶來存儲數(shù)據(jù),每個EC條帶包括數(shù)據(jù)部分和校驗部分, 所述每個EC條帶的數(shù)據(jù)部分包括m個數(shù)據(jù)塊,所述每個EC條帶的校驗部分包括對所述m 個數(shù)據(jù)塊進行校驗編碼后得到的k個校驗塊,所述分布式存儲系統(tǒng)包括多個存儲節(jié)點,所 述多個存儲節(jié)點組成多個存儲節(jié)點組,每個存儲節(jié)點組包括的存儲節(jié)點的個數(shù)不小于m+k, 每個存儲節(jié)點組指定一個主存儲節(jié)點,所述m、k均為正整數(shù); 所述方法包括: 接收存儲指令,所述存儲指令攜帶待存儲的數(shù)據(jù); 將所述待存儲的數(shù)據(jù)劃分為P個數(shù)據(jù)段,其中,每個數(shù)據(jù)段對應(yīng)于一個EC條帶,所 述每個數(shù)據(jù)段的大小不大于Z,所述Z為m個數(shù)據(jù)塊的大小,所述P為正整數(shù); 確定所述每個數(shù)據(jù)段對應(yīng)的存儲節(jié)點組; 將所述每個數(shù)據(jù)段分發(fā)到確定的所述每個數(shù)據(jù)段對應(yīng)的存儲節(jié)點組的主存儲節(jié) 點上。 結(jié)合本專利技術(shù)實施例的第一方面,本專利技術(shù)實施例的第一方面的第一種實現(xiàn)方式中, 所述分布式存儲系統(tǒng)的邏輯卷包括多個邏輯區(qū)域,每個邏輯區(qū)域的大小為Z且互不重疊; 所述將所述待存儲的數(shù)據(jù)劃分為P個數(shù)據(jù)段包括: 根據(jù)所述待存儲的數(shù)據(jù)的邏輯地址,將所述待存儲的數(shù)據(jù)劃分為P個數(shù)據(jù)段,其 中,每個數(shù)據(jù)段落在一個所述邏輯區(qū)域中。 結(jié)合本專利技術(shù)實施例的第一方面的第一種實現(xiàn)方式,本專利技術(shù)實施例的第一方面的第 二種實現(xiàn)方式中,所述P個數(shù)據(jù)段中的第1個數(shù)據(jù)段的起始地址為所述待存儲的數(shù)據(jù)的起 始地址,所述P個數(shù)據(jù)段中的第P個數(shù)據(jù)段的起始地址為所述第P個數(shù)據(jù)段所落在邏輯區(qū) 域的起始地址,2彡p彡P(guān)。 結(jié)合本專利技術(shù)實施例的第一方面的第一種實現(xiàn)方式,本專利技術(shù)實施例的第一方面的第 三種實現(xiàn)方式還包括: 預(yù)先設(shè)置并記錄所述每個邏輯區(qū)域與所述每個存儲節(jié)點組之間的對應(yīng)關(guān)系; 所述確定所述每個數(shù)據(jù)段對應(yīng)的存儲節(jié)點組包括: 根據(jù)所述每個邏輯區(qū)域與所述每個存儲節(jié)點組之間的對應(yīng)關(guān)系,確定所述每個數(shù) 據(jù)段所落在的邏輯區(qū)域?qū)?yīng)的存儲節(jié)點組。 結(jié)合本專利技術(shù)實施例的第一方面的第三種實現(xiàn)方式,本專利技術(shù)實施例的第一方面的第 四種實現(xiàn)方式中,每個所述邏輯區(qū)域唯一對應(yīng)一個key值,所述預(yù)先設(shè)置并記錄所述每個 邏輯區(qū)域與所述每個存儲節(jié)點組的對應(yīng)關(guān)系包括: 預(yù)先設(shè)置并記錄所述每個存儲節(jié)點組對應(yīng)的key值; 根據(jù)所述每個邏輯區(qū)域與所述每個存儲節(jié)點組之間的對應(yīng)關(guān)系,確定所述每個數(shù) 據(jù)段所落在的邏輯區(qū)域?qū)?yīng)的存儲節(jié)點組包括: 根據(jù)所述每個數(shù)據(jù)段所落在的邏輯區(qū)域,確定所述每個數(shù)據(jù)段的key值; 根據(jù)所述每個數(shù)據(jù)段的key值,確定所述每個數(shù)據(jù)段對應(yīng)的存儲節(jié)點組。 本專利技術(shù)實施例的第二方面提供了一種數(shù)據(jù)存儲方法,適用于分布式存儲系統(tǒng),所 述分布式存儲系統(tǒng)通過糾刪碼EC條帶來存儲數(shù)據(jù),每個EC條帶包括數(shù)據(jù)部分和校驗部分, 所述每個EC條帶的數(shù)據(jù)部分包括m個數(shù)據(jù)塊,所述每個EC條帶的校驗部分包括對所述m 個數(shù)據(jù)塊進行校驗編碼后得到的k個校驗塊,所述分布式存儲系統(tǒng)包括多個存儲節(jié)點,所 述多個存儲節(jié)點組成多個存儲節(jié)點組,每個存儲節(jié)點組包括的存儲節(jié)點的個數(shù)不小于m+k, 每個存儲節(jié)點組指定一個主存儲節(jié)點,所述m、k均為正整數(shù); 所述多個存儲節(jié)點組中的任意一個存儲節(jié)點組的主存儲節(jié)點執(zhí)行所述數(shù)據(jù)存儲 方法,所述方法包括: 接收第一數(shù)據(jù)段,所述第一數(shù)據(jù)段的大小不大于Z,其中,Z為m個數(shù)據(jù)塊的大小; 根據(jù)所述第一數(shù)據(jù)段進行EC編碼得到第一EC條帶,所述第一EC條帶包括m個第 一數(shù)據(jù)塊和k個第一校驗塊; 將所述第一EC條帶分發(fā)給m+k個存儲節(jié)點以執(zhí)行存儲,其中,所述m+k個存儲節(jié) 點中的每個存儲節(jié)點負責(zé)存儲所述第一EC條帶的m個第一數(shù)據(jù)塊或者k個第一校驗塊中 的任一個。 結(jié)合本專利技術(shù)實施例的第二方面,本專利技術(shù)實施例的第二方面的第一種實現(xiàn)方式中, 所述分布式存儲系統(tǒng)的邏輯卷包括多個邏輯區(qū)域,每個邏輯區(qū)域的大小為Z且互不重疊, 所述第一數(shù)據(jù)段落在一個所述邏輯區(qū)域中。 結(jié)合本專利技術(shù)實施例的第二方面的第一種實現(xiàn)方式,本專利技術(shù)實施例的第二方面的第 二種實現(xiàn)方式中,在所述將所述第一EC條帶分發(fā)給m+k個存儲節(jié)點以執(zhí)行存儲之前,所述 方法還包括: 接收第二數(shù)據(jù)段,所述第二數(shù)據(jù)段與所述第一數(shù)據(jù)段落在相同的邏輯區(qū)域且所述 第二數(shù)據(jù)段的邏輯地址與所述第一數(shù)據(jù)段的邏輯地址存在重疊; 根據(jù)所述第二數(shù)據(jù)段進行EC編碼得到第二EC條帶,所述第二EC條帶包括m個第 二數(shù)據(jù)塊和k個第二校驗塊; 所述將所述第一EC條帶分發(fā)給m+k個存儲節(jié)點以執(zhí)行存儲具體包括:確定所述第 一EC條帶與所述第二EC條帶的串行分發(fā)順序,并根據(jù)所述串行分發(fā)順序,將所述第一EC 條帶與所述第二EC條帶串行分發(fā)給所述m+k個存儲節(jié)點。 結(jié)合本專利技術(shù)實施例的第二方面的第二種實現(xiàn)方式,本專利技術(shù)實施例的第二方面的第 三種實現(xiàn)方式中,所述確定所述第一EC條帶與所述第二EC條帶的串行分發(fā)順序,并根據(jù)所 述串行分發(fā)順序,將所述第一EC條帶與所述第二EC條帶串行分發(fā)給所述m+k個存儲節(jié)點 以執(zhí)行存儲包括: 若所述第一數(shù)據(jù)段的接收時間早于所述第二數(shù)據(jù)段的接收時間,則將所述第一EC 條帶先分發(fā)給m+k個存儲節(jié)點以執(zhí)行存儲,在接收到所述m+k個存儲節(jié)點成功存儲所述第 一EC條帶的響應(yīng)消息之后,再將所述第二EC條帶分發(fā)給所述m+k個存儲節(jié)點以執(zhí)行存儲; 或者, 若所述第一數(shù)據(jù)段的接收時間晚于所述第二數(shù)據(jù)段的接收時間,則將所述第二EC 條帶先分發(fā)給m+k個存儲節(jié)點以執(zhí)行存儲,在接收到所述m+k個存儲節(jié)點成功存儲所述第 二EC條帶的響應(yīng)消息之后,再將所述第一EC條帶分發(fā)給所述m+k個存儲節(jié)點以執(zhí)行存儲。 結(jié)合本專利技術(shù)實施例的第二方面的第一種實現(xiàn)方式,本專利技術(shù)實施例的第二方面的第 四種實現(xiàn)方式中,在根據(jù)所述第一數(shù)據(jù)段進行EC編碼得到第一EC條帶之前還包括: 接收第三數(shù)據(jù)段,所述第三數(shù)據(jù)段與所述第一數(shù)據(jù)段落在相同的邏輯區(qū)域且所述 第三數(shù)據(jù)段的邏輯地址與所述第一數(shù)據(jù)段的邏輯地址不存在重疊; 將所述第三數(shù)據(jù)合并到所述第一數(shù)據(jù)段中,并觸發(fā)所述根據(jù)所述第一數(shù)據(jù)段進行 EC編碼得到第一EC條帶的步驟。 結(jié)合本專利技術(shù)實施本文檔來自技高網(wǎng)...

【技術(shù)保護點】
一種數(shù)據(jù)分發(fā)方法,應(yīng)用于分布式存儲系統(tǒng),其特征在于,所述分布式存儲系統(tǒng)通過糾刪碼EC條帶來存儲數(shù)據(jù),每個EC條帶包括數(shù)據(jù)部分和校驗部分,所述每個EC條帶的數(shù)據(jù)部分包括m個數(shù)據(jù)塊,所述每個EC條帶的校驗部分包括對所述m個數(shù)據(jù)塊進行校驗編碼后得到的k個校驗塊,所述分布式存儲系統(tǒng)包括多個存儲節(jié)點,所述多個存儲節(jié)點組成多個存儲節(jié)點組,每個存儲節(jié)點組包括的存儲節(jié)點的個數(shù)不小于m+k,每個存儲節(jié)點組指定一個主存儲節(jié)點,所述m、k均為正整數(shù);所述方法包括:接收存儲指令,所述存儲指令攜帶待存儲的數(shù)據(jù);將所述待存儲的數(shù)據(jù)劃分為P個數(shù)據(jù)段,其中,每個數(shù)據(jù)段對應(yīng)于一個EC條帶,所述每個數(shù)據(jù)段的大小不大于Z,所述Z為m個數(shù)據(jù)塊的大小,所述P為正整數(shù);確定所述每個數(shù)據(jù)段對應(yīng)的存儲節(jié)點組;將所述每個數(shù)據(jù)段分發(fā)到確定的所述每個數(shù)據(jù)段對應(yīng)的存儲節(jié)點組的主存儲節(jié)點上。
【技術(shù)特征摘要】
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:王道輝,張烽,樊偉,張志樂,曾永強,
申請(專利權(quán))人:華為技術(shù)有限公司,
類型:發(fā)明
國別省市:廣東;44
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。