亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

寫數(shù)據(jù)的方法及裝置制造方法

文檔序號(hào):6522345閱讀:146來源:國知局
寫數(shù)據(jù)的方法及裝置制造方法
【專利摘要】本發(fā)明涉及寫數(shù)據(jù)的方法及裝置,包括:確定數(shù)據(jù)塊中第一子數(shù)據(jù)塊集合的個(gè)數(shù),第一子數(shù)據(jù)塊集合中的每個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)均為臟數(shù)據(jù);當(dāng)?shù)谝蛔訑?shù)據(jù)塊集合的個(gè)數(shù)超過閾值時(shí),確定第二子數(shù)據(jù)塊集合,第二子數(shù)據(jù)塊集合是第一個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)和最后一個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)均為臟數(shù)據(jù)的連續(xù)子數(shù)據(jù)塊的集合;當(dāng)?shù)诙訑?shù)據(jù)塊集合的個(gè)數(shù)不超過閾值時(shí),為數(shù)據(jù)塊內(nèi)的各個(gè)第二子數(shù)據(jù)塊集合分別生成第一寫數(shù)據(jù)請(qǐng)求,將第一寫數(shù)據(jù)請(qǐng)求發(fā)送存儲(chǔ)器;當(dāng)?shù)诙訑?shù)據(jù)塊集合的個(gè)數(shù)超過閾值時(shí),為數(shù)據(jù)塊生成一個(gè)第二寫數(shù)據(jù)請(qǐng)求,將第二寫數(shù)據(jù)請(qǐng)求發(fā)送存儲(chǔ)器。根據(jù)本發(fā)明實(shí)施例的寫數(shù)據(jù)的方法及裝置在寫入時(shí)無需從磁盤上讀取數(shù)據(jù)到緩存,減少對(duì)RAID的讀寫壓力。
【專利說明】寫數(shù)據(jù)的方法及裝置【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲(chǔ)領(lǐng)域,尤其涉及一種寫數(shù)據(jù)的方法及裝置。
【背景技術(shù)】
[0002]高速緩存(英文:cache)和廉價(jià)冗余磁盤陣列(英文:Redundant Array ofInexpensive Drivers,縮寫:RAID)是存儲(chǔ)系統(tǒng)中的兩個(gè)重要模塊。其中,cache作為存儲(chǔ)系統(tǒng)的性能加速器,能很好的屏蔽陣列時(shí)延,使主機(jī)輸入輸出(英文:Input and Output,縮寫:10)更友好的訪問硬盤。RAID的原理是通過將多個(gè)相對(duì)便宜的硬盤組合起來,成為一個(gè)硬盤陣列組,使性能達(dá)到甚至超過一個(gè)價(jià)格昂貴、容量巨大的硬盤,并且配合數(shù)據(jù)分散排列的設(shè)計(jì),提升數(shù)據(jù)的安全性。根據(jù)選擇的版本不同,RAID與單顆硬盤相比,不僅能夠增大存儲(chǔ)容量,還能夠增強(qiáng)數(shù)據(jù)集成度以及數(shù)據(jù)的容錯(cuò)能力。另外,磁盤陣列對(duì)于電腦來說,看起來就像一個(gè)單獨(dú)的硬盤或邏輯存儲(chǔ)單元。
[0003]存儲(chǔ)系統(tǒng)接收主機(jī)寫IO后,會(huì)先寫入cache再下發(fā)給RAID。以RAID5為例,RAID包括多個(gè)分條(英文:stripe),本發(fā)明實(shí)施例中描述的分條,是指并行寫入構(gòu)建RAID的各個(gè)存儲(chǔ)器上的數(shù)據(jù)塊的集合,每個(gè)分條包括多個(gè)分條單元,其中,每個(gè)分條單元的大小相同,且同一個(gè)分條上的分條單元位于各個(gè)存儲(chǔ)器中的偏移位置相同。分條上的分條單元也稱為條帶(英文:strip),條帶是一個(gè)盤區(qū)上的連續(xù)地址塊。在磁盤陣列中,控制器通常采用條帶將虛擬磁盤的塊地址(英文:block addresses)映射到成員盤的塊地址。RAID通過條帶化提升存儲(chǔ)系統(tǒng)的可靠性。
[0004]若cache下發(fā)給RAID的數(shù)據(jù)IO的大小與RAID中一個(gè)分條的大小相同,此時(shí)所下發(fā)的數(shù)據(jù)IO能夠與對(duì)應(yīng)的分條對(duì)齊;相反,若cache下發(fā)給RAID的數(shù)據(jù)的大小與RAID中一個(gè)分條的大小不同,則不能分條對(duì)齊,此時(shí)將需要:先將舊分條單元和舊校驗(yàn)值從磁盤上讀取到緩存,然后基于新分條單元、舊分條單元與舊校驗(yàn)值計(jì)算出新的校驗(yàn)值,再將新分條單元與新的校驗(yàn)值寫入磁盤。由于需要先從磁盤上讀取數(shù)據(jù)到緩存,這顯然將放大對(duì)磁盤的讀寫壓力,導(dǎo)致存儲(chǔ)系統(tǒng)的讀寫性能嚴(yán)重下降。

