本公開涉及電子領(lǐng)域,更具體而言,涉及具有多種不同類型的存儲(chǔ)設(shè)備的操作方法和裝置。
背景技術(shù):
隨著計(jì)算機(jī)存儲(chǔ)設(shè)備技術(shù)的發(fā)展,越來越多的計(jì)算設(shè)備使用了更為快速的存儲(chǔ)設(shè)備,例如固態(tài)硬盤(ssd)。固態(tài)硬盤有著高速讀寫的性能優(yōu)勢(shì),但是也有著相比于傳統(tǒng)機(jī)械硬盤壽命更短的缺陷,并且對(duì)于ssd的頻繁寫入會(huì)降低其使用壽命。
固態(tài)硬盤一方面可以用作傳統(tǒng)的機(jī)械硬盤的替代,提供更為快速的數(shù)據(jù)讀寫性能,另一方面也可以被配置用于高速緩存,提高計(jì)算設(shè)備的性能。例如,在數(shù)據(jù)存儲(chǔ)設(shè)備的領(lǐng)域,ssd可以與機(jī)械硬盤組合以提供大容量和相對(duì)快速的存儲(chǔ)方案。此外,出于數(shù)據(jù)安全的考慮,ssd通常也使用raid(例如raid1、raid2等)技術(shù)來確保數(shù)據(jù)的安全性。
技術(shù)實(shí)現(xiàn)要素:
總體而言,本公開的實(shí)施例總體涉及混合存儲(chǔ)設(shè)備的操作方法和裝置。
根據(jù)第一方面,提供一種用于混合存儲(chǔ)設(shè)備的操作方法,所述混合存儲(chǔ)設(shè)備包括第一類型的存儲(chǔ)設(shè)備和不同于所述第一類型的第二類型的存儲(chǔ)設(shè)備,所述方法包括:將數(shù)據(jù)同步寫入所述第一類型的存儲(chǔ)設(shè)備和所述第二類型的存儲(chǔ)設(shè)備。
在一個(gè)實(shí)施例中,響應(yīng)于成功執(zhí)行所述同步寫入,確定不更新所述第一類型的存儲(chǔ)設(shè)備中的元數(shù)據(jù)。
在一個(gè)實(shí)施例中,所述混合存儲(chǔ)設(shè)備還包括易失性存儲(chǔ)器,所述方法還包括:響應(yīng)于所述同步寫入失敗,從所述易失性存儲(chǔ)器向主機(jī)發(fā)送指示寫入所述數(shù)據(jù)失敗的信息;以及從所述主機(jī)再次向所述第一類型的存儲(chǔ)設(shè)備和所述第二類型的存儲(chǔ)設(shè)備中同步寫入所述數(shù)據(jù)。
在一個(gè)實(shí)施例中,所述方法還包括:響應(yīng)于所述同步寫入失敗,在所述第一類型的存儲(chǔ)設(shè)備中寫入失敗的數(shù)據(jù)被設(shè)置為無效數(shù)據(jù);以及更新所述第一類型的存儲(chǔ)設(shè)備中的元數(shù)據(jù)。
在一個(gè)實(shí)施例中,所述混合存儲(chǔ)設(shè)備還包括易失性存儲(chǔ)器,所述方法還包括:響應(yīng)于所述同步寫入失敗,所述易失性存儲(chǔ)器向主機(jī)發(fā)送指示寫入所述數(shù)據(jù)成功的信息并且向所述第一類型的存儲(chǔ)設(shè)備中重新寫入所述數(shù)據(jù)直至成功。
在一個(gè)實(shí)施例中,該方法還包括:響應(yīng)于所述同步寫入失敗,更新所述第一類型的存儲(chǔ)設(shè)備中的元數(shù)據(jù);使用被寫入第二類型的存儲(chǔ)設(shè)備中的數(shù)據(jù)向所述第一類型的存儲(chǔ)設(shè)備中寫入所述數(shù)據(jù);以及再次更新所述第一類型的存儲(chǔ)設(shè)備中的元數(shù)據(jù)。
根據(jù)另一方面,提供一種用于混合存儲(chǔ)設(shè)備的裝置,所述混合存儲(chǔ)設(shè)備包括第一類型的存儲(chǔ)設(shè)備和不同于所述第一類型的第二類型的存儲(chǔ)設(shè)備,所述裝置包括處理單元,所述處理單元被配置成:將數(shù)據(jù)同步寫入所述第一類型的存儲(chǔ)設(shè)備和所述第二類型的存儲(chǔ)設(shè)備。
可以理解,本部分并不旨在標(biāo)識(shí)本公開的實(shí)施例的關(guān)鍵或重要特征,亦非旨在用于限制本公開的范圍。本公開的其它特征將通過以下的描述變得容易理解。
附圖說明
通過在所附附圖中的本公開的一些實(shí)施例的更為詳細(xì)的描述,本公開的以上和其它的優(yōu)勢(shì)、特征和目標(biāo)將變得更為明顯,其中:
圖1是根據(jù)本公開的一個(gè)實(shí)施例的操作示意圖;
圖2是根據(jù)本公開的一個(gè)實(shí)施例的方法的流程圖;
圖3是根據(jù)本公開的另一個(gè)實(shí)施例的方法的流程圖;
圖4是一種普通ssd高速緩存的配置結(jié)構(gòu)示意圖;
圖5是一種普通混合存儲(chǔ)設(shè)備的操作示意圖;以及
圖6是示出了適于實(shí)現(xiàn)本公開的實(shí)施例的設(shè)備的框圖。
在所有附圖中,相同或相似參考數(shù)字表示相同或相似元素。
具體實(shí)施方式
現(xiàn)在將參考一些示例實(shí)施例描述本公開的原理??梢岳斫?,這些實(shí)施例僅出于說明并且?guī)椭绢I(lǐng)域的技術(shù)人員理解和實(shí)施例本公開的目的而描述,而非建議對(duì)本公開的范圍的任何限制。在此描述的本公開的內(nèi)容可以以下文描述的方式之外的各種方式實(shí)施。
如本文中所述,術(shù)語“包括”及其各種變體可以被理解為開放式術(shù)語,其意味著“包括但不限于”。術(shù)語“基于”可以被理解為“至少部分地基于”。術(shù)語“一個(gè)實(shí)施例”可以被理解為“至少一個(gè)實(shí)施例”。術(shù)語“另一實(shí)施例”可以被理解為“至少一個(gè)其它實(shí)施例”。
總體而言,本公開的實(shí)施例總體涉及用于混合存儲(chǔ)設(shè)備的方法和裝置。為了便于理解本公開的實(shí)施例的技術(shù)方案和優(yōu)勢(shì),現(xiàn)參考附圖4和附圖5描述普通混合存儲(chǔ)設(shè)備的配置和操作流程。在數(shù)據(jù)存儲(chǔ)或服務(wù)器領(lǐng)域,現(xiàn)在越來越多地使用ssd,例如作為第二級(jí)高速緩存(cache)。在這類產(chǎn)品中,通常使用動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)高速緩存作為第一級(jí)高速緩存。當(dāng)外來主機(jī)訪問磁盤陣列時(shí),通常具有兩類高速緩存命中:1)dram高速緩存命中,其中dram高速緩存將首先搜索其緩存數(shù)據(jù),如果dram高速緩存搜索命中,則darm高速緩存將使用緩存的數(shù)據(jù)以響應(yīng)主機(jī)請(qǐng)求;如果dramcache搜索未命中,則輸入輸出(io)訪問將轉(zhuǎn)至第二級(jí)高速緩存,例如ssd高速緩存;2)ssd高速緩存命中,其中ssd高速緩存將搜索其緩存的數(shù)據(jù),如果搜索命中,則ssd高速緩存將使用 其緩存數(shù)據(jù)以響應(yīng)于讀寫請(qǐng)求;如果搜索未命中,則ssd高速緩存將該io請(qǐng)求轉(zhuǎn)至硬盤(hdd)矩陣以從硬盤讀取所需數(shù)據(jù)??梢岳斫?,對(duì)于hdd的讀取將比從dram或ssd直接返回所需數(shù)據(jù)更為慢速。參見圖4,圖4示出了一種普通ssd高速緩存400的配置結(jié)構(gòu)示意圖。ssd高速緩存400例如包括3個(gè)ssd配對(duì)設(shè)備402、404和406。每個(gè)ssd配對(duì)設(shè)備例如由兩個(gè)ssd設(shè)備構(gòu)成,其中每個(gè)ssd設(shè)備包括用于存儲(chǔ)元數(shù)據(jù)的第一區(qū)域4021或4023以及用于存儲(chǔ)所使用的數(shù)據(jù)的第二區(qū)域4022或4024。兩個(gè)ssd設(shè)備例如以raid1技術(shù)進(jìn)行配置,因此含有兩個(gè)ssd設(shè)備的一個(gè)配對(duì)設(shè)備實(shí)際使用的存儲(chǔ)容量?jī)H是一個(gè)ssd的存儲(chǔ)容量。
參見圖5,圖5示出了一種普通混合存儲(chǔ)設(shè)備的操作500的示意圖。當(dāng)來自例如darm的io(例如寫入)如箭頭s1所示訪問ssd高速緩存502時(shí),如果命中,則如箭頭s2所示更新ssd高速緩存中的元數(shù)據(jù)存儲(chǔ)區(qū)域,例如元數(shù)據(jù)存儲(chǔ)區(qū)域504。將與該寫入對(duì)應(yīng)的高速緩存頁(yè)面元數(shù)據(jù)從干凈更新為臟(該更新是對(duì)ssd的一次寫入)。在本文中,臟頁(yè)面或數(shù)據(jù)表示該數(shù)據(jù)被存儲(chǔ)在ssd而未存儲(chǔ)在hdd508中,而干凈的頁(yè)面或數(shù)據(jù)則表示該存儲(chǔ)該頁(yè)面或數(shù)據(jù)同時(shí)存儲(chǔ)在ssd和hdd或均未存儲(chǔ)在ssd和hdd中。然后如箭頭s3所示,將該寫入數(shù)據(jù)寫入至ssd中的使用的數(shù)據(jù)區(qū)域,例如使用數(shù)據(jù)區(qū)域506(這是對(duì)ssd的又一次寫入)。在此之后,如箭頭s4所示,將表示該寫入的信息返回給第一級(jí)高速緩存,例如dram緩存。ssd高速緩存400中的后端服務(wù)掃描ssd發(fā)現(xiàn)在ssd緩存中存在臟的頁(yè)面,后端服務(wù)首先如箭頭s5所示從ssd讀取該頁(yè)面數(shù)據(jù)(對(duì)ssd的一次讀取),然后如箭頭s6所示將該臟頁(yè)面寫入hdd508(對(duì)于hdd的一次寫入)。最后如箭頭s7所示更新該緩存頁(yè)面的元數(shù)據(jù),將其從臟更新為干凈(對(duì)于ssd的再一次寫入)。
由于ssd高速緩存僅具有非常少的數(shù)據(jù)為臟數(shù)據(jù),因此為了保護(hù)這些非常少的數(shù)據(jù)而使用raid1配置浪費(fèi)了較多的ssd存儲(chǔ)空間。其次,由于臟數(shù)據(jù)或頁(yè)面僅在高速緩存中存在一段時(shí)間,因此 當(dāng)ssd配對(duì)中的兩個(gè)ssd均故障時(shí),臟數(shù)據(jù)仍然可能丟失。此外,如上參見圖5中的步驟s1-s7所示,來自dram的一次寫入導(dǎo)致了對(duì)ssd的3次寫入和1次讀取以及對(duì)hdd的一次寫入。當(dāng)來自dram的寫入增加時(shí),這將顯著影響ssd的使用壽命。
本公開的實(shí)施例因此對(duì)其做出一些改進(jìn)。在一些情形下,尤其是在來自主機(jī)的io訪問主要是讀取ssd高速緩存中的數(shù)據(jù)時(shí),本公開的實(shí)施例可以通過對(duì)降低寫入速度做出妥協(xié)來倍增ssd緩存空間以及延長(zhǎng)ssd的使用壽命。
參見圖1,圖1示出了根據(jù)本公開的一個(gè)實(shí)施例的操作100的示意圖。在圖1的示例中,ssd高速緩存102并不使用raid技術(shù),也即ssd無需配對(duì),而是單獨(dú)使用,這樣相比于圖4所示的配置,可以倍增ssd高速緩存的存儲(chǔ)空間。當(dāng)例如dram如箭頭s1所示寫入ssd高速緩存102時(shí),ssd高速緩存同步將該數(shù)據(jù)寫入ssd的使用數(shù)據(jù)區(qū)域106和hdd108。在公開中,“同步”表示數(shù)據(jù)被一次性寫入兩種不同類型的存儲(chǔ)設(shè)備,而非如圖5所示地將數(shù)據(jù)首先寫入一個(gè)存儲(chǔ)設(shè)備,并且通過后端服務(wù)雖然將該數(shù)據(jù)從該存儲(chǔ)設(shè)備寫入另一類型的存儲(chǔ)設(shè)備。本領(lǐng)域技術(shù)人員應(yīng)該理解,本公開所述術(shù)語“同步”并不排除兩種不同類型的存儲(chǔ)設(shè)備的寫入操作在“一次性寫入”具有某種由于系統(tǒng)特性所決定的時(shí)序的情形,因此術(shù)語“同步”并非指對(duì)兩種不同類型的存儲(chǔ)設(shè)備的寫入操作在時(shí)序上絕對(duì)“同時(shí)”。
通過將數(shù)據(jù)同步寫入諸如ssd和hdd之類的不同存儲(chǔ)設(shè)備,也可以確保數(shù)據(jù)的安全性,這是因?yàn)橐坏┮粋€(gè)設(shè)備出現(xiàn)問題,另一設(shè)備上仍存儲(chǔ)有相同的數(shù)據(jù)。此外,可以理解,該技術(shù)方案對(duì)于寫入操作較少的混合存儲(chǔ)設(shè)備尤為有利,這是因?yàn)閷?duì)于該混合存儲(chǔ)設(shè)備的總體讀寫性能影響相對(duì)較小。
此外,由于在如圖1所示的操作過程中,對(duì)于ssd的訪問操作僅有一次寫入操作,相比于如圖5所示的3次寫入和1次讀取操作而言,大大減少了對(duì)于ssd的寫入和讀取操作的次數(shù),因此可以顯 著延長(zhǎng)ssd的使用壽命。
參見圖2,圖2示出了本公開的一個(gè)實(shí)施例的方法200的流程圖。在步驟202中,將例如來自dram的數(shù)據(jù)同步寫入第一類型的存儲(chǔ)設(shè)備(例如ssd)和第二類型的存儲(chǔ)設(shè)備(例如hdd)。由于存在同步寫入不成功的較小的概率,因此在步驟204中判斷同步寫入是否成功。如果同步寫入操作成功,則在步驟206中確定不更新第一類型的存儲(chǔ)設(shè)備中的元數(shù)據(jù)。如上所述,由于數(shù)據(jù)被同步寫入ssd和hdd,因此,ssd中用于表示ssd中是否有未寫入hdd的臟數(shù)據(jù)的元數(shù)據(jù)無需更新。換言之,由于ssd中的使用數(shù)據(jù)區(qū)域和hdd中同步地具有被寫入的數(shù)據(jù)或是均不具有該數(shù)據(jù),用于映射ssd和hdd兩者存儲(chǔ)數(shù)據(jù)狀況的元數(shù)據(jù)無需被更新,因此消除了用于更新ssd中元數(shù)據(jù)的寫入操作,減少對(duì)ssd的寫入“磨損”,從而延長(zhǎng)ssd的使用壽命。
如果同步寫入失敗,則在步驟208中,由易失性存儲(chǔ)器(例如dram)向外部主機(jī)發(fā)送指示數(shù)據(jù)失敗的信息。繼而,在步驟210中,將ssd中被寫入失敗的數(shù)據(jù)設(shè)置為無效數(shù)據(jù),并且更新ssd中的相應(yīng)元數(shù)據(jù)。外部主機(jī)在確認(rèn)前次寫入失敗之后,可以在步驟212中重新發(fā)起寫入,即,從主機(jī)再次向ssd和hdd同步寫入數(shù)據(jù),并且返回步驟204,直至同步寫入成功。
可以理解,上述流程中第一存儲(chǔ)設(shè)備為ssd并且第二存儲(chǔ)設(shè)備為hdd僅是為了便于描述,而非旨在對(duì)本公開的實(shí)施例做出限制??梢栽诶斫庠摷夹g(shù)方案的原理的基礎(chǔ)之上,構(gòu)思其它技術(shù)方案,例如將hdd替換為其它存儲(chǔ)設(shè)備,例如磁帶,或是將ssd替換為其它需要降低寫入操作的存儲(chǔ)設(shè)備。
參見圖3,圖3示出了根據(jù)本公開的另一個(gè)實(shí)施例的方法300的流程圖。方法300與方法200不同之處僅在于同步寫入操作失敗時(shí)的處理方式。因此,將不對(duì)方法300中的步驟202、204和206進(jìn)行贅述。當(dāng)同步寫入操作失敗時(shí),用于該數(shù)據(jù)已經(jīng)緩存在例如dram之類的易失性存儲(chǔ)器中,因此在步驟308中,易失性存儲(chǔ)器dram 向外部主機(jī)先發(fā)送指示寫入數(shù)據(jù)成功的信息并向第一類型的存儲(chǔ)設(shè)備(例如ssd)重新寫入數(shù)據(jù)。在一個(gè)實(shí)施例中,由于寫入數(shù)據(jù)失敗,因此可以直接將ssd中的本應(yīng)存儲(chǔ)該數(shù)據(jù)的空間設(shè)置為無效數(shù)據(jù),并且將該數(shù)據(jù)直接寫入hdd,此時(shí)由于ssd和hdd此時(shí)不一致,因此在步驟310中更新元數(shù)據(jù)。然后告知dram高速緩存寫入成功。在此之后ssd發(fā)出命令執(zhí)行后端執(zhí)行操作,在步驟312中,將hdd中存儲(chǔ)的數(shù)據(jù)寫入sdd。此時(shí)由于ssd和hdd中的相應(yīng)區(qū)域數(shù)據(jù)一致,因此在步驟314中再次更新元數(shù)據(jù)。
可以理解,上述流程中第一存儲(chǔ)設(shè)備為ssd并且第二存儲(chǔ)設(shè)備為hdd僅是為了便于描述,而非旨在對(duì)本公開的實(shí)施例做出限制??梢栽诶斫庠摷夹g(shù)方案的原理的基礎(chǔ)之上,構(gòu)思其它技術(shù)方案,例如將hdd替換為其它存儲(chǔ)設(shè)備,例如磁帶,或是將ssd替換為其它需要降低寫入操作的存儲(chǔ)設(shè)備。
參見圖6,圖6示出了一個(gè)可以用來實(shí)施本公開的實(shí)施例的設(shè)備,600的框圖。如圖所示,設(shè)備600包括中央處理單元(cpu)601,其可以根據(jù)存儲(chǔ)在只讀存儲(chǔ)器(rom)602中的程序或者從存儲(chǔ)單元608加載到隨機(jī)訪問存儲(chǔ)器(ram)603中的程序而執(zhí)行各種適當(dāng)?shù)膭?dòng)作和處理。在ram603中,還存儲(chǔ)有設(shè)備600操作所需的各種程序和數(shù)據(jù)。cpu601、rom602以及ram603通過總線604彼此相連。輸入/輸出(i/o)接口605也連接至總線604。
設(shè)備600中的多個(gè)部件連接至i/o接口605,包括:輸入單元606,例如鍵盤、鼠標(biāo)等;輸出單元607,例如陰極射線管(crt)、液晶顯示器(lcd)、揚(yáng)聲器等;存儲(chǔ)單元608,例如磁盤、光盤等;以及通信單元609,例如網(wǎng)卡、調(diào)制解調(diào)器等。通信單元609經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。
上文所描述的過程和處理,例如方法200和300,可以由處理單元601執(zhí)行。例如,在實(shí)施例中,實(shí)現(xiàn)方法200的過程可以被實(shí)現(xiàn)為計(jì)算機(jī)軟件程序,其可被有形地包含在機(jī)器可讀介質(zhì)上。在這樣的實(shí)施例中,該計(jì)算機(jī)程序可以通過通信單元609從網(wǎng)絡(luò)上被下載 和安裝,和/或借助于存儲(chǔ)單元608而被輸入設(shè)備600以供處理單元601執(zhí)行。
總體而言,本公開的各種實(shí)施例可以以硬件或?qū)S秒娐贰④浖?、邏輯或其任意組合實(shí)施。一些方面可以以硬件實(shí)施,而其它一些方面可以以固件或軟件實(shí)施,該固件或軟件可以由控制器、微處理器或其它計(jì)算設(shè)備執(zhí)行。雖然本公開的各種方面被示出和描述為框圖、流程圖或使用其它一些繪圖表示,但是可以理解本文描述的框、設(shè)備、系統(tǒng)、技術(shù)或方法可以以非限制性的方式以硬件、軟件、固件、專用電路或邏輯、通用硬件或控制器或其它計(jì)算設(shè)備或其一些組合實(shí)施。
此外,雖然操作以特定順序描述,但是這不應(yīng)被理解為要求這類操作以所示的順序執(zhí)行或是以順序序列執(zhí)行,或是要求所有所示的操作被執(zhí)行以實(shí)現(xiàn)期望結(jié)果。在一些情形下,多任務(wù)或并行處理可以是有利的。類似地,雖然若干具體實(shí)現(xiàn)方式的細(xì)節(jié)在上面的討論中被包含,但是這些不應(yīng)被解釋為對(duì)本公開的范圍的任何限制,而是特征的描述僅是針對(duì)具體實(shí)施例。在分離的一些實(shí)施例中描述的某些特征也可以在單個(gè)實(shí)施例中組合地執(zhí)行。相反對(duì),在單個(gè)實(shí)施例中描述的各種特征也可以在多個(gè)實(shí)施例中分離地實(shí)施或是以任何合適的子組合的方式實(shí)施。
雖然本公開以具體結(jié)構(gòu)特征和/或方法動(dòng)作來描述,但是可以理解在所附權(quán)利要求書中限定的本公開并不必然限于上述具體特征或動(dòng)作。而是,上述具體特征和動(dòng)作僅公開為實(shí)施權(quán)利要求的示例形式。