欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

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

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

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

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