【發(fā)明內(nèi)容】

[0005]摶術(shù)問是頁
[0006]有鑒于此,本發(fā)明要解決的技術(shù)問題是,因cache下發(fā)RAID的IO不能分條對(duì)齊,在執(zhí)行寫入時(shí)需要先從磁盤上讀取數(shù)據(jù)到緩存,導(dǎo)致存儲(chǔ)系統(tǒng)讀寫性能下降的問題。
_7] 解決方案
[0008]為了解決上述技術(shù)問題,根據(jù)本發(fā)明一實(shí)施例,在第一方面提供一種寫數(shù)據(jù)的方法,所述方法應(yīng)用于存儲(chǔ)設(shè)備中,所述存儲(chǔ)設(shè)備包括緩存和存儲(chǔ)器,所述緩存包含多個(gè)數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊包含多個(gè)子數(shù)據(jù)塊,所述方法包括:
[0009]確定所述數(shù)據(jù)塊中包含的第一子數(shù)據(jù)塊集合的個(gè)數(shù),所述第一子數(shù)據(jù)塊集合中的每個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)均為臟數(shù)據(jù);[0010]當(dāng)所述第一子數(shù)據(jù)塊集合的個(gè)數(shù)超過預(yù)定閾值時(shí),確定第二子數(shù)據(jù)塊集合,所述第二子數(shù)據(jù)塊集合是第一個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)和最后一個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)均為臟數(shù)據(jù)的連續(xù)子數(shù)據(jù)塊的集合;
[0011]當(dāng)所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)不超過預(yù)定閾值時(shí),為所述數(shù)據(jù)塊內(nèi)的各個(gè)第二子數(shù)據(jù)塊集合分別生成第一寫數(shù)據(jù)請(qǐng)求,并將每個(gè)第一寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器;
[0012]當(dāng)所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)超過預(yù)定閾值時(shí),為所述數(shù)據(jù)塊生成一個(gè)第二寫數(shù)據(jù)請(qǐng)求,并將所述第二寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器。
[0013]在一種可能的實(shí)現(xiàn)方式中,在所述為所述數(shù)據(jù)塊生成一個(gè)第二寫數(shù)據(jù)請(qǐng)求之前,包括:
[0014]生成讀數(shù)據(jù)請(qǐng)求,所述讀數(shù)據(jù)請(qǐng)求用于讀取所述存儲(chǔ)器中與所述數(shù)據(jù)塊對(duì)應(yīng)的分條內(nèi)的所有數(shù)據(jù);
[0015]從所述數(shù)據(jù)塊對(duì)應(yīng)的分條內(nèi)的所有數(shù)據(jù)中提取與所述數(shù)據(jù)塊中空的子數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù);
[0016]將所述對(duì)應(yīng)的數(shù)據(jù)寫入所述空的子數(shù)據(jù)塊內(nèi)。
[0017]在一種可能的實(shí)現(xiàn)方式中,還包括:
[0018]獲取對(duì)所述分條進(jìn)行數(shù)據(jù)讀取的第一平均時(shí)間;
[0019]獲取對(duì)所述分條內(nèi)的一個(gè)分條單元進(jìn)行數(shù)據(jù)讀取的第二平均時(shí)間;
[0020]根據(jù)所述第一平均時(shí)間與所述第二平均時(shí)間,計(jì)算所述預(yù)定閾值。
[0021]在一種可能的實(shí)現(xiàn)方式中,根據(jù)所述第一平均時(shí)間與所述第二平均時(shí)間,計(jì)算所述預(yù)定閾值包括:
[0022]計(jì)算所述第一平均時(shí)間除以所述第二平均時(shí)間的商;
[0023]將所得到的商與預(yù)設(shè)的時(shí)延系數(shù)相乘,所述預(yù)定閾值等于所述相乘獲得的乘積。
[0024]為了解決上述技術(shù)問題,根據(jù)本發(fā)明又一實(shí)施例,在第二方面提供一種寫數(shù)據(jù)的裝置,所述裝置應(yīng)用于存儲(chǔ)設(shè)備中,所述存儲(chǔ)設(shè)備包括緩存和存儲(chǔ)器,所述緩存包含多個(gè)數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊包含多個(gè)子數(shù)據(jù)塊,所述裝置包括:
[0025]第一確定模塊,用于確定所述數(shù)據(jù)塊中包含的第一子數(shù)據(jù)塊集合的個(gè)數(shù),所述第一子數(shù)據(jù)塊集合中的每個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)均為臟數(shù)據(jù);
[0026]第一判斷模塊,與所述第一確定模塊連接,用于判斷所述第一子數(shù)據(jù)塊集合的個(gè)數(shù)是否超過預(yù)定閾值;
[0027]第二確定模塊,與所述第一判斷模塊連接,用于當(dāng)所述第一子數(shù)據(jù)塊集合的個(gè)數(shù)超過預(yù)定閾值時(shí),確定第二子數(shù)據(jù)塊集合,所述第二子數(shù)據(jù)塊集合是第一個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)和最后一個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)均為臟數(shù)據(jù)的連續(xù)子數(shù)據(jù)塊的集合;
[0028]第二判斷模塊,與所述第二確定模塊連接,用于判斷所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)是否超過預(yù)定閾值;
[0029]寫入模塊,與所述第二判斷模塊連接,用于
[0030]當(dāng)所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)不超過預(yù)定閾值時(shí),為所述數(shù)據(jù)塊內(nèi)的各個(gè)第二子數(shù)據(jù)塊集合分別生成第一寫數(shù)據(jù)請(qǐng)求,并將每個(gè)第一寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器;
[0031]當(dāng)所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)超過預(yù)定閾值時(shí),為所述數(shù)據(jù)塊生成一個(gè)第二寫數(shù)據(jù)請(qǐng)求,并將所述第二寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器。[0032]在一種可能的實(shí)現(xiàn)方式中,所述寫入模塊被配置為:
[0033]生成讀數(shù)據(jù)請(qǐng)求,所述讀數(shù)據(jù)請(qǐng)求用于讀取所述存儲(chǔ)器中與所述數(shù)據(jù)塊對(duì)應(yīng)的分條內(nèi)的所有數(shù)據(jù);
[0034]從所述數(shù)據(jù)塊對(duì)應(yīng)的分條內(nèi)的所有數(shù)據(jù)中提取與所述數(shù)據(jù)塊中空的子數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù);
[0035]將所述對(duì)應(yīng)的數(shù)據(jù)寫入所述空的子數(shù)據(jù)塊內(nèi)。
[0036]在一種可能的實(shí)現(xiàn)方式中,所述寫數(shù)據(jù)的裝置還包括:
[0037]計(jì)算模塊,與所述第一判斷模塊及所述第二判斷模塊連接,用于獲取對(duì)所述分條進(jìn)行數(shù)據(jù)讀取的第一平均時(shí)間;獲取對(duì)所述分條內(nèi)的一個(gè)分條單元進(jìn)行數(shù)據(jù)讀取的第二平均時(shí)間;根據(jù)所述第一平均時(shí)間與所述第二平均時(shí)間,計(jì)算所述預(yù)定閾值。
[0038]在一種可能的實(shí)現(xiàn)方式中,所述計(jì)算模塊被配置為:
[0039]計(jì)算所述第一平均時(shí)間除以所述第二平均時(shí)間的商;
[0040]將所得到的商與預(yù)設(shè)的時(shí)延系數(shù)相乘,所述預(yù)定閾值等于所述相乘獲得的乘積。
[0041]有益.效果
[0042]通過當(dāng)所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)超過預(yù)定閾值時(shí),為所述數(shù)據(jù)塊生成一個(gè)第二寫數(shù)據(jù)請(qǐng)求,并將所述第二寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器,根據(jù)本發(fā)明實(shí)施例的一種寫數(shù)據(jù)的方法及裝置在執(zhí)行寫入時(shí)不需要先從磁盤上讀取數(shù)據(jù)到緩存,從而減少了對(duì)RAID的讀寫壓力;通過當(dāng)所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)不超過預(yù)定閾值時(shí),為所述數(shù)據(jù)塊內(nèi)的各個(gè)第二子數(shù)據(jù)塊集合分別生成第一寫數(shù)據(jù)請(qǐng)求,并將每個(gè)第一寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器,根據(jù)本發(fā)明實(shí)施例的一種寫數(shù)據(jù)的方法及裝置能夠減少cache下發(fā)的寫IO個(gè)數(shù),從而減少了對(duì)RAID的讀寫壓力。
[0043]根據(jù)下面參考附圖對(duì)示例性實(shí)施例的詳細(xì)說明,本發(fā)明的其它特征及方面將變得清楚。
【專利附圖】

