本發(fā)明涉及智能設(shè)備存儲領(lǐng)域,特別涉及一種提高智能設(shè)備的硬盤寫入性能的方法及裝置。
背景技術(shù):
在計算機等智能設(shè)備的使用過程中,需要將數(shù)據(jù)存儲在計算機等智能設(shè)備的硬盤中,在進行數(shù)據(jù)寫入硬盤的操作時需要將數(shù)據(jù)塊寫入硬盤相應(yīng)的扇區(qū)中,但是目前在數(shù)據(jù)塊寫入扇區(qū)時為隨機寫入,尤其在對多個數(shù)據(jù)塊操作時該寫入方式使得多個數(shù)據(jù)塊分散寫入不同的扇區(qū)中,復(fù)雜的寫入的方式會增加寫入時間,并造成數(shù)據(jù)輸入和輸出的延遲,影響寫入性能。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例的目的在于提供一種提高智能設(shè)備的硬盤寫入性能的方法及裝置,該方法能夠增加智能設(shè)備的硬盤進行順序?qū)懙膭幼?,提高硬盤的寫入效率。
為了解決上述技術(shù)問題,本發(fā)明的實施例采用了如下技術(shù)方案:一種提高智能設(shè)備的硬盤寫入性能的方法,包括:
利用非易失性內(nèi)存技術(shù)和所述智能設(shè)備的物理硬盤生成虛擬硬盤,所述虛擬硬盤中存儲需要寫入所述物理硬盤的數(shù)據(jù)塊;
將所述數(shù)據(jù)塊寫入到所述物理硬盤對應(yīng)的緩存上;
根據(jù)所述物理硬盤存儲的數(shù)據(jù)的位置信息,獲取所述物理硬盤中的連續(xù)的空閑扇區(qū)的相關(guān)信息,并根據(jù)該相關(guān)信息和所述數(shù)據(jù)塊的長度將暫存在所述緩存中的數(shù)據(jù)塊順序?qū)懭氲竭B續(xù)的所述空閑扇區(qū)中。
作為優(yōu)選,將所述數(shù)據(jù)塊寫入到所述物理硬盤對應(yīng)的緩存上之前判斷所述緩存是否寫滿;
當所述緩存被寫滿時,判斷其中的所述數(shù)據(jù)塊是否寫入到所述物理硬盤中;
如果沒有寫入所述物理硬盤中,則將所述緩存中的數(shù)據(jù)塊順序?qū)懭氲剿鑫锢碛脖P的連續(xù)的空閑扇區(qū)上并釋放該數(shù)據(jù)塊占用的所述緩存的相應(yīng)空間。
作為優(yōu)選,如果所述緩存中的數(shù)據(jù)塊已經(jīng)寫入到所述物理硬盤中,判斷所述緩存中數(shù)據(jù)塊是否發(fā)生更改,如果未發(fā)生更改則釋放該數(shù)據(jù)塊在所述緩存的相應(yīng)空間,如果已經(jīng)發(fā)生更改時,將所述緩存中的數(shù)據(jù)塊順序?qū)懭氲剿鑫锢碛脖P中的連續(xù)的所述空閑扇區(qū)上,并釋放更改前的所述數(shù)據(jù)塊占用的所述物理硬盤的扇區(qū)。
作為優(yōu)選,該方法還包括存儲在緩存中的數(shù)據(jù)塊寫入所述物理硬盤的過程中對所述物理硬盤中的空閑扇區(qū)進行碎片整理。
作為優(yōu)選,碎片整理的步驟包括:
當所述緩存中的數(shù)據(jù)塊順序?qū)懭氲竭B續(xù)的所述物理硬盤的扇區(qū)后,對已經(jīng)寫入數(shù)據(jù)的扇區(qū)的臨近扇區(qū)進行判斷,如果所述臨近扇區(qū)為空閑扇區(qū),則移動所述數(shù)據(jù)塊在扇區(qū)中的位置,以合并所述臨近扇區(qū)。
本發(fā)明實施例還提供了一種提高智能設(shè)備的硬盤寫入性能的裝置,包括相互連接的處理器和物理硬盤,所述物理硬盤具有緩存,所述處理器執(zhí)行:
利用非易失性內(nèi)存技術(shù)和所述物理硬盤生成虛擬硬盤,所述虛擬硬盤中存儲需要寫入所述物理硬盤的數(shù)據(jù)塊;
將所述數(shù)據(jù)塊寫入到所述物理硬盤對應(yīng)的緩存上;
根據(jù)所述物理硬盤存儲的數(shù)據(jù)的位置信息,獲取所述物理硬盤中的連續(xù)的空閑扇區(qū)的相關(guān)信息,并根據(jù)該相關(guān)信息和所述數(shù)據(jù)塊的長度將暫存在所述緩存中的數(shù)據(jù)塊順序?qū)懭氲竭B續(xù)的所述空閑扇區(qū)中。
作為優(yōu)選,所述處理器進一步執(zhí)行:
將所述數(shù)據(jù)塊寫入到所述物理硬盤對應(yīng)的緩存上之前判斷所述緩存是否寫滿;
當所述緩存被寫滿時,判斷其中的所述數(shù)據(jù)塊是否寫入到所述物理硬盤中;
如果沒有寫入所述物理硬盤中,則將所述緩存中的數(shù)據(jù)塊順序?qū)懭氲剿鑫锢碛脖P的連續(xù)的空閑扇區(qū)上并釋放該數(shù)據(jù)塊占用的所述緩存的相應(yīng)空間。
作為優(yōu)選,如果所述緩存中的數(shù)據(jù)塊已經(jīng)寫入到所述物理硬盤中,所述處理器判斷所述緩存中數(shù)據(jù)塊是否發(fā)生更改,如果未發(fā)生更改則釋放該數(shù)據(jù)塊在所述緩存的相應(yīng)空間,如果已經(jīng)發(fā)生更改時,將所述緩存中的數(shù)據(jù)塊順序?qū)懭氲剿鑫锢碛脖P中的連續(xù)的所述空閑扇區(qū)上,并釋放更改前的所述數(shù)據(jù)塊占用的所述物理硬盤的扇區(qū)。
作為優(yōu)選,所述處理器在存儲在緩存中的數(shù)據(jù)塊寫入所述物理硬盤的過程中能夠?qū)λ鑫锢碛脖P中的空閑扇區(qū)進行碎片整理。
作為優(yōu)選,所述處理器在進行碎片整理的過程中執(zhí)行:
當所述緩存中的數(shù)據(jù)塊順序?qū)懭氲竭B續(xù)的所述物理硬盤的扇區(qū)后,對已經(jīng)寫入數(shù)據(jù)的扇區(qū)的臨近扇區(qū)進行判斷,如果所述臨近扇區(qū)為空閑扇區(qū),則移動所述數(shù)據(jù)塊在扇區(qū)中的位置,以合并所述臨近扇區(qū)。
本發(fā)明實施例的有益效果在于:本方法及相應(yīng)的裝置能夠有效提高數(shù)據(jù)連續(xù)寫入硬盤(物理硬盤)的概率,而降低了隨機將數(shù)據(jù)寫入硬盤的概率,節(jié)省了數(shù)據(jù)寫入硬盤的時間,提高了硬盤寫入性能。
附圖說明
圖1為本發(fā)明實施例的提高智能設(shè)備的硬盤寫入性能的方法的流程圖;
圖2為本發(fā)明實施例的數(shù)據(jù)寫入物理硬盤的第一種情況示意圖;
圖3為本發(fā)明實施例的數(shù)據(jù)寫入物理硬盤的第二種情況示意圖;
圖4為本發(fā)明實施例的數(shù)據(jù)寫入物理硬盤的第三種情況示意圖;
圖5為本發(fā)明實施例的數(shù)據(jù)寫入物理硬盤的第四種情況示意圖;
圖6為本發(fā)明實施例的數(shù)據(jù)寫入物理硬盤的第五種情況示意圖;
圖7為本發(fā)明實施例的提高智能設(shè)備的硬盤寫入性能的方法的具體流程圖;
圖8為本發(fā)明實施例的提高智能設(shè)備的硬盤寫入性能的裝置的結(jié)構(gòu)框圖。
附圖標記說明
1-處理器2-虛擬硬盤3-緩存
4-物理硬盤
具體實施方式
此處參考附圖描述本發(fā)明的各種方案以及特征。
應(yīng)理解的是,可以對此處公開的實施例做出各種修改。因此,上述說明書不應(yīng)該視為限制,而僅是作為實施例的范例。本領(lǐng)域的技術(shù)人員將想到在本發(fā)明的范圍和精神內(nèi)的其他修改。
包含在說明書中并構(gòu)成說明書的一部分的附圖示出了本發(fā)明的實施例,并且與上面給出的對本發(fā)明的大致描述以及下面給出的對實施例的詳細描述一起用于解釋本發(fā)明的原理。
通過下面參照附圖對給定為非限制性實例的實施例的優(yōu)選形式的描述,本發(fā)明的這些和其它特性將會變得顯而易見。
還應(yīng)當理解,盡管已經(jīng)參照一些具體實例對本發(fā)明進行了描述,但本領(lǐng)域技術(shù)人員能夠確定地實現(xiàn)本發(fā)明的很多其它等效形式,它們具有如權(quán)利要求所述的特征并因此都位于借此所限定的保護范圍內(nèi)。
當結(jié)合附圖時,鑒于以下詳細說明,本發(fā)明的上述和其他方面、特征和優(yōu)勢將變得更為顯而易見。
此后參照附圖描述本發(fā)明的具體實施例;然而,應(yīng)當理解,所公開的實施例僅僅是本發(fā)明的實例,其可采用多種方式實施。熟知和/或重復(fù)的功能和結(jié)構(gòu)并未詳細描述以避免不必要或多余的細節(jié)使得本發(fā)明模糊不清。因此,本文所公開的具體的結(jié)構(gòu)性和功能性細節(jié)并非意在限定,而是僅僅作為權(quán)利要求的基礎(chǔ)和代表性基礎(chǔ)用于教導(dǎo)本領(lǐng)域技術(shù)人員以實質(zhì)上任意合適的詳細結(jié)構(gòu)多樣地使用本發(fā)明。
本說明書可使用詞組“在一種實施例中”、“在另一個實施例中”、“在又一實施例中”或“在其他實施例中”,其均可指代根據(jù)本發(fā)明的相同或不同實施例中的一個或多個。
本發(fā)明實施例的一種提高智能設(shè)備的硬盤寫入性能的方法,該方法能夠?qū)τ嬎銠C等智能設(shè)備的硬盤(如smr硬盤)進行操作并提高硬盤的寫入性能,避免出現(xiàn)如圖1所示的非連續(xù)寫(如隨機寫)的情況,如該非連續(xù)寫的方式將緩存3中扇區(qū)編號為c1中的數(shù)據(jù)寫入到物理硬盤4編號為d1的扇區(qū)中,c2中的數(shù)據(jù)寫入到d4,c3中的數(shù)據(jù)寫入到d3,c4中的數(shù)據(jù)寫入到d8,c5中的數(shù)據(jù)寫入到d6,c6中的數(shù)據(jù)寫入到d7,上述寫入方法降低了硬盤的寫入性能。而結(jié)合圖7本發(fā)明實施例的提高智能設(shè)備的硬盤寫入性能的方法包括:
利用非易失性內(nèi)存技術(shù)(nvdimm)和智能設(shè)備的物理硬盤4生成虛擬硬盤2,虛擬硬盤2中存儲需要寫入物理硬盤4的數(shù)據(jù)塊。非易失性內(nèi)存技術(shù)(nvdimm)是在一種集成了動態(tài)隨機存取存儲器(dram)和非易失性內(nèi)存芯片的技術(shù),能夠在完全斷電的時候依然保存完整內(nèi)存數(shù)據(jù),在本實施例中可以使用該技術(shù)并結(jié)合物理硬盤4生成虛擬硬盤2,虛擬硬盤2中設(shè)有順序排列的至少一個扇區(qū),扇區(qū)中存儲有需要寫入物理硬盤4的數(shù)據(jù)塊;
將數(shù)據(jù)塊寫入到物理硬盤4對應(yīng)的緩存3上,緩存3也具有連續(xù)的扇區(qū),能夠存儲數(shù)據(jù)塊,而該寫入方式可以為多種形式,例如可以將數(shù)據(jù)塊按照排列的順序的逐一的順序?qū)懭刖彺?中,也可以將數(shù)據(jù)塊隨機的寫入緩存3中,還可以將按照預(yù)定規(guī)則寫入緩存3中;
根據(jù)物理硬盤4存儲的數(shù)據(jù)的位置信息,獲取物理硬盤4中的連續(xù)的空閑扇區(qū)的相關(guān)信息,并根據(jù)該相關(guān)信息和數(shù)據(jù)塊的長度將暫存在緩存3中的數(shù)據(jù)塊順序?qū)懭氲竭B續(xù)的空閑扇區(qū)中。通常情況下將緩存3中的數(shù)據(jù)塊存儲到物理硬盤4中時,數(shù)據(jù)塊具有一定的長度(例如每個數(shù)據(jù)塊均具有一定長度,存儲時對多個連續(xù)的數(shù)據(jù)塊進行操作),一定長度的多個數(shù)據(jù)塊必然需要足夠多的空閑扇區(qū)才能進行存儲,作為優(yōu)選需要足夠多的連續(xù)的空閑扇區(qū)進行存儲,進而保證數(shù)據(jù)塊能夠按照排列順序?qū)?yīng)的連續(xù)寫(順序?qū)?入到物理硬盤4中,而在獲取物理硬盤4中的連續(xù)的空閑扇區(qū)的相關(guān)信息時可以檢測連續(xù)的空閑扇區(qū)的長度,位置和編號等相關(guān)信息,從而能夠準確尋找到連續(xù)的空閑扇區(qū)的位置,并將具有一定長度的數(shù)據(jù)塊按照排列順序?qū)?yīng)的連續(xù)寫(順序?qū)?入到這些空閑扇區(qū)中,在一個實施例中如圖3所示,物理硬盤4的扇區(qū)均為空閑扇區(qū),則可以將緩存3中的數(shù)據(jù)按照排列順序?qū)?yīng)的連續(xù)寫(順序?qū)?入到物理硬盤4中,緩存3中編號為c1至c6的扇區(qū)中的數(shù)據(jù)塊連續(xù)寫入到物理硬盤4的連續(xù)扇區(qū)中,并且c1中的數(shù)據(jù)塊寫入d1中,c2中的數(shù)據(jù)塊寫入d2中,c3中的數(shù)據(jù)塊寫入d3中,c4中的數(shù)據(jù)塊寫入d4中,c5中的數(shù)據(jù)塊寫入d5中,c6中的數(shù)據(jù)塊寫入d6中,其中d1至d6為連續(xù)的扇區(qū)。該寫入方法能夠有效提高硬盤的寫入效率,提高硬盤的整體性能。
在本發(fā)明的一個實施例中,將數(shù)據(jù)塊寫入到物理硬盤4對應(yīng)的緩存3上之前判斷緩存3是否寫滿;當緩存3被寫滿時,判斷其中的數(shù)據(jù)塊是否寫入到物理硬盤4中;如果沒有寫入物理硬盤4中,則將緩存3中的數(shù)據(jù)塊順序?qū)懭氲轿锢碛脖P4的連續(xù)的空閑扇區(qū)上并釋放該數(shù)據(jù)塊占用的緩存3的相應(yīng)空間。如果緩存3已經(jīng)被寫滿數(shù)據(jù)那么再向緩存3寫入數(shù)據(jù)時會將原有的數(shù)據(jù)覆蓋掉,則會造成原有的數(shù)據(jù)丟失,因此在將數(shù)據(jù)塊寫入到物理硬盤4對應(yīng)的緩存3上之前判斷緩存3是否寫滿能夠避免誤操作造成數(shù)據(jù)丟失。如果判斷緩存3已經(jīng)被寫滿數(shù)據(jù),還要進一步判斷緩存3中的數(shù)據(jù)塊是否寫入到物理硬盤4中,例如圖4中的緩存3已經(jīng)被寫滿,進而判斷緩存3中編號為c2,c5,c6的扇區(qū)中的數(shù)據(jù)是否被寫入了物理硬盤4,如果沒有寫入物理硬盤4中,則首先在物力硬盤中尋找連續(xù)的空閑扇區(qū),并保證該連續(xù)的空閑扇區(qū)能夠滿足c2,c5,c6的扇區(qū)中的數(shù)據(jù)寫入,如經(jīng)過尋找后在物理硬盤4中獲得編號為d7,d8,d9的連續(xù)的空閑扇區(qū),將c2,c5,c6中的數(shù)據(jù)塊分別寫入到d7,d8,d9中,并釋放緩存3中編號為c2,c5,c6的扇區(qū)中的空間,這樣保證緩存3中的數(shù)據(jù)不會被丟失而且緩存3中還有空閑的扇區(qū)可以使用。
進一步的,如果緩存3中的數(shù)據(jù)塊已經(jīng)寫入到物理硬盤4中,判斷緩存3中數(shù)據(jù)塊是否發(fā)生更改(例如緩存3中被寫入新的數(shù)據(jù)塊則說明數(shù)據(jù)塊已經(jīng)被更改),如果未發(fā)生更改(例如緩存3中的數(shù)據(jù)塊沒有被更新,而此時這些數(shù)據(jù)已經(jīng)被寫入到了物理硬盤4中)則釋放該數(shù)據(jù)塊在緩存3的相應(yīng)空間,以使緩存3中的扇區(qū)能夠被寫入新的數(shù)據(jù)塊。如果判斷緩存3中數(shù)據(jù)塊已經(jīng)發(fā)生更改時(例如緩存3中被寫入新的數(shù)據(jù)塊),將緩存3中的數(shù)據(jù)塊順序?qū)懭氲轿锢碛脖P4中的連續(xù)的空閑扇區(qū)上,并釋放更改前的數(shù)據(jù)塊占用的物理硬盤4的扇區(qū)。結(jié)合圖5進行進一步說明,如果判斷緩存3中的編號為c1,c3,c4的扇區(qū)中的數(shù)據(jù)塊沒有被更新,而此時這些數(shù)據(jù)已經(jīng)被寫入到了物理硬盤4中,則釋放c1,c3,c4的空間;如果判斷緩存3中的編號為c1,c3,c4的扇區(qū)中的數(shù)據(jù)塊為新寫入的數(shù)據(jù),將緩存3中的數(shù)據(jù)塊順序?qū)懭氲轿锢碛脖P4中的編號為d7,d8,d9的扇區(qū)中,并且釋放c1,c3,c4數(shù)據(jù)塊原本占用的物理硬盤4中編號為d1,d3,d6的扇區(qū)中的數(shù)據(jù),以清空相應(yīng)扇區(qū),而不會給物理硬盤4造成數(shù)據(jù)冗余。
下面結(jié)合圖4對上述方法的一個實施例進行進一步說明,在虛擬硬盤2中具有連續(xù)的多個扇區(qū),編號分別為m1至mn,緩存3中具有連續(xù)的多個扇區(qū),編號分別為c1至c6,物理硬盤4中具有多個連續(xù)的扇區(qū)d1至dn,圖中有陰影的扇區(qū)代表有數(shù)據(jù)塊已經(jīng)占用了相應(yīng)的扇區(qū),空白的扇區(qū)代表其為空閑扇區(qū),在虛擬硬盤2中m6,m8和m9中的數(shù)據(jù)請求寫入物理硬盤4,此時m1,m3和m4已經(jīng)分別將數(shù)據(jù)存儲到了c1,c3和c4,并且緩存3中c2,c5和c6已經(jīng)被占用但其中的數(shù)據(jù)塊沒有被寫入到物理硬盤4中,搜索滿足具有足夠長度的空閑扇區(qū),找到d7,d8和d9后將c2,c5和c6中原有的數(shù)據(jù)塊寫入到d7,d8和d9中,然后在將m6,m8和m9中的數(shù)據(jù)寫入c2,c5和c6中,返回m6,m8和m9中的數(shù)據(jù)寫入成功的信息。
下面結(jié)合圖5對上述方法的另一個實施例進行進一步說明,在虛擬硬盤2中具有連續(xù)的多個扇區(qū),編號分別為m1至mn,緩存3中具有連續(xù)的多個扇區(qū),編號分別為c1至c6,物理硬盤4中具有多個連續(xù)的扇區(qū)d1至dn,圖中有陰影的扇區(qū)代表有數(shù)據(jù)塊已經(jīng)占用了相應(yīng)的扇區(qū),在虛擬硬盤2中m6,m8和m9中有新數(shù)據(jù)請求寫入物理硬盤4,此時m1,m3和m4已經(jīng)分別將數(shù)據(jù)存儲到了c1,c3和c4,并且緩存3已經(jīng)被存滿,c1,c3和c4中的數(shù)據(jù)可以轉(zhuǎn)存到物理硬盤4中,在物理硬盤4中搜索連續(xù)的扇區(qū)d7,d8,d9,將c1,c3和c4中的數(shù)據(jù)分別按照排列順序?qū)?yīng)的連續(xù)寫入到扇區(qū)d7,d8,d9(如c1中的數(shù)據(jù)寫入d7,c2中的數(shù)據(jù)寫入d8,c4中的數(shù)據(jù)寫入d9),并且釋放c1,c3,c4數(shù)據(jù)塊原本占用的物理硬盤4中編號為d1,d3,d6的扇區(qū)中的數(shù)據(jù),然后將m6,m8和m9中的數(shù)據(jù)對應(yīng)寫入到c1,c3和c4中,返回m6,m8和m9中的數(shù)據(jù)寫入成功的信息。
在本發(fā)明的一個實施例中,該提高智能設(shè)備的硬盤寫入性能的方法還包括存儲在緩存3中的數(shù)據(jù)塊寫入物理硬盤4的過程中對物理硬盤4中的空閑扇區(qū)進行碎片整理。碎片整理可以將分散在不同位置的空閑扇區(qū)合并起來,以使這些空閑扇區(qū)具有足夠的空間或長度能夠存儲新的數(shù)據(jù),并且使緩存3中的數(shù)據(jù)能夠按照排列順序?qū)?yīng)的連續(xù)寫(順序?qū)?入到連續(xù)的多個空閑扇區(qū)中。
進一步來說,碎片整理的步驟包括:當緩存3中的數(shù)據(jù)塊順序?qū)懭氲竭B續(xù)的物理硬盤4的扇區(qū)后,對已經(jīng)寫入數(shù)據(jù)的扇區(qū)的臨近扇區(qū)進行判斷,如果臨近扇區(qū)為空閑扇區(qū),則移動數(shù)據(jù)塊在扇區(qū)中的位置,以合并臨近扇區(qū)。例如物理硬盤4中的寫入數(shù)據(jù)的扇區(qū)臨近的左右兩側(cè)均有空閑扇區(qū),將數(shù)據(jù)塊向左或向右進行移動使得左右兩側(cè)均有空閑扇區(qū)合并為連續(xù)的空閑扇區(qū),以達到整理碎片的目的。下面結(jié)合圖6進一步進行說明,在虛擬硬盤2中m6,m8和m9中有新數(shù)據(jù)請求寫入物理硬盤4,此時m1,m3和m4已經(jīng)分別將數(shù)據(jù)存儲到了c1,c3和c4,并且緩存3已經(jīng)被存滿,c1,c3和c4中的數(shù)據(jù)可以轉(zhuǎn)存到物理硬盤4中的d2,d3和d4(如c1中的數(shù)據(jù)寫入d2,c3中的數(shù)據(jù)寫入d3,c4中的數(shù)據(jù)寫入d4),雖然d2,d3和d4連續(xù)的扇區(qū),但是在其兩側(cè)出現(xiàn)了空閑扇區(qū)d1和d5,d1和d5由于長度小不能單獨的存儲數(shù)據(jù),調(diào)整映射關(guān)系,將原本為m4最終存入到d4中調(diào)整為將m4最終存入到d1中,按照新的映射關(guān)系將c1,c3和c4中的原數(shù)據(jù)連續(xù)寫(順序?qū)?入到d1,d2和d3中,然后將m6,m8和m9中的數(shù)據(jù)對應(yīng)寫入到c1,c3和c4中,返回m6,m8和m9中的數(shù)據(jù)寫入成功的信息。這樣以來能夠?qū)υ璬1和d5的碎片進行整理形成連續(xù)的空閑扇區(qū)d4和d5,以備存儲新的數(shù)據(jù)。
本發(fā)明實施例還一種提高智能設(shè)備的硬盤寫入性能的裝置,如圖8所示,包括相互連接的處理器1和物理硬盤4,物理硬盤4具有緩存3,結(jié)合圖7處理器1執(zhí)行:
利用非易失性內(nèi)存技術(shù)(nvdimm)和智能設(shè)備的物理硬盤4生成虛擬硬盤2,虛擬硬盤2中存儲需要寫入物理硬盤4的數(shù)據(jù)塊。非易失性內(nèi)存技術(shù)(nvdimm)是在一種集成了動態(tài)隨機存取存儲器(dram)和非易失性內(nèi)存芯片的技術(shù),能夠在完全斷電的時候依然保存完整內(nèi)存數(shù)據(jù),在本實施例中可以使用該技術(shù)并結(jié)合物理硬盤4生成虛擬硬盤2,虛擬硬盤2中設(shè)有順序排列的至少一個扇區(qū),扇區(qū)中存儲有需要寫入物理硬盤4的數(shù)據(jù)塊;
處理器1能將數(shù)據(jù)塊寫入到物理硬盤4對應(yīng)的緩存3上,緩存3也具有連續(xù)的扇區(qū),能夠存儲數(shù)據(jù)塊,而該寫入方式可以為多種形式,例如可以將數(shù)據(jù)塊按照排列的順序的逐一的順序?qū)懭刖彺?中,也可以將數(shù)據(jù)塊隨機的寫入緩存3中,還可以將按照預(yù)定規(guī)則寫入緩存3中;
處理器1能根據(jù)物理硬盤4存儲的數(shù)據(jù)的位置信息,獲取物理硬盤4中的連續(xù)的空閑扇區(qū)的相關(guān)信息,并根據(jù)該相關(guān)信息和數(shù)據(jù)塊的長度將暫存在緩存3中的數(shù)據(jù)塊順序?qū)懭氲竭B續(xù)的空閑扇區(qū)中。通常情況下將緩存3中的數(shù)據(jù)塊存儲到物理硬盤4中時,數(shù)據(jù)塊具有一定的長度(例如每個數(shù)據(jù)塊均具有一定長度,存儲時對多個連續(xù)的數(shù)據(jù)塊進行操作),一定長度的多個數(shù)據(jù)塊必然需要足夠多的空閑扇區(qū)才能進行存儲,作為優(yōu)選需要足夠多的連續(xù)的空閑扇區(qū)進行存儲,進而保證數(shù)據(jù)塊能夠按照排列順序?qū)?yīng)的連續(xù)寫(順序?qū)?入到物理硬盤4中,而在獲取物理硬盤4中的連續(xù)的空閑扇區(qū)的相關(guān)信息時可以檢測連續(xù)的空閑扇區(qū)的長度,位置和編號等相關(guān)信息,從而能夠準確尋找到連續(xù)的空閑扇區(qū)的位置,并將具有一定長度的數(shù)據(jù)塊按照排列順序?qū)?yīng)的連續(xù)寫(順序?qū)?入到這些空閑扇區(qū)中,例如圖3所示,緩存3中編號為c1至c6的扇區(qū)中的數(shù)據(jù)塊連續(xù)寫入到物理硬盤4的連續(xù)扇區(qū)中,并且c1中的數(shù)據(jù)塊寫入d1中,c2中的數(shù)據(jù)塊寫入d2中,c3中的數(shù)據(jù)塊寫入d3中,c4中的數(shù)據(jù)塊寫入d4中,c5中的數(shù)據(jù)塊寫入d5中,c6中的數(shù)據(jù)塊寫入d6中,其中d1至d6為連續(xù)的扇區(qū)。該寫入方法能夠有效提高硬盤的寫入效率,提高硬盤的整體性能。
在本發(fā)明的一個實施例中,處理器1進一步執(zhí)行:將數(shù)據(jù)塊寫入到物理硬盤4對應(yīng)的緩存3上之前判斷緩存3是否寫滿;當緩存3被寫滿時,判斷其中的數(shù)據(jù)塊是否寫入到物理硬盤4中;如果沒有寫入物理硬盤4中,則將緩存3中的數(shù)據(jù)塊順序?qū)懭氲轿锢碛脖P4的連續(xù)的空閑扇區(qū)上并釋放該數(shù)據(jù)塊占用的緩存3的相應(yīng)空間。如果緩存3已經(jīng)被寫滿數(shù)據(jù)那么再向緩存3寫入數(shù)據(jù)時會將原有的數(shù)據(jù)覆蓋掉,則會造成原有的數(shù)據(jù)丟失,因此在將數(shù)據(jù)塊寫入到物理硬盤4對應(yīng)的緩存3上之前判斷緩存3是否寫滿能夠避免誤操作造成數(shù)據(jù)丟失。如果判斷緩存3已經(jīng)被寫滿數(shù)據(jù),還要進一步判斷緩存3中的數(shù)據(jù)塊是否寫入到物理硬盤4中,例如圖4中的緩存3已經(jīng)被寫滿,進而判斷緩存3中編號為c2,c5,c6的扇區(qū)中的數(shù)據(jù)是否被寫入了物理硬盤4,如果沒有寫入物理硬盤4中,則首先在物力硬盤中尋找連續(xù)的空閑扇區(qū),并保證該連續(xù)的空閑扇區(qū)能夠滿足c2,c5,c6的扇區(qū)中的數(shù)據(jù)寫入,如經(jīng)過尋找后在物理硬盤4中獲得編號為d7,d8,d9的連續(xù)的空閑扇區(qū),將c2,c5,c6中的數(shù)據(jù)塊分別寫入到d7,d8,d9中,并釋放緩存3中編號為c2,c5,c6的扇區(qū)中的空間,這樣保證緩存3中的數(shù)據(jù)不會被丟失而且緩存3中還有空閑的扇區(qū)可以使用。
進一步的,如果緩存3中的數(shù)據(jù)塊已經(jīng)寫入到物理硬盤4中,處理器1判斷緩存3中數(shù)據(jù)塊是否發(fā)生更改(例如緩存3中被寫入新的數(shù)據(jù)塊則說明數(shù)據(jù)塊已經(jīng)被更改),如果未發(fā)生更改(例如緩存3中的數(shù)據(jù)塊沒有被更新,而此時這些數(shù)據(jù)已經(jīng)被寫入到了物理硬盤4中)則釋放該數(shù)據(jù)塊在緩存3的相應(yīng)空間,以使緩存3中的扇區(qū)能夠被寫入新的數(shù)據(jù)塊。如果處理器1判斷緩存3中數(shù)據(jù)塊已經(jīng)發(fā)生更改時(例如緩存3中被寫入新的數(shù)據(jù)塊),將緩存3中的數(shù)據(jù)塊順序?qū)懭氲轿锢碛脖P4中的連續(xù)的空閑扇區(qū)上,并釋放更改前的數(shù)據(jù)塊占用的物理硬盤4的扇區(qū)。結(jié)合圖5進行進一步說明,如果處理器1判斷緩存3中的編號為c1,c3,c4的扇區(qū)中的數(shù)據(jù)塊沒有被更新,而此時這些數(shù)據(jù)已經(jīng)被寫入到了物理硬盤4中,則釋放c1,c3,c4的空間;如果處理器1判斷緩存3中的編號為c1,c3,c4的扇區(qū)中的數(shù)據(jù)塊為新寫入的數(shù)據(jù),將緩存3中的數(shù)據(jù)塊順序?qū)懭氲轿锢碛脖P4中的編號為d7,d8,d9的扇區(qū)中,并且釋放c1,c3,c4數(shù)據(jù)塊原本占用的物理硬盤4中編號為d1,d3,d6的扇區(qū)中的數(shù)據(jù),以清空相應(yīng)扇區(qū),而不會給物理硬盤4造成數(shù)據(jù)冗余。
下面結(jié)合圖4對上述裝置的一個實施例進行進一步說明,在虛擬硬盤2中具有連續(xù)的多個扇區(qū),編號分別為m1至mn,緩存3中具有連續(xù)的多個扇區(qū),編號分別為c1至c6,物理硬盤4中具有多個連續(xù)的扇區(qū)d1至dn,圖中有陰影的扇區(qū)代表有數(shù)據(jù)塊已經(jīng)占用了相應(yīng)的扇區(qū),空白的扇區(qū)代表其為空閑扇區(qū),處理器1要求在虛擬硬盤2中m6,m8和m9中的數(shù)據(jù)寫入物理硬盤4,此時m1,m3和m4已經(jīng)分別將數(shù)據(jù)存儲到了c1,c3和c4,并且緩存3中c2,c5和c6已經(jīng)被占用但其中的數(shù)據(jù)塊沒有被寫入到物理硬盤4中,處理器1在物理硬盤4中搜索滿足具有足夠長度的空閑扇區(qū),找到d7,d8和d9后將c2,c5和c6中原有的數(shù)據(jù)塊寫入到d7,d8和d9中,然后在將m6,m8和m9中的數(shù)據(jù)寫入c2,c5和c6中,返回m6,m8和m9中的數(shù)據(jù)寫入成功的信息。
下面結(jié)合圖5對上述裝置的另一個實施例進行進一步說明,在虛擬硬盤2中具有連續(xù)的多個扇區(qū),編號分別為m1至mn,緩存3中具有連續(xù)的多個扇區(qū),編號分別為c1至c6,物理硬盤4中具有多個連續(xù)的扇區(qū)d1至dn,圖中有陰影的扇區(qū)代表有數(shù)據(jù)塊已經(jīng)占用了相應(yīng)的扇區(qū),處理器1要求在虛擬硬盤2中m6,m8和m9中的數(shù)據(jù)寫入物理硬盤4,此時m1,m3和m4已經(jīng)分別將數(shù)據(jù)存儲到了c1,c3和c4,并且緩存3已經(jīng)被存滿,c1,c3和c4中的數(shù)據(jù)可以轉(zhuǎn)存到物理硬盤4中,處理器1在物理硬盤4中搜索連續(xù)的扇區(qū)d7,d8,d9,將c1,c3和c4中的數(shù)據(jù)分別按照排列順序?qū)?yīng)的連續(xù)寫入到扇區(qū)d7,d8,d9(如c1中的數(shù)據(jù)寫入d7,c2中的數(shù)據(jù)寫入d8,c4中的數(shù)據(jù)寫入d9),并且釋放c1,c3,c4數(shù)據(jù)塊原本占用的物理硬盤4中編號為d1,d3,d6的扇區(qū)中的數(shù)據(jù),然后將m6,m8和m9中的數(shù)據(jù)對應(yīng)寫入到c1,c3和c4中,返回m6,m8和m9中的數(shù)據(jù)寫入成功的信息。
在本發(fā)明的一個實施例中,在提高智能設(shè)備的硬盤寫入性能的裝置中,處理器1在存儲在緩存3中的數(shù)據(jù)塊寫入物理硬盤4的過程中還要對物理硬盤4中的空閑扇區(qū)進行碎片整理。碎片整理可以將分散在不同位置的空閑扇區(qū)合并起來,以使這些空閑扇區(qū)具有足夠的空間或長度能夠存儲新的數(shù)據(jù),并且使緩存3中的數(shù)據(jù)能夠按照排列順序?qū)?yīng)的連續(xù)寫(順序?qū)?入到連續(xù)的多個空閑扇區(qū)中。
進一步來說,處理器1在碎片整理的過程中執(zhí)行:當緩存3中的數(shù)據(jù)塊順序?qū)懭氲竭B續(xù)的物理硬盤4的扇區(qū)后,對已經(jīng)寫入數(shù)據(jù)的扇區(qū)的臨近扇區(qū)進行判斷,如果臨近扇區(qū)為空閑扇區(qū),則移動數(shù)據(jù)塊在扇區(qū)中的位置,以合并臨近扇區(qū)。例如物理硬盤4中的寫入數(shù)據(jù)的扇區(qū)臨近的左右兩側(cè)均有空閑扇區(qū),處理器1將數(shù)據(jù)塊向左或向右進行移動使得左右兩側(cè)均有空閑扇區(qū)合并為連續(xù)的空閑扇區(qū),以達到整理碎片的目的。下面結(jié)合圖6進一步進行說明,處理器1要求在虛擬硬盤2中m6,m8和m9中的數(shù)據(jù)寫入物理硬盤4,此時m1,m3和m4已經(jīng)分別將數(shù)據(jù)存儲到了c1,c3和c4,并且緩存3已經(jīng)被存滿,處理器1可以將c1,c3和c4中的數(shù)據(jù)轉(zhuǎn)存到物理硬盤4中的d2,d3和d4(如c1中的數(shù)據(jù)寫入d2,c3中的數(shù)據(jù)寫入d3,c4中的數(shù)據(jù)寫入d4),雖然d2,d3和d4連續(xù)的扇區(qū),但是在其兩側(cè)出現(xiàn)了空閑扇區(qū)d1和d5,d1和d5由于長度小不能單獨的存儲數(shù)據(jù),處理器1調(diào)整映射關(guān)系,將原本為m4最終存入到d4中調(diào)整為將m4最終存入到d1中,按照新的映射關(guān)系將c1,c3和c4中的原數(shù)據(jù)連續(xù)寫(順序?qū)?入到d1,d2和d3中,然后將m6,m8和m9中的數(shù)據(jù)對應(yīng)寫入到c1,c3和c4中,返回m6,m8和m9中的數(shù)據(jù)寫入成功的信息。這樣以來能夠?qū)υ璬1和d5的碎片進行整理形成連續(xù)的空閑扇區(qū)d4和d5,以備存儲新的數(shù)據(jù)。
以上實施例僅為本發(fā)明的示例性實施例,不用于限制本發(fā)明,本發(fā)明的保護范圍由權(quán)利要求書限定。本領(lǐng)域技術(shù)人員可以在本發(fā)明的實質(zhì)和保護范圍內(nèi),對本發(fā)明做出各種修改或等同替換,這種修改或等同替換也應(yīng)視為落在本發(fā)明的保護范圍內(nèi)。