【附圖說明】
[0044]包含在說明書中并且構(gòu)成說明書的一部分的附圖與說明書一起示出了本發(fā)明的示例性實(shí)施例、特征和方面,并且用于解釋本發(fā)明的原理。
[0045]圖1示出根據(jù)本發(fā)明一實(shí)施例的寫數(shù)據(jù)的方法的流程圖;
[0046]圖2示出本發(fā)明實(shí)施例一個(gè)chunk的示意圖;
[0047]圖3示出根據(jù)本發(fā)明另一實(shí)施例的寫數(shù)據(jù)的方法的流程圖;
[0048]圖4a_圖4b示出本發(fā)明實(shí)施例中另一 chunk的示意圖;
[0049]圖5示出本發(fā)明實(shí)施例中又一 chunk的示意圖;
[0050]圖6示出計(jì)算預(yù)定閾值的方法的流程圖;
[0051]圖7示出IO大小與閾值關(guān)系的示意圖;
[0052]圖8示出根據(jù)本發(fā)明一實(shí)施例的寫數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖;
[0053]圖9示出根據(jù)本發(fā)明一實(shí)施例的寫數(shù)據(jù)的裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0054]以下將參考附圖詳細(xì)說明本發(fā)明的各種示例性實(shí)施例、特征和方面。附圖中相同的附圖標(biāo)記表示功能相同或相似的元件。盡管在附圖中示出了實(shí)施例的各種方面,但是除非特別指出,不必按比例繪制附圖。
[0055]在這里專用的詞“示例性”意為“用作例子、實(shí)施例或說明性”。這里作為“示例性”所說明的任何實(shí)施例不必解釋為優(yōu)于或好于其它實(shí)施例。
[0056]另外,為了更好的說明本發(fā)明,在下文的【具體實(shí)施方式】中給出了眾多的具體細(xì)節(jié)。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,沒有某些具體細(xì)節(jié),本發(fā)明同樣可以實(shí)施。在一些實(shí)例中,對(duì)于本領(lǐng)域技術(shù)人員熟知的方法、手段、元件和電路未作詳細(xì)描述,以便于凸顯本發(fā)明的主旨。
[0057]圖1示出根據(jù)本發(fā)明一實(shí)施例的寫數(shù)據(jù)的方法的流程圖。該寫數(shù)據(jù)的方法,應(yīng)用于存儲(chǔ)設(shè)備中,所述存儲(chǔ)設(shè)備包括控制器和存儲(chǔ)器(例如,磁盤),其中,控制器包括處理器和緩存(又稱cache)。在本發(fā)明實(shí)施例中磁盤可以以RAID的方式來進(jìn)行組織,為了描述方便,可以將存儲(chǔ)器稱為RAID。cache包含多個(gè)數(shù)據(jù)塊(又稱chunk),每個(gè)chunk包含多個(gè)子數(shù)據(jù)塊,執(zhí)行下述步驟的可以是控制器中的處理器。如圖1所示,該方法主要包括:
[0058]步驟S101、確定cache的一個(gè)chunk中包含的第一子數(shù)據(jù)塊集合的個(gè)數(shù),所述第一子數(shù)據(jù)塊集合中的每個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)均為臟數(shù)據(jù)。
[0059]一般來說,cache中以邏輯單元號(hào)(英文:logic unit number,縮寫:LUN)為標(biāo)識(shí)來組織所緩存的數(shù)據(jù)。這使得,在cache內(nèi)查找待寫入RAID中的臟數(shù)據(jù)時(shí),通常以邏輯區(qū)塊地址(英文:logical block address,縮寫:LBA)為鍵值找到哈希(英文:hash)表的chunk。每個(gè)LUN用hash算法組織查找表,hash是一種數(shù)據(jù)組織方式,每個(gè)hash節(jié)點(diǎn)指向一個(gè)chunk ;chunk是cache內(nèi)最小操作單元,當(dāng)將chunk寫入RAID時(shí),為達(dá)到分條對(duì)齊即cache下發(fā)給RAID的數(shù)據(jù)10的大小與RAID中一個(gè)分條的大小相同的目的,chunk大小應(yīng)與RAID中對(duì)應(yīng)分條的大小相同,因此本發(fā)明實(shí)施例取chunk大小與分條大小相同。
[0060]圖2示出本發(fā)明實(shí)施例一個(gè)chunk的示意圖,該chunk包括15個(gè)子數(shù)據(jù)塊,其中第一子數(shù)據(jù)塊集合的個(gè)數(shù)為4,即圖2中左起第2-3個(gè)子數(shù)據(jù)塊為一個(gè)第一子數(shù)據(jù)塊集合,第9-10個(gè)子數(shù)據(jù)塊為一個(gè)第一子數(shù)據(jù)塊集合,第12個(gè)子數(shù)據(jù)塊為一個(gè)第一子數(shù)據(jù)塊集合,第14-15個(gè)子數(shù)據(jù)塊為一個(gè)第一子數(shù)據(jù)塊集合。
[0061]步驟S102、當(dāng)所述第一子數(shù)據(jù)塊集合的個(gè)數(shù)超過預(yù)定閾值時(shí),確定第二子數(shù)據(jù)塊集合,所述第二子數(shù)據(jù)塊集合是第一個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)和最后一個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)均為臟數(shù)據(jù)的連續(xù)子數(shù)據(jù)塊的集合;
[0062]圖2所示chunk中的第二子數(shù)據(jù)塊集合個(gè)數(shù)為2,即左起第2_3個(gè)子數(shù)據(jù)塊為一個(gè)第二子數(shù)據(jù)塊集合,第9-15個(gè)子數(shù)據(jù)塊為一個(gè)第二子數(shù)據(jù)塊集合。
[0063]步驟S103、當(dāng)所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)不超過預(yù)定閾值時(shí),為所述數(shù)據(jù)塊內(nèi)的各個(gè)第二子數(shù)據(jù)塊集合分別生成第一寫數(shù)據(jù)請(qǐng)求,并將每個(gè)第一寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器。
[0064]步驟S104、當(dāng)所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)超過預(yù)定閾值時(shí),為所述數(shù)據(jù)塊生成一個(gè)第二寫數(shù)據(jù)請(qǐng)求,并將所述第二寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器。
[0065]通過當(dāng)所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)超過預(yù)定閾值時(shí),為所述數(shù)據(jù)塊生成一個(gè)第二寫數(shù)據(jù)請(qǐng)求,并將所述第二寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器,根據(jù)本發(fā)明實(shí)施例的一種寫數(shù)據(jù)的方法及裝置在執(zhí)行寫入時(shí)不需要先從磁盤上讀取數(shù)據(jù)到緩存,從而減少了對(duì)RAID的讀寫壓力。通過當(dāng)所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)不超過預(yù)定閾值時(shí),為所述數(shù)據(jù)塊內(nèi)的各個(gè)第二子數(shù)據(jù)塊集合分別生成第一寫數(shù)據(jù)請(qǐng)求,并將每個(gè)第一寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器,根據(jù)本發(fā)明實(shí)施例的一種寫數(shù)據(jù)的方法及裝置能夠減少cache下發(fā)的寫IO個(gè)數(shù),從而減少了對(duì)RAID的讀寫壓力。
[0066]圖3示出根據(jù)本發(fā)明另一實(shí)施例的寫數(shù)據(jù)的方法的流程圖。圖3中標(biāo)號(hào)與圖1相同的步驟具有相同的功能,為簡明起見,省略對(duì)這些步驟的詳細(xì)說明。如圖3所示,與圖1不同的是:
[0067]在步驟SlOl之后,執(zhí)行步驟S301、判斷所述第一子數(shù)據(jù)塊集合的個(gè)數(shù)是否超過預(yù)定閾值L ?
[0068]是則執(zhí)行步驟S102 ;否則執(zhí)行步驟S306。
[0069]以閾值L為3.79為例,則圖2所示的chunk中第一子數(shù)據(jù)塊集合的個(gè)數(shù)超過預(yù)定閾值。執(zhí)行步驟S102,確定圖2中的第二子數(shù)據(jù)塊集合個(gè)數(shù)為2。
[0070]步驟S302、判斷所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)是否超過預(yù)定閾值L ?
[0071]是則執(zhí)行步驟S104 ;否則執(zhí)行步驟S103。
[0072]仍以圖2中所示chunk及閾值L為3.79為例,第二子數(shù)據(jù)塊集合個(gè)數(shù)為2,小于閾值,因此執(zhí)行步驟S103,為chunk內(nèi)的每個(gè)第二子數(shù)據(jù)塊集合分別生成第一寫數(shù)據(jù)請(qǐng)求,并將每個(gè)第一寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器,以將每個(gè)第二子數(shù)據(jù)塊集合作為一個(gè)IO分別寫入RAID,即發(fā)送2個(gè)第一寫數(shù)據(jù)請(qǐng)求給存儲(chǔ)器,將2個(gè)第二子數(shù)據(jù)塊集合作為2個(gè)數(shù)據(jù)IO下發(fā)給RAID。
[0073]根據(jù)本發(fā)明實(shí)施例的一種寫數(shù)據(jù)的方法能夠減少cache下發(fā)的寫IO個(gè)數(shù),從而減少了對(duì)RAID的讀寫壓力。
[0074]進(jìn)一步地,圖4a示出本發(fā)明實(shí)施例中另一 chunk的示意圖,以圖4a所示chunk為例,遍歷chunk,發(fā)現(xiàn)chunk內(nèi)臟數(shù)據(jù)很多,且中間沒有干凈數(shù)據(jù)混合,執(zhí)行步驟S101-S302,其中第一子數(shù)據(jù)塊集合的個(gè)數(shù)為7大于閾值,第二子數(shù)據(jù)塊集合的個(gè)數(shù)為7大于閾值,因此執(zhí)行步驟S104。
[0075]在一種可能的實(shí)施方式中,在步驟S104為所述數(shù)據(jù)塊生成一個(gè)第二寫數(shù)據(jù)請(qǐng)求之前,還包括:
[0076]步驟S303、生成讀數(shù)據(jù)請(qǐng)求,所述讀數(shù)據(jù)請(qǐng)求用于讀取所述存儲(chǔ)器中與所述數(shù)據(jù)塊對(duì)應(yīng)的分條內(nèi)的所有數(shù)據(jù);
[0077]步驟S304、從所述數(shù)據(jù)塊對(duì)應(yīng)的分條內(nèi)的所有數(shù)據(jù)中提取與所述數(shù)據(jù)塊中空的子數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù);
[0078]步驟S305、將所述對(duì)應(yīng)的數(shù)據(jù)寫入所述空的子數(shù)據(jù)塊內(nèi)。
[0079]圖4b示出將對(duì)應(yīng)的數(shù)據(jù)寫入空的子數(shù)據(jù)塊之后的chunk示意圖。在步驟S104中,以該chunk作為一個(gè)整體,生成一個(gè)第二寫數(shù)據(jù)請(qǐng)求,并將該第二寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器,即將整個(gè)chunk作為一個(gè)數(shù)據(jù)10,下發(fā)給RAID, chunk的大小與對(duì)應(yīng)分條的大小相同,RAID接收到分條對(duì)齊的數(shù)據(jù),只需要計(jì)算校驗(yàn)數(shù)據(jù)后就可以直接執(zhí)行寫入,不需要先從磁盤上讀取數(shù)據(jù)到緩存。 [0080]通過當(dāng)所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)超過預(yù)定閾值時(shí),為所述數(shù)據(jù)塊生成一個(gè)第二寫數(shù)據(jù)請(qǐng)求,并將所述第二寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器,根據(jù)本發(fā)明實(shí)施例的一種寫數(shù)據(jù)的方法在執(zhí)行寫入時(shí)不需要先從磁盤上讀取數(shù)據(jù)到緩存,從而減少了對(duì)RAID的讀寫壓力。
[0081]步驟S306、在第一子數(shù)據(jù)塊集合的個(gè)數(shù)不超過所述預(yù)定閾值的情況下,對(duì)各個(gè)第一子數(shù)據(jù)塊集合分別生成第三寫數(shù)據(jù)請(qǐng)求,并將每個(gè)第三寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器。
[0082]圖5示出本發(fā)明實(shí)施例中另一 chunk的示意圖,以圖5所示chunk為例,遍歷chunk計(jì)算出其要下發(fā)給RAID的第一子數(shù)據(jù)塊集合的個(gè)數(shù)為2小于閾值L,因此對(duì)chunk的第一子數(shù)據(jù)塊集合分別生成第三寫數(shù)據(jù)請(qǐng)求,并將該第三寫數(shù)據(jù)請(qǐng)求發(fā)給所述RAID。此時(shí)沒有必要將干凈數(shù)據(jù)和臟數(shù)據(jù)一起進(jìn)行寫數(shù)據(jù)的操作,也不需要提取對(duì)應(yīng)數(shù)據(jù)來寫入空的子數(shù)據(jù)塊,再進(jìn)行寫操作,只需要對(duì)各個(gè)第一子數(shù)據(jù)塊集合分別生成第三寫數(shù)據(jù)請(qǐng)求,并將每個(gè)第三寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器。需要說明的是,在本發(fā)明實(shí)施例中,干凈數(shù)據(jù)是指已經(jīng)寫入RAID,并且仍然在緩存中保存的數(shù)據(jù);臟數(shù)據(jù)是指尚未寫入RAID,但仍然在緩存中保存的數(shù)據(jù)。
[0083]圖6示出計(jì)算預(yù)定閾值的方法的流程圖。上述實(shí)施例中所述的預(yù)定閾值,其計(jì)算方法如圖6所示,包括:
[0084]步驟S401、獲取對(duì)所述分條進(jìn)行數(shù)據(jù)讀取的第一平均時(shí)間;
[0085]步驟S402、獲取對(duì)所述分條內(nèi)的一個(gè)分條單元進(jìn)行數(shù)據(jù)讀取的第二平均時(shí)間;
[0086]步驟S403、根據(jù)所述第一平均時(shí)間與所述第二平均時(shí)間,計(jì)算所述預(yù)定閾值。
[0087]計(jì)算所述第一平均時(shí)間除以所述第二平均時(shí)間的商;將所得到的商與預(yù)設(shè)的時(shí)延系數(shù)相乘,所述預(yù)定閾值等于所述相乘獲得的乘積。
[0088]具體可以按如下公式計(jì)算所述預(yù)定閾值:
[0089]L=Tm/Tk*M,
[0090]其中,L表示預(yù)定閾值,Tm表示對(duì)一個(gè)分條進(jìn)行數(shù)據(jù)讀取的第一平均時(shí)間,Tk表示對(duì)分條內(nèi)的一個(gè)分條單元進(jìn)行數(shù)據(jù)讀取的第二平均時(shí)間,M表示時(shí)延系數(shù)。在一種具體的實(shí)施方式中,時(shí)延系數(shù)M可以為1.5。
[0091]在相同的RAID上,讀取不同大小的分條單元所需要的第二平均時(shí)間是不同的,其對(duì)應(yīng)關(guān)系如表I所不:
[0092]
【權(quán)利要求】
1.一種寫數(shù)據(jù)的方法,所述方法應(yīng)用于存儲(chǔ)設(shè)備中,所述存儲(chǔ)設(shè)備包括緩存和存儲(chǔ)器,所述緩存包含多個(gè)數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊包含多個(gè)子數(shù)據(jù)塊,其特征在于,所述方法包括: 確定所述數(shù)據(jù)塊中包含的第一子數(shù)據(jù)塊集合的個(gè)數(shù),所述第一子數(shù)據(jù)塊集合中的每個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)均為臟數(shù)據(jù); 當(dāng)所述第一子數(shù)據(jù)塊集合的個(gè)數(shù)超過預(yù)定閾值時(shí),確定第二子數(shù)據(jù)塊集合,所述第二子數(shù)據(jù)塊集合是第一個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)和最后一個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)均為臟數(shù)據(jù)的連續(xù)子數(shù)據(jù)塊的集合; 當(dāng)所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)不超過預(yù)定閾值時(shí),為所述數(shù)據(jù)塊內(nèi)的各個(gè)第二子數(shù)據(jù)塊集合分別生成第一寫數(shù)據(jù)請(qǐng)求,并將每個(gè)第一寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器; 當(dāng)所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)超過預(yù)定閾值時(shí),為所述數(shù)據(jù)塊生成一個(gè)第二寫數(shù)據(jù)請(qǐng)求,并將所述第二寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器。
2.根據(jù)權(quán)利要求1所述的寫數(shù)據(jù)的方法,其特征在于,在所述為所述數(shù)據(jù)塊生成一個(gè)第二寫數(shù)據(jù)請(qǐng)求之前,還包括: 生成讀數(shù)據(jù)請(qǐng)求,所述讀數(shù)據(jù)請(qǐng)求用于讀取所述存儲(chǔ)器中與所述數(shù)據(jù)塊對(duì)應(yīng)的分條內(nèi)的所有數(shù)據(jù); 從所述數(shù)據(jù)塊對(duì)應(yīng)的分條內(nèi)的所有數(shù)據(jù)中提取與所述數(shù)據(jù)塊中空的子數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù); 將所述對(duì)應(yīng)的數(shù)據(jù)寫入所述空的子數(shù)據(jù)塊內(nèi)。
3.根據(jù)權(quán)利要求2所述的寫數(shù)據(jù)的方法,其特征在于,還包括: 獲取對(duì)所述分條進(jìn)行數(shù)據(jù)讀取的第一平均時(shí)間; 獲取對(duì)所述分條內(nèi)的一個(gè)分條單元進(jìn)行數(shù)據(jù)讀取的第二平均時(shí)間; 根據(jù)所述第一平均時(shí)間與所述第二平均時(shí)間,計(jì)算所述預(yù)定閾值。
4.根據(jù)權(quán)利要求3所述的寫數(shù)據(jù)的方法,其特征在于,根據(jù)所述第一平均時(shí)間與所述第二平均時(shí)間,計(jì)算所述預(yù)定閾值包括: 計(jì)算所述第一平均時(shí)間除以所述第二平均時(shí)間的商; 將所得到的商與預(yù)設(shè)的時(shí)延系數(shù)相乘,所述預(yù)定閾值等于所述相乘獲得的乘積。
5.一種寫數(shù)據(jù)的裝置,所述裝置應(yīng)用于存儲(chǔ)設(shè)備中,所述存儲(chǔ)設(shè)備包括緩存和存儲(chǔ)器,所述緩存包含多個(gè)數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊包含多個(gè)子數(shù)據(jù)塊,其特征在于,所述裝置包括: 第一確定模塊,用于確定所述數(shù)據(jù)塊中包含的第一子數(shù)據(jù)塊集合的個(gè)數(shù),所述第一子數(shù)據(jù)塊集合中的每個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)均為臟數(shù)據(jù); 第一判斷模塊,與所述第一確定模塊連接,用于判斷所述第一子數(shù)據(jù)塊集合的個(gè)數(shù)是否超過預(yù)定閾值; 第二確定模塊,與所述第一判斷模塊連接,用于當(dāng)所述第一子數(shù)據(jù)塊集合的個(gè)數(shù)超過預(yù)定閾值時(shí),確定第二子數(shù)據(jù)塊集合,所述第二子數(shù)據(jù)塊集合是第一個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)和最后一個(gè)子數(shù)據(jù)塊存儲(chǔ)的數(shù)據(jù)均為臟數(shù)據(jù)的連續(xù)子數(shù)據(jù)塊的集合; 第二判斷模塊,與所述第二確定模塊連接,用于判斷所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)是否超過預(yù)定閾值; 寫入模塊,與所述第二判斷模塊連接,用于 當(dāng)所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)不超過預(yù)定閾值時(shí),為所述數(shù)據(jù)塊內(nèi)的各個(gè)第二子數(shù)據(jù)塊集合分別生成第一寫數(shù)據(jù)請(qǐng)求,并將每個(gè)第一寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器;當(dāng)所述第二子數(shù)據(jù)塊集合的個(gè)數(shù)超過預(yù)定閾值時(shí),為所述數(shù)據(jù)塊生成一個(gè)第二寫數(shù)據(jù)請(qǐng)求,并將所述第二寫數(shù)據(jù)請(qǐng)求發(fā)送給所述存儲(chǔ)器。
6.根據(jù)權(quán)利要求5所述的寫數(shù)據(jù)的裝置,其特征在于,所述寫入模塊被配置為:生成讀數(shù)據(jù)請(qǐng)求,所述讀數(shù)據(jù)請(qǐng)求用于讀取所述存儲(chǔ)器中與所述數(shù)據(jù)塊對(duì)應(yīng)的分條內(nèi)的所有數(shù)據(jù);從所述數(shù)據(jù)塊對(duì)應(yīng)的分條內(nèi)的所有數(shù)據(jù)中提取與所述數(shù)據(jù)塊中空的子數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù);將所述對(duì)應(yīng)的數(shù)據(jù)寫入所述空的子數(shù)據(jù)塊內(nèi)。
7.根據(jù)權(quán)利要求6所述的寫數(shù)據(jù)的裝置,其特征在于,還包括:計(jì)算模塊,與所述第一判斷模塊及所述第二判斷模塊連接,用于獲取對(duì)所述分條進(jìn)行數(shù)據(jù)讀取的第一平均時(shí)間;獲取對(duì)所述分條內(nèi)的一個(gè)分條單元進(jìn)行數(shù)據(jù)讀取的第二平均時(shí)間;根據(jù)所述第一平均時(shí)間與所述第二平均時(shí)間,計(jì)算所述預(yù)定閾值。
8.根據(jù)權(quán)利要求7所述的寫數(shù)據(jù)的裝置,其特征在于,所述計(jì)算模塊被配置為:計(jì)算所述第一平均時(shí)間除以所述第二平均時(shí)間的商;將所得到的商與預(yù)設(shè)的時(shí)延系數(shù)相乘,所述預(yù)定閾值等于所述相乘獲得的乘積。
【文檔編號(hào)】G06F12/08GK103645995SQ201310649068
【公開日】2014年3月19日 申請(qǐng)日期:2013年12月4日 優(yōu)先權(quán)日:2013年12月4日
【發(fā)明者】董浩, 姚建業(yè) 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1