用于在數(shù)據(jù)存儲子系統(tǒng)中進行數(shù)據(jù)訪問的方法和裝置制造方法
【專利摘要】根據(jù)本發(fā)明實施例的在數(shù)據(jù)存儲子系統(tǒng)中訪問數(shù)據(jù)的方法,所述數(shù)據(jù)存儲子系統(tǒng)包括HDD和至少分為副本區(qū)和非副本區(qū)的SSD,該方法包括:接收針對數(shù)據(jù)的訪問請求;判斷所述數(shù)據(jù)位于所述非副本區(qū)還是位于HDD;如果所述數(shù)據(jù)位于所述非副本區(qū),基于所述數(shù)據(jù)構(gòu)造對所述訪問請求的響應(yīng);如果所述數(shù)據(jù)位于HDD,進一步判斷在所述副本區(qū)是否包括所述數(shù)據(jù)的SSD副本;如果在副本區(qū)包括所述數(shù)據(jù)的SSD副本,根據(jù)所述SSD副本構(gòu)造對所述訪問請求的響應(yīng);以及如果在副本區(qū)不包括所述數(shù)據(jù)的SSD副本,基于HDD中的所述數(shù)據(jù)在副本區(qū)創(chuàng)建新SSD副本。根據(jù)本發(fā)明實施例的方案提高了對SSD的使用效率。
【專利說明】用于在數(shù)據(jù)存儲子系統(tǒng)中進行數(shù)據(jù)訪問的方法和裝置
?
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù),更具體地說,涉及用于在數(shù)據(jù)存儲子系統(tǒng)中進行數(shù)據(jù)訪問的方法和設(shè)備。
?
【背景技術(shù)】
[0002]在一些計算機系統(tǒng)中,需要頻繁地從數(shù)據(jù)存儲子系統(tǒng)讀取數(shù)據(jù),或者向數(shù)據(jù)存儲子系統(tǒng)寫入數(shù)據(jù)。相應(yīng)地,數(shù)據(jù)存儲子系統(tǒng)的數(shù)據(jù)1速度是制約系統(tǒng)性能的主要瓶頸之一。典型的數(shù)據(jù)存儲子系統(tǒng)包含基于磁盤(magnetic disk)技術(shù)的硬盤驅(qū)動器(Hard DiskDrive, HDD)。HDD能夠支持的數(shù)據(jù)1速度受到磁片旋轉(zhuǎn)和磁頭移動等機械操作的速度的制約。
[0003]固態(tài)盤(Solid State Disk, SSD)是基于閃存技術(shù)的存儲介質(zhì)。由于避免了磁片旋轉(zhuǎn)和磁頭移動等機械操作,SSD的數(shù)據(jù)1速度遠遠高于HDD的數(shù)據(jù)1速度。然而,SSD的成本也高于HDD。因此,SSD需要與磁盤結(jié)合起來形成數(shù)據(jù)存儲子系統(tǒng)。當前使用SSD的方法主要為以下兩種。
[0004]第一種,將SSD作為獨立的存儲層級(tier)。典型的存儲層級包括高速緩存(cache)、內(nèi)存(memory)和HDD。本領(lǐng)域技術(shù)人員可以理解,CPU只能直接訪問高速緩存。如果CPU要訪問HDD上的數(shù)據(jù),則需要從HDD向內(nèi)存加載該數(shù)據(jù)的副本(copy),該副本稱為內(nèi)存副本;然后從內(nèi)存向聞速緩存加載該數(shù)據(jù)的另一副本以便CPU訪問,所述另一副本可以稱為高速緩存副本。可以將更靠近CPU的存儲層級稱為高層級,將更遠離CPU的存儲層級稱為低層級。由于數(shù)據(jù)1速度從高層級到低層級遞減,因此如果將數(shù)據(jù)副本保留在高層級中,則可以加快訪問該數(shù)據(jù)的速度;但是,由于高層級的數(shù)據(jù)容量小于低層級,因此在高層級中只能保留對應(yīng)于低層級中的一部分數(shù)據(jù)的副本,這就需要在高層級中設(shè)置控制邏輯來確定保留哪些副本。
[0005]SSD的數(shù)據(jù)1速度高于磁盤而低于內(nèi)存,則可以作為存儲層級中介于內(nèi)存和HDD中間的一級,則在SSD中創(chuàng)建對應(yīng)于HDD上的一部分數(shù)據(jù)的SSD副本。對于在SSD中具有對應(yīng)的SSD副本的這一部分數(shù)據(jù),由于SSD的數(shù)據(jù)1速度高于HDD,因此其被加載到內(nèi)存的速度得到了提高。但是,由于SSD的數(shù)據(jù)容量小于HDD,因此在SSD中只能保留對應(yīng)于HDD中的一部分數(shù)據(jù)的SSD副本。但是,這種方法不適用于比較關(guān)鍵但使用頻率不高的數(shù)據(jù),例如初始化數(shù)據(jù)或災備數(shù)據(jù)。
[0006]第二種,將SSD作為與磁盤并列的存儲層級。一部分數(shù)據(jù)存儲在SSD中,并且可以直接從SSD加載到內(nèi)存;另一部分數(shù)據(jù)存儲在磁盤中,并且也可以直接從磁盤加載到內(nèi)存。也就是說,SSD中存儲的數(shù)據(jù)并非磁盤中存儲的數(shù)據(jù)的副本,而是獨立的數(shù)據(jù)。本領(lǐng)域技術(shù)人員可以理解,存儲在SSD中的應(yīng)該是使用頻率較高的數(shù)據(jù),存儲在磁盤中的應(yīng)該是使用頻率較低的數(shù)據(jù),從而提高整個數(shù)據(jù)存儲子系統(tǒng)的性能。但是,如何確定將數(shù)據(jù)存儲在SSD還是HDD,需要系統(tǒng)管理人員根據(jù)經(jīng)驗確定。另外,隨著數(shù)據(jù)使用頻率的變化,可以在磁盤和SSD之間進行數(shù)據(jù)遷移,即將使用頻率較高的數(shù)據(jù)從磁盤遷移到SSD,將使用頻率較低的數(shù)據(jù)從SSD遷移到磁盤。這種方法面臨另一個兩難選擇:如果遷移間隔太短,則遷移本身所需要消耗的額外系統(tǒng)資源可能抵消了遷移所能帶來的數(shù)據(jù)1速度提高;如果遷移間隔太長,則可能無法及時反映數(shù)據(jù)使用頻率的變化。
[0007]因此,需要一種新的用于在SSD和HDD的數(shù)據(jù)存儲子系統(tǒng)中進行數(shù)據(jù)存儲的解決方案。
?
【發(fā)明內(nèi)容】
[0008]本發(fā)明實施例提供了用于在數(shù)據(jù)存儲子系統(tǒng)中進行數(shù)據(jù)訪問的方法和系統(tǒng)。
[0009]根據(jù)本發(fā)明實施例,所述數(shù)據(jù)存儲子系統(tǒng)包括HDD和SSD,其中SSD至少包括副本區(qū)和非副本區(qū),其中所述副本區(qū)用于存儲HDD中的數(shù)據(jù)的SSD副本,所述非副本區(qū)用于存儲與HDD中的數(shù)據(jù)獨立的非副本數(shù)據(jù)。
[0010]根據(jù)本發(fā)明實施例的用于在數(shù)據(jù)存儲子系統(tǒng)中進行數(shù)據(jù)訪問的方法包括:接收針對數(shù)據(jù)存儲子系統(tǒng)中的數(shù)據(jù)的訪問請求;判斷所述數(shù)據(jù)位于所述非副本區(qū)還是位于HDD ;如果所述數(shù)據(jù)位于所述非副本區(qū),基于所述數(shù)據(jù)構(gòu)造對所述訪問請求的響應(yīng);如果所述數(shù)據(jù)位于HDD,進一步判斷在所述副本區(qū)是否包括所述數(shù)據(jù)的SSD副本;如果在副本區(qū)包括所述數(shù)據(jù)的SSD副本,根據(jù)所述SSD副本構(gòu)造對所述訪問請求的響應(yīng);以及如果在副本區(qū)不包括所述數(shù)據(jù)的SSD副本,基于HDD中的所述數(shù)據(jù)在副本區(qū)創(chuàng)建新SSD副本,以便基于所述新SSD副本構(gòu)造對所述訪問請求的響應(yīng)。
[0011]根據(jù)本發(fā)明實施例的用于在數(shù)據(jù)存儲子系統(tǒng)中進行數(shù)據(jù)訪問的設(shè)備包括:接收裝置,配置為接收針對數(shù)據(jù)存儲子系統(tǒng)中的數(shù)據(jù)的訪問請求;數(shù)據(jù)位置判斷裝置,配置為判斷所述數(shù)據(jù)位于所述非副本區(qū)還是位于HDD ;非副本區(qū)響應(yīng)構(gòu)造裝置,配置為如果所述數(shù)據(jù)位于所述非副本區(qū),基于所述數(shù)據(jù)構(gòu)造對所述訪問請求的響應(yīng);副本判斷裝置,配置為如果所述數(shù)據(jù)位于HDD,進一步判斷在所述副本區(qū)是否包括所述數(shù)據(jù)的SSD副本;副本區(qū)響應(yīng)構(gòu)造裝置,配置為如果在副本區(qū)包括所述數(shù)據(jù)的SSD副本,根據(jù)所述SSD副本構(gòu)造對所述訪問請求的響應(yīng);以及副本創(chuàng)建裝置,配置為如果在副本區(qū)不包括所述數(shù)據(jù)的SSD副本,基于HDD中的所述數(shù)據(jù)在副本區(qū)創(chuàng)建新SSD副本,以便基于所述新SSD副本構(gòu)造對所述訪問請求的響應(yīng)。
[0012]根據(jù)本發(fā)明實施例的方法提高了在HDD和SSD混合的數(shù)據(jù)存儲子系統(tǒng)中對SSD的利用效率。
?
【專利附圖】
【附圖說明】
[0013]通過結(jié)合附圖對本公開示例性實施方式進行更詳細的描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標號通常代表相同部件。
[0014]圖1是適于用來實現(xiàn)本發(fā)明實施方式的示例性計算機系統(tǒng)/服務(wù)器12的框圖;
[0015]圖2是根據(jù)本發(fā)明實施例的存儲層級結(jié)構(gòu);
[0016]圖3是根據(jù)本發(fā)明實施例的訪問數(shù)據(jù)的方法的流程圖;
[0017]圖4是根據(jù)本發(fā)明實施例的存儲層級結(jié)構(gòu);
[0018]圖5是根據(jù)本發(fā)明實施例的存儲層級結(jié)構(gòu);
[0019]圖6是根據(jù)本發(fā)明實施例的訪問數(shù)據(jù)的設(shè)備的方框圖。
?
【具體實施方式】
[0020]下面將參照附圖更詳細地描述本公開的優(yōu)選實施方式。雖然附圖中顯示了本公開的優(yōu)選實施方式,然而應(yīng)該理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施方式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達給本領(lǐng)域的技術(shù)人員。
[0021]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本公開可以具體實現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明還可以實現(xiàn)為在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包含計算機可讀的程序代碼。
[0022]可以采用一個或多個計算機可讀的介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0023]計算機可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括——但不限于——電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質(zhì)還可以是計算機可讀存儲介質(zhì)以外的任何計算機可讀介質(zhì),該計算機可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0024]計算機可讀介質(zhì)上包含的程序代碼可以用任何適當?shù)慕橘|(zhì)傳輸,包括一但不限于一無線、電線、光纜、RF等等,或者上述的任意合適的組合。
[0025]可以以一種或多種程序設(shè)計語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言一諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設(shè)計語言一諸如”C”語言或類似的程序設(shè)計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務(wù)器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
[0026]下面將參照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,這些計算機程序指令通過計算機或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。
[0027]也可以把這些計算機程序指令存儲在能使得計算機或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機可讀介質(zhì)中,這樣,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruct1nmeans)的制造品(manufacture)。
[0028]也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。
[0029]圖1示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算機系統(tǒng)/服務(wù)器12的框圖。圖1顯示的計算機系統(tǒng)/服務(wù)器12僅僅是一個示例,不應(yīng)對本發(fā)明實施例的功能和使用范圍帶來任何限制。
[0030]如圖1所示,計算機系統(tǒng)/服務(wù)器12以通用計算設(shè)備的形式表現(xiàn)。計算機系統(tǒng)/服務(wù)器12的組件可以包括但不限于:一個或者多個處理器或者處理單元16,系統(tǒng)存儲器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲器28和處理單元16)的總線18。
[0031]總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲器總線或者存儲器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標準體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC)總線,增強型ISA總線、時頻電子標準協(xié)會(VESA)局域總線以及外圍組件互連(PCI)總線。
[0032]計算機系統(tǒng)/服務(wù)器12典型地包括多種計算機系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是任何能夠被計算機系統(tǒng)/服務(wù)器12訪問的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動的和不可移動的介質(zhì)。
[0033]系統(tǒng)存儲器28可以包括易失性存儲器形式的計算機系統(tǒng)可讀介質(zhì),例如隨機存取存儲器(RAM)30和/或高速緩存存儲器32。計算機系統(tǒng)/服務(wù)器12可以進一步包括其它可移動/不可移動的、易失性/非易失性計算機系統(tǒng)存儲介質(zhì)。僅作為舉例,存儲系統(tǒng)34可以用于讀寫不可移動的、非易失性磁介質(zhì)(圖1未顯示,通常稱為“硬盤驅(qū)動器”)。盡管圖1中未示出,可以提供用于對可移動非易失性磁盤(例如“軟盤”)讀寫的磁盤驅(qū)動器,以及對可移動非易失性光盤(例如⑶-ROM,DVD-ROM或者其它光介質(zhì))讀寫的光盤驅(qū)動器。在這些情況下,每個驅(qū)動器可以通過一個或者多個數(shù)據(jù)介質(zhì)接口與總線18相連。存儲器28可以包括至少一個程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個)程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實施例的功能。
[0034]具有一組(至少一個)程序模塊42的程序/實用工具40,可以存儲在例如存儲器28中,這樣的程序模塊42包括——但不限于——操作系統(tǒng)、一個或者多個應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實現(xiàn)。程序模塊42通常執(zhí)行本發(fā)明所描述的實施例中的功能和/或方法。
[0035]計算機系統(tǒng)/服務(wù)器12也可以與一個或多個外部設(shè)備14 (例如鍵盤、指向設(shè)備、顯示器24等)通信,還可與一個或者多個使得用戶能與該計算機系統(tǒng)/服務(wù)器12交互的設(shè)備通信,和/或與使得該計算機系統(tǒng)/服務(wù)器12能與一個或多個其它計算設(shè)備進行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(I/o)接口 22進行。并且,計算機系統(tǒng)/服務(wù)器12還可以通過網(wǎng)絡(luò)適配器20與一個或者多個網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20通過總線18與計算機系統(tǒng)/服務(wù)器12的其它模塊通信。應(yīng)當明白,盡管圖中未示出,可以結(jié)合計算機系統(tǒng)/服務(wù)器12使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動器、冗余處理單元、外部磁盤驅(qū)動陣列、RAID系統(tǒng)、磁帶驅(qū)動器以及數(shù)據(jù)備份存儲系統(tǒng)等。
[0036]下面結(jié)合圖2和圖3描述根據(jù)本發(fā)明實施例的用于數(shù)據(jù)存儲的方法。根據(jù)本發(fā)明實施例,數(shù)據(jù)存儲子系統(tǒng)包括HDD和SSD,SSD被分為副本區(qū)和非副本區(qū)。所述副本區(qū)用于存儲HDD中的數(shù)據(jù)的SSD副本;所述非副本區(qū)用于存儲與HDD中的數(shù)據(jù)獨立的數(shù)據(jù)即非副本數(shù)據(jù)。這種層級結(jié)構(gòu)如圖2所示。圖2中的箭頭表示數(shù)據(jù)讀取的方向。本領(lǐng)域技術(shù)人員可以理解,數(shù)據(jù)寫入的方向與數(shù)據(jù)讀取的方向相反。
[0037]在將數(shù)據(jù)存儲到數(shù)據(jù)存儲子系統(tǒng)時,可以選擇是存儲到非副本區(qū)還是HDD。例如,在安裝程序時,可以通過例如指定安裝目錄而選擇將程序安裝到非副本區(qū)還是HDD。此后,也可以根據(jù)數(shù)據(jù)被使用的頻率,將數(shù)據(jù)從非副本區(qū)遷移到HDD,或者從HDD遷移到非副本區(qū)。如何在SSD和HDD之間進行數(shù)據(jù)遷移是本領(lǐng)域的常用技術(shù),在此不再贅述。
[0038]步驟301,接收對所述數(shù)據(jù)存儲子系統(tǒng)中的數(shù)據(jù)進行訪問的訪問請求。
[0039]如前所述,CPU在需要訪問數(shù)據(jù)時,會先檢查高速緩存中是否存在該數(shù)據(jù)的高速緩存副本;如果沒有,則進一步檢查內(nèi)存中是否存在該數(shù)據(jù)的內(nèi)存副本;如果還沒有,則向數(shù)據(jù)存儲子系統(tǒng)發(fā)出進行數(shù)據(jù)訪問的訪問請求。
[0040]一般來說,采用數(shù)據(jù)地址來作為數(shù)據(jù)的標識符。例如,數(shù)據(jù)存儲子系統(tǒng)常用的尋址方式是邏輯塊地址(Logic Block Address, LBA),即用數(shù)據(jù)存儲子系統(tǒng)中存儲某數(shù)據(jù)的存儲器地址來指代該數(shù)據(jù)。如果在高速緩存保留有該數(shù)據(jù)的高速緩存副本,則高速緩存記錄該數(shù)據(jù)的LBA;如果在內(nèi)存中保留有該數(shù)據(jù)的內(nèi)存副本,則內(nèi)存記錄該數(shù)據(jù)的LBA。當CPU需要該數(shù)據(jù)時,利用所述LBA作為關(guān)鍵詞檢索高速緩存或內(nèi)存,從而確定在告訴緩存或內(nèi)存中是否存在該數(shù)據(jù)的副本。如果高速緩存和內(nèi)存中均不存在該數(shù)據(jù)的副本,則將所述LBA包含在所述訪問請求中發(fā)給數(shù)據(jù)存儲子系統(tǒng),以便數(shù)據(jù)存儲子系統(tǒng)根據(jù)所述LBA取出數(shù)據(jù)。
[0041 ] 本領(lǐng)域技術(shù)人員也可以采用其他方式來對數(shù)據(jù)進行標識。
[0042]步驟302,判斷所述數(shù)據(jù)位于非副本區(qū)還是位于HDD。
[0043]數(shù)據(jù)存儲子系統(tǒng)接收到所述訪問請求后,提取數(shù)據(jù)的LBA,從而從數(shù)據(jù)的LBA確定該數(shù)據(jù)位于非副本區(qū)還是位于HDD。
[0044]步驟303,如果所述數(shù)據(jù)位于非副本區(qū),基于所述數(shù)據(jù)構(gòu)造對所述訪問請求的響應(yīng)。
[0045]數(shù)據(jù)存儲子系統(tǒng)對數(shù)據(jù)訪問訪問請求的響應(yīng)至少應(yīng)包括所述數(shù)據(jù)的內(nèi)容。因此,構(gòu)造對所述訪問請求的響應(yīng),即為將數(shù)據(jù)的內(nèi)容包含在響應(yīng)中。如前所述,內(nèi)存根據(jù)該響應(yīng),在內(nèi)存中創(chuàng)建該數(shù)據(jù)的內(nèi)存副本,然后根據(jù)該副本構(gòu)造內(nèi)存對高速緩存的響應(yīng);高速緩存根據(jù)所述內(nèi)存對高速緩存的響應(yīng),在高速緩存中創(chuàng)建該數(shù)據(jù)的高速緩存副本,從而使得CPU可以訪問該高速緩存副本。
[0046]根據(jù)本發(fā)明實施例,在數(shù)據(jù)位于非副本區(qū)的情況下,存儲層級自高至低為:高速緩存、內(nèi)存、和非副本區(qū)。
[0047]步驟304,如果所述數(shù)據(jù)位于HDD,判斷在副本區(qū)是否包括所述數(shù)據(jù)的副本。
[0048]根據(jù)本發(fā)明實施例,在數(shù)據(jù)位于HDD的情況下,存儲層級自高至低為:高速緩存、內(nèi)存、副本區(qū)、和HDD。這樣,HDD中的一部分數(shù)據(jù)副本區(qū)中具有對應(yīng)的SSD副本,這一部分數(shù)據(jù)的子集可能進一步在內(nèi)存中具有對應(yīng)的內(nèi)存副本,更小的子集可能進一步在聞速緩存中具有對應(yīng)的高速緩存副本。因此,對于HDD中的某些數(shù)據(jù)而言,可能存在SSD副本而不存在內(nèi)存副本和高速緩存副本。
[0049]類似內(nèi)存和高速緩存,如果副本區(qū)中存在某數(shù)據(jù)的SSD副本,則副本區(qū)記錄該數(shù)據(jù)的LBA。這樣就可以快速地判斷副本區(qū)是否存在該數(shù)據(jù)的SSD副本。
[0050]步驟305,如果在副本區(qū)包括所述數(shù)據(jù)的SSD副本,根據(jù)所述SSD副本構(gòu)造對所述訪問請求的響應(yīng)。
[0051]在所述響應(yīng)中包含數(shù)據(jù)的內(nèi)容。內(nèi)存根據(jù)該響應(yīng),在內(nèi)存中創(chuàng)建該數(shù)據(jù)的內(nèi)存副本,然后根據(jù)該副本構(gòu)造內(nèi)存對高速緩存的響應(yīng);高速緩存根據(jù)所述內(nèi)存對高速緩存的響應(yīng),在高速緩存中創(chuàng)建該數(shù)據(jù)的高速緩存副本,從而使得CPU可以訪問該高速緩存副本。
[0052]步驟306,如果在副本區(qū)不包括所述數(shù)據(jù)的SSD副本,基于HDD中的所述數(shù)據(jù)在副本區(qū)創(chuàng)建該數(shù)據(jù)的副本,以便基于所述副本構(gòu)造對所述訪問請求的響應(yīng)。
[0053]在副本區(qū)創(chuàng)建該數(shù)據(jù)的SSD副本,相應(yīng)地也在SSD中記錄該數(shù)據(jù)的標識,例如LBA。進而,可以根據(jù)該SSD副本構(gòu)造對所述訪問請求的響應(yīng)。內(nèi)存根據(jù)該響應(yīng),在內(nèi)存中創(chuàng)建該數(shù)據(jù)的內(nèi)存副本,然后根據(jù)該副本構(gòu)造內(nèi)存對高速緩存的響應(yīng);高速緩存根據(jù)所述內(nèi)存對高速緩存的響應(yīng),在高速緩存中創(chuàng)建該數(shù)據(jù)的高速緩存副本,從而使得CPU可以訪問該高速緩存副本。
[0054]本領(lǐng)域技術(shù)人員可以理解,如果數(shù)據(jù)位于HDD中,那么CPU要訪問該數(shù)據(jù),通常會在副本區(qū)、內(nèi)存和高速緩存中均創(chuàng)建該數(shù)據(jù)的副本。如果該數(shù)據(jù)的使用頻率不夠高,那么其在高速緩存、內(nèi)存或副本區(qū)的副本可能被逐出;如果該數(shù)據(jù)的使用頻率足夠高,那么其在高速緩存、內(nèi)存或副本區(qū)的副本可能被保留。
[0055]根據(jù)圖3所示的方法,一部分SSD作為HDD和內(nèi)存之間的存儲層級,另一部分SSD作為獨立的存儲空間。對于比較關(guān)鍵但使用頻率不高的數(shù)據(jù),可以在將該數(shù)據(jù)存儲到數(shù)據(jù)存儲子系統(tǒng)時,通過例如指定存儲目錄而選擇將該數(shù)據(jù)存儲在非副本區(qū)。這樣,就不會因為該數(shù)據(jù)的使用頻率不高而被遷移到HDD。
[0056]圖3所示的方法也解決了關(guān)于遷移間隔的兩難選擇問題。遷移間隔可以設(shè)置得較長,以避免遷移本身所需要消耗的額外系統(tǒng)資源抵消遷移所能帶來的數(shù)據(jù)1速度提高。在兩次數(shù)據(jù)遷移之間,對于被存儲到HDD之中的數(shù)據(jù),如果該數(shù)據(jù)被經(jīng)常使用,那么該數(shù)據(jù)的副本將會被保留在副本區(qū)中,從而CPU對該數(shù)據(jù)的存取速率也得到了提高。對于被存儲到HDD之中的數(shù)據(jù),如果該數(shù)據(jù)被經(jīng)常使用,那么該數(shù)據(jù)的副本將會被保留在副本區(qū)中,從而(PU對該數(shù)據(jù)的存取速率也得到了提高,從而克服了遷移間隔過長帶來的無法及時反映數(shù)據(jù)使用頻率變化的問題。
[0057]根據(jù)本發(fā)明實施例,將SSD存儲空間分配給副本區(qū)和非副本區(qū)的比例是固定的。如果副本區(qū)已經(jīng)全部被占用,那么在步驟306中,可能不存在足夠的副本區(qū)的存儲空間來創(chuàng)建新的SSD副本??梢詫⒏北緟^(qū)中已有的SSD副本進行逐出,從而回收副本區(qū)的存儲空間以便創(chuàng)建新的SSD副本。例如,可以將最近不曾被CPU訪問過的數(shù)據(jù)所對應(yīng)的SSD副本逐出副本區(qū);也可以將最早創(chuàng)建的SSD副本逐出副本區(qū)。如果非副本區(qū)已經(jīng)全部被占用,那么在需要向非副本區(qū)存儲新的數(shù)據(jù)時,則需要將非副本區(qū)已有數(shù)據(jù)中的一部分遷移到HDD中。被遷移的數(shù)據(jù)可以例如是非副本區(qū)中使用頻率最低的數(shù)據(jù)。非副本區(qū)中的數(shù)據(jù),可能由于某些原因而被刪除,例如,卸載之前安裝在非副本區(qū)中的應(yīng)用程序,或者由于數(shù)據(jù)屬性變化而將之前存儲在非副本區(qū)的數(shù)據(jù)遷移到HDD中。那么根據(jù)本實施例,非副本區(qū)中的數(shù)據(jù)保持空閑狀態(tài),并且可以用于在非副本區(qū)中存儲新的數(shù)據(jù)。
[0058]一般來說,非副本區(qū)中的數(shù)據(jù)要么是比較關(guān)鍵的,要么是有較大概率需要經(jīng)常使用的。應(yīng)該盡可能保證非副本區(qū)對SSD存儲空間的使用。根據(jù)本發(fā)明的另一個實施例,將SSD存儲空間分配給副本區(qū)和非副本區(qū)的比例是可變的,并且非副本區(qū)對SSD存儲空間的使用應(yīng)該比副本區(qū)對SSD存儲空間的使用具有更高的優(yōu)先級。
[0059]一方面,并不預先將一定容量的SSD存儲空間固定地分配給副本區(qū)或非副本區(qū);而是將實際存儲非副本數(shù)據(jù)的SSD存儲空間作為非副本區(qū),將未被非副本數(shù)據(jù)占用的SSD存儲空間均作為副本區(qū)。本領(lǐng)域技術(shù)人員可以理解,隨著CPU對位于HDD的數(shù)據(jù)的訪問,副本區(qū)會使用全部的未被非副本區(qū)占用的SSD存儲空間。這是因為,在SSD中還存在空閑存儲空間時,就會為CPU訪問HDD上的數(shù)據(jù)而創(chuàng)建新的SSD副本,直到SSD中不存在空閑存儲空間來創(chuàng)建新的SSD副本。
[0060]非副本區(qū)中的數(shù)據(jù),可能由于某些原因而被刪除,例如,卸載之前安裝在非副本區(qū)中的應(yīng)用程序,或者由于數(shù)據(jù)屬性變化而將之前存儲在非副本區(qū)的數(shù)據(jù)遷移到HDD中。根據(jù)上述實施例,所釋放的SSD存儲空間被用來創(chuàng)建新的SSD副本。
[0061]另一方面,在有新的非副本數(shù)據(jù)需要存儲到SSD時,則將一部分之前分配給副本區(qū)的存儲空間重新分配給非副本區(qū)。如前所述,副本區(qū)會使用全部的未被非副本區(qū)占用的SSD存儲空間。因此,需要從所述副本區(qū)中逐出一部分SSD副本,從而回收副本區(qū)的存儲空間,以便實現(xiàn)所述重新分配。
[0062]根據(jù)本發(fā)明實施例,優(yōu)先使用來自比較穩(wěn)定的SSD塊的副本區(qū)來創(chuàng)建新的SSD副本。不同的SSD塊可能具有不同的穩(wěn)定性。這里的SSD塊指的是物理上或者邏輯上作為一個獨立單元的SSD存儲空間,而穩(wěn)定性指的是向該SSD塊增加新的非副本數(shù)據(jù),或者從該SSD塊減少非副本數(shù)據(jù)的頻率。可以理解,如果頻繁地對某個SSD塊增減非副本數(shù)據(jù),則該SSD塊的穩(wěn)定性較低。
[0063]如果不斷有新的非副本數(shù)據(jù)需要存儲到SSD,那么按照上面的做法有可能耗盡副本區(qū)的存儲空間,從而使得無法為存儲在HDD中的數(shù)據(jù)在SSD中創(chuàng)建副本。這樣,如果高速緩存和內(nèi)存中均不存在存儲在HDD中的某數(shù)據(jù)的副本,就只能從HDD中讀取該數(shù)據(jù)。這樣,數(shù)據(jù)存儲子系統(tǒng)的整體性能就會降低。
[0064]圖4是根據(jù)本發(fā)明另一實施例的層級結(jié)構(gòu)。其中,數(shù)據(jù)存儲子系統(tǒng)包括HDD和SSD,SSD被分為副本區(qū)和非副本區(qū)。所述副本區(qū)用于存儲HDD中的數(shù)據(jù)的SSD副本;所述非副本區(qū)用于存儲與HDD中的數(shù)據(jù)獨立的數(shù)據(jù)即非副本數(shù)據(jù)。與圖2所示的層級結(jié)構(gòu)相比,圖4所示的層級結(jié)構(gòu)中,副本區(qū)被進一步劃分為專用副本區(qū)和動態(tài)副本區(qū)。其中,專用副本區(qū)的存儲空間不能被重新分配給非副本區(qū),而動態(tài)副本區(qū)的存儲空間可以被重新分配給非副本區(qū)。
[0065]在非副本區(qū)對SSD存儲空間的使用比副本區(qū)對SSD存儲空間的使用具有更高的優(yōu)先級的情況下,如果有新的非副本數(shù)據(jù)需要存儲到SSD,例如在安裝新的應(yīng)用程序時指定安裝在非副本區(qū),或者將HDD上的經(jīng)常使用的數(shù)據(jù)遷移到非副本區(qū),那么首先判斷非副本區(qū)是否有足夠的空閑存儲空間來滿足所述安裝或者遷移的要求。
[0066]如果非副本區(qū)已經(jīng)全部被占用從而無法滿足所述安裝或者遷移的要求,則將一部分之前分配給副本區(qū)的存儲空間重新分配給非副本區(qū)。由于副本區(qū)進一步分為專用副本區(qū)和動態(tài)副本區(qū),并且只有動態(tài)副本區(qū)的存儲空間可以被重新分配給非副本區(qū),因此只判斷動態(tài)副本區(qū)是否有空閑存儲空間來滿足所述重新分配的要求。
[0067]如果動態(tài)副本區(qū)的空閑存儲空間不能滿足所述重新分配的要求,則從所述動態(tài)副本區(qū)中逐出一部分SSD副本,從而回收動態(tài)副本區(qū)的存儲空間,以便實現(xiàn)所述重新分配。如果所回收的動態(tài)副本區(qū)的存儲空間依然不能滿足所述重新分配的要求,則發(fā)出消息指示SSD中沒有足夠的存儲空間存儲所述新的數(shù)據(jù)。在后續(xù)處理中,可以將非副本區(qū)中的一部分數(shù)據(jù)遷移到HDD中,從而釋放非副本區(qū)中的存儲空間來存儲所述新的數(shù)據(jù);也可以放棄將所述新的非副本數(shù)據(jù)存儲到SSD。
[0068]根據(jù)本發(fā)明實施例,在副本區(qū)分為專用副本區(qū)和動態(tài)副本區(qū)的情況下,當所述訪問請求所指示的數(shù)據(jù)位于HDD時,首先使用專用副本區(qū)來創(chuàng)建所述SSD副本;當專用副本區(qū)的存儲空間不足以創(chuàng)建新的SSD副本時,才使用動態(tài)副本區(qū)來創(chuàng)建所述SSD副本。
[0069]本領(lǐng)域技術(shù)人員可以理解,雖然只能從動態(tài)副本區(qū)逐出SSD副本來重新分配給非副本區(qū),但是動態(tài)副本區(qū)中的SSD副本可能比專用副本區(qū)中的SSD副本更需要保留在SSD中。換句話說,動態(tài)副本區(qū)中的SSD副本可能比專用副本區(qū)中的SSD副本具有更低的逐出指數(shù)(measurement)。
[0070]如前所述,隨著CPU對位于HDD的數(shù)據(jù)的訪問,副本區(qū)會使用全部的未被非副本區(qū)占用的SSD存儲空間。此時如果CPU需要訪問位于HDD的新數(shù)據(jù),則只能從副本區(qū)逐出舊SSD副本以便釋放空間來為所述新數(shù)據(jù)創(chuàng)建SSD副本。這個過程稱為副本區(qū)更新。一般來說,將動態(tài)副本區(qū)和專用副本區(qū)作為整體考慮來進行副本區(qū)更新。根據(jù)本發(fā)明實施例,為了配合只能將動態(tài)副本區(qū)的存儲空間重新分配給非副本區(qū)的設(shè)置,可以在副本區(qū)更新時,優(yōu)先對專用副本區(qū)的SSD副本進行逐出。這樣,在對動態(tài)副本區(qū)中的SSD副本進行逐出以釋放存儲空間給非副本區(qū)時,專用副本區(qū)中的SSD副本有較大的概率比動態(tài)副本區(qū)中的SSD副本具有更低的逐出指數(shù),從而更需要保留在SSD中。相應(yīng)地,對動態(tài)副本區(qū)中的SSD副本進行逐出,就有比較大的概率將具有更高逐出指數(shù)的SSD副本逐出副本區(qū)。
[0071]例如,數(shù)據(jù)存儲子系統(tǒng)可以被配置為在副本區(qū)更新時將被CPU訪問次數(shù)最少的數(shù)據(jù)所對應(yīng)的SSD副本逐出副本區(qū),即SSD副本的逐出指數(shù)與對應(yīng)的數(shù)據(jù)被CPU訪問的次數(shù)成單調(diào)遞減函數(shù)。那么在計算動態(tài)副本區(qū)中的SSD副本所對應(yīng)的數(shù)據(jù)的被訪問次數(shù)時,可以乘以一個大于I的權(quán)重。這樣,如果動態(tài)副本區(qū)中的第一 SSD副本和專用副本區(qū)中的第二 SSD副本所分別對應(yīng)的數(shù)據(jù)被CPU訪問的次數(shù)一樣多,則會逐出專用副本區(qū)中的第二 SSD副本。
[0072]又例如,數(shù)據(jù)存儲子系統(tǒng)也可以被配置為在副本區(qū)更新時將將最早創(chuàng)建的SSD副本逐出副本區(qū),即SSD副本的逐出指數(shù)與該SSD副本在副本區(qū)中的存在時間成單調(diào)遞增函數(shù)。那么在計算專用副本區(qū)中的SSD副本的存在時間時,可以乘以一個大于I的權(quán)重。這樣,如果動態(tài)副本區(qū)中的第三SSD副本和專用副本區(qū)中的第四SSD副本的存在時間一樣長,則會逐出專用副本區(qū)中的第四SSD副本。
[0073]根據(jù)本發(fā)明另一個實施例,在副本區(qū)更新時,仍然將動態(tài)副本區(qū)和專用副本區(qū)作為整體考慮,即在為了副本區(qū)更新而計算SSD副本的逐出指數(shù)時,并不區(qū)分該SSD副本時位于動態(tài)副本區(qū)還是專用副本區(qū)。在需要將動態(tài)副本區(qū)的SSD副本逐出以釋放存儲空間給非副本區(qū)時,首先選出動態(tài)副本區(qū)中第一候選SSD副本,從專用副本區(qū)中選出第二候選SSD副本。其中第一候選SSD副本是動態(tài)副本區(qū)的所有SSD副本中逐出指數(shù)最高的SSD副本,例如是對應(yīng)于CPU訪問次數(shù)最少的SSD副本,或者是存在時間最長的SSD副本;第二候選SSD副本是專用副本區(qū)的所有SSD副本中逐出指數(shù)最高的SSD副本。然后,比較第一候選SSD副本的逐出指數(shù)和第二候選SSD副本的逐出指數(shù)。如果第一候選SSD副本的逐出指數(shù)大于第二候選SSD副本的逐出指數(shù),則直接從動態(tài)副本區(qū)中逐出第一候選SSD副本;如果第一候選SSD副本的逐出指數(shù)小于第二候選SSD副本的逐出指數(shù),則從專用副本區(qū)中逐出第二候選SSD副本,然后將第一候選SSD副本從動態(tài)副本區(qū)遷移到專用副本區(qū)。
[0074]本領(lǐng)域技術(shù)人員根據(jù)上述描述,設(shè)計出其他的方案來使得在從動態(tài)副本區(qū)中逐出SSD副本以釋放空間給非副本區(qū)時,保留在副本區(qū)中的SSD副本有較大的概率具有較低的逐出指數(shù)。
[0075]圖5是根據(jù)本發(fā)明再一個實施例的層級結(jié)構(gòu)。其中,數(shù)據(jù)存儲子系統(tǒng)包括HDD和SSD, SSD被分為副本區(qū)和非副本區(qū)。所述副本區(qū)用于存儲HDD中的數(shù)據(jù)的SSD副本;所述非副本區(qū)用于存儲與HDD中的數(shù)據(jù)獨立的數(shù)據(jù)即非副本數(shù)據(jù)。副本區(qū)被進一步劃分為專用副本區(qū)和動態(tài)副本區(qū)。其中,專用副本區(qū)的存儲空間不能被重新分配給非副本區(qū),而動態(tài)副本區(qū)的存儲空間可以被重新分配給非副本區(qū)。與圖4所示的層級結(jié)構(gòu)相比,圖5所示的層級結(jié)構(gòu)中進一步設(shè)置有緩沖區(qū)。
[0076]如前所述,將SSD存儲空間分配給副本區(qū)和非副本區(qū)的比例是可變的,并且非副本區(qū)對SSD存儲空間的使用應(yīng)該比副本區(qū)對SSD存儲空間的使用具有更高的優(yōu)先級。一方面,副本區(qū)可以使用未被非副本區(qū)非副本區(qū)占用的SSD存儲空間,并且副本區(qū)實際上會使用全部的未被非副本區(qū)占用的SSD存儲空間。另一方面,在有新的非副本數(shù)據(jù)需要存儲到SSD時,則將一部分之前分配給副本區(qū)的存儲空間重新分配給非副本區(qū)。這樣,在有新的非副本數(shù)據(jù)需要存儲到SSD時,必須首先進行所述重新分配的步驟,從而可能影響所述新的非副本數(shù)據(jù)的寫入速度。
[0077]緩沖區(qū)實際上是為非副本區(qū)保留的SSD存儲空間,即副本區(qū)只能使用未被非副本區(qū)和緩沖區(qū)占用的SSD存儲空間。緩沖區(qū)與非副本區(qū)的區(qū)別是,非副本區(qū)中存儲有非副本數(shù)據(jù),而緩沖區(qū)是空閑的存儲空間。當有新的非副本數(shù)據(jù)需要存儲到SSD時,首先使用緩沖區(qū)的存儲空間而不是直接進行所述重新分配的步驟。數(shù)據(jù)存儲子系統(tǒng)定期地檢查緩沖區(qū)的容量,如果所述容量低于緩沖區(qū)閾值,則將一部分之前分配給副本區(qū)的存儲空間重新分配給緩沖區(qū)。數(shù)據(jù)存儲子系統(tǒng)也可以響應(yīng)于特定事件,例如接收到檢查緩沖區(qū)容量的命令,而不定期地執(zhí)行所述檢查。這樣,在有新的非副本數(shù)據(jù)需要存儲到SSD時,不用首先進行所述重新分配的步驟,從而避免了影響所述新的非副本數(shù)據(jù)的寫入速度。本領(lǐng)域技術(shù)人員可以理解,雖然圖5中同時示出了非副本區(qū)、緩沖區(qū)、動態(tài)副本區(qū)和專用副本區(qū),但是并不表示這些分區(qū)都需要同時被設(shè)置。例如,可以只設(shè)置非副本區(qū)、緩沖區(qū)和副本區(qū),而不再進一步將副本區(qū)劃分為動態(tài)副本區(qū)和專用副本區(qū)。
[0078]圖6示出了根據(jù)本發(fā)明實施例的用于在數(shù)據(jù)存儲子系統(tǒng)中進行數(shù)據(jù)訪問的設(shè)備。所述數(shù)據(jù)存儲子系統(tǒng)包括HDD和SSD,其中SSD至少包括副本區(qū)和非副本區(qū),其中所述副本區(qū)用于存儲HDD中的數(shù)據(jù)的SSD副本,所述非副本區(qū)用于存儲與HDD中的數(shù)據(jù)獨立的非副本數(shù)據(jù)。
[0079]根據(jù)本發(fā)明實施例的設(shè)備包括:
[0080]接收裝置,配置為接收針對數(shù)據(jù)存儲子系統(tǒng)中的數(shù)據(jù)的訪問請求,
[0081]數(shù)據(jù)位置判斷裝置,配置為判斷所述數(shù)據(jù)位于所述非副本區(qū)還是位于HDD,
[0082]非副本區(qū)響應(yīng)構(gòu)造裝置,配置為如果所述數(shù)據(jù)位于所述非副本區(qū),基于所述數(shù)據(jù)構(gòu)造對所述訪問請求的響應(yīng),
[0083]副本判斷裝置,配置為如果所述數(shù)據(jù)位于HDD,進一步判斷在所述副本區(qū)是否包括所述數(shù)據(jù)的SSD副本,
[0084]副本區(qū)響應(yīng)構(gòu)造裝置,配置為如果在副本區(qū)包括所述數(shù)據(jù)的SSD副本,根據(jù)所述SSD副本構(gòu)造對所述訪問請求的響應(yīng),以及
[0085]副本創(chuàng)建裝置,配置為如果在副本區(qū)不包括所述數(shù)據(jù)的SSD副本,基于HDD中的所述數(shù)據(jù)在副本區(qū)創(chuàng)建新SSD副本,以便基于所述新SSD副本構(gòu)造對所述訪問請求的響應(yīng)。
[0086]其中所述SSD中存儲非副本數(shù)據(jù)的存儲空間作為所述非副本區(qū),以及所述SSD中未被所述非副本區(qū)占用的SSD存儲空間作為所述副本區(qū)。
[0087]該設(shè)備進一步包括:
[0088]副本區(qū)空間釋放裝置,配置為在有新的非副本數(shù)據(jù)需要存儲到SSD的情況下,釋放所述副本區(qū)的至少一部分存儲空間,以及
[0089]副本區(qū)空間重新分配裝置,配置為將所釋放的存儲空間重新分配給非副本區(qū)以存儲所述新的非副本數(shù)據(jù)。
[0090]其中所述SSD中存儲非副本數(shù)據(jù)的存儲空間作為所述非副本區(qū),所述SSD中一部分空閑存儲空間作為所述緩沖區(qū),以及未被所述非副本區(qū)和所述緩沖區(qū)占用的SSD存儲空間作為所述副本區(qū)。
[0091]該設(shè)備進一步包括:
[0092]緩沖區(qū)存儲裝置,配置為在有新的非副本數(shù)據(jù)需要存儲到SSD的情況下,使用所述緩沖區(qū)的存儲空間來存儲所述新的非副本數(shù)據(jù)。
[0093]所述設(shè)備進一步包括:
[0094]緩沖區(qū)容量檢查裝置,配置為檢查緩沖區(qū)的容量,
[0095]副本區(qū)空間釋放裝置,配置為如果所述容量低于緩沖區(qū)閾值,則釋放所述副本區(qū)的至少一部分存儲空間,以及
[0096]副本區(qū)空間重新分配裝置,配置為將所釋放的存儲空間重新分配給所述緩沖區(qū)。
[0097]其中所述副本區(qū)被進一步劃分為專用副本區(qū)和動態(tài)副本區(qū),并且其中副本區(qū)空間釋放裝置包括:
[0098]配置為僅釋放動態(tài)副本區(qū)的至少一部分存儲空間的裝置。
[0099]其中配置為僅釋放動態(tài)副本區(qū)的至少一部分存儲空間的裝置包括:
[0100]配置為從動態(tài)副本區(qū)中逐出至少一部分SSD副本以釋放存儲空間的裝置,其中保留在所述副本區(qū)中的SSD副本具有較低的逐出指數(shù)。
[0101]其中所述副本創(chuàng)建裝置包括:
[0102]配置為優(yōu)先使用專用副本區(qū)的存儲空間來創(chuàng)建所述新SSD副本的裝置,以及
[0103]配置為在專用副本區(qū)的存儲空間不足以創(chuàng)建所述新SSD副本的情況下,使用動態(tài)副本區(qū)的存儲空間來創(chuàng)建所述新SSD副本的裝置。
[0104]其中所述副本創(chuàng)建裝置包括:
[0105]配置為優(yōu)先使用來自具有較高穩(wěn)定性的SSD塊的副本區(qū)來創(chuàng)建所述新SSD副本的裝置,其中所述穩(wěn)定性指的是向該SSD塊增減非副本數(shù)據(jù)的頻率。
[0106]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
[0107]以上已經(jīng)描述了本發(fā)明的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實施例的原理、實際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的技術(shù)改進,或者使本【技術(shù)領(lǐng)域】的其它普通技術(shù)人員能理解本文披露的各實施例。
【權(quán)利要求】
1.一種用于在數(shù)據(jù)存儲子系統(tǒng)中進行數(shù)據(jù)訪問的方法,所述數(shù)據(jù)存儲子系統(tǒng)包括硬盤驅(qū)動器HDD和固態(tài)盤SSD,其中SSD至少包括副本區(qū)和非副本區(qū),其中所述副本區(qū)用于存儲HDD中的數(shù)據(jù)的SSD副本,所述非副本區(qū)用于存儲與HDD中的數(shù)據(jù)獨立的非副本數(shù)據(jù),該方法包括: 接收針對數(shù)據(jù)存儲子系統(tǒng)中的數(shù)據(jù)的訪問請求, 判斷所述數(shù)據(jù)位于所述非副本區(qū)還是位于HDD, 如果所述數(shù)據(jù)位于所述非副本區(qū),基于所述數(shù)據(jù)構(gòu)造對所述訪問請求的響應(yīng), 如果所述數(shù)據(jù)位于HDD,進一步判斷在所述副本區(qū)是否包括所述數(shù)據(jù)的SSD副本, 如果在副本區(qū)包括所述數(shù)據(jù)的SSD副本,根據(jù)所述SSD副本構(gòu)造對所述訪問請求的響應(yīng),以及 如果在副本區(qū)不包括所述數(shù)據(jù)的SSD副本,基于HDD中的所述數(shù)據(jù)在副本區(qū)創(chuàng)建新SSD副本,以便基于所述新SSD副本構(gòu)造對所述訪問請求的響應(yīng)。
2.如權(quán)利要求1所述的方法,其中所述SSD中存儲非副本數(shù)據(jù)的存儲空間作為所述非副本區(qū),以及所述SSD中未被所述非副本區(qū)占用的SSD存儲空間作為所述副本區(qū)。
3.如權(quán)利要求2所述的方法,進一步包括: 在有新的非副本數(shù)據(jù)需要存儲到SSD的情況下,釋放所述副本區(qū)的至少一部分存儲空間,以及 將所釋放的存儲空間重新分配給非副本區(qū)以存儲所述新的非副本數(shù)據(jù)。
4.如權(quán)利要求1所述的方法,其中所述SSD中存儲非副本數(shù)據(jù)的存儲空間作為所述非副本區(qū),所述SSD中一部分空閑存儲空間作為所述緩沖區(qū),以及未被所述非副本區(qū)和所述緩沖區(qū)占用的SSD存儲空間作為所述副本區(qū)。
5.如權(quán)利要求4所述的方法,進一步包括: 在有新的非副本數(shù)據(jù)需要存儲到SSD的情況下,使用所述緩沖區(qū)的存儲空間來存儲所述新的非副本數(shù)據(jù)。
6.如權(quán)利要求5所述的方法,進一步包括: 檢查緩沖區(qū)的容量, 如果所述容量低于緩沖區(qū)閾值,則釋放所述副本區(qū)的至少一部分存儲空間,以及 將所釋放的存儲空間重新分配給所述緩沖區(qū)。
7.如權(quán)利要求3或6所述的方法,其中所述副本區(qū)被進一步劃分為專用副本區(qū)和動態(tài)副本區(qū),并且其中釋放所述副本區(qū)的至少一部分存儲空間包括: 僅釋放動態(tài)副本區(qū)的至少一部分存儲空間。
8.如權(quán)利要求7所述的方法,其中僅釋放動態(tài)副本區(qū)的至少一部分存儲空間包括: 從動態(tài)副本區(qū)中逐出至少一部分SSD副本以釋放存儲空間,其中保留在所述副本區(qū)中的SSD副本具有較低的逐出指數(shù)。
9.如權(quán)利要求7所述的方法,其中基于HDD中的所述數(shù)據(jù)在副本區(qū)創(chuàng)建新SSD副本包括: 優(yōu)先使用專用副本區(qū)的存儲空間來創(chuàng)建所述新SSD副本,以及在專用副本區(qū)的存儲空間不足以創(chuàng)建所述新SSD副本的情況下,使用動態(tài)副本區(qū)的存儲空間來創(chuàng)建所述新SSD副本。
10.如權(quán)利要求1到6中任意一項所述的方法,其中基于HDD中的所述數(shù)據(jù)在副本區(qū)創(chuàng)建新SSD副本包括: 優(yōu)先使用來自具有較高穩(wěn)定性的SSD塊的副本區(qū)來創(chuàng)建所述新SSD副本,其中所述穩(wěn)定性指的是向該SSD塊增減非副本數(shù)據(jù)的頻率。
11.一種用于在數(shù)據(jù)存儲子系統(tǒng)中進行數(shù)據(jù)訪問的設(shè)備,所述數(shù)據(jù)存儲子系統(tǒng)包括硬盤驅(qū)動器HDD和固態(tài)盤SSD,其中SSD至少包括副本區(qū)和非副本區(qū),其中所述副本區(qū)用于存儲HDD中的數(shù)據(jù)的SSD副本,所述非副本區(qū)用于存儲與HDD中的數(shù)據(jù)獨立的非副本數(shù)據(jù),該設(shè)備包括: 接收裝置,配置為接收針對數(shù)據(jù)存儲子系統(tǒng)中的數(shù)據(jù)的訪問請求, 數(shù)據(jù)位置判斷裝置,配置為判斷所述數(shù)據(jù)位于所述非副本區(qū)還是位于HDD, 非副本區(qū)響應(yīng)構(gòu)造裝置,配置為如果所述數(shù)據(jù)位于所述非副本區(qū),基于所述數(shù)據(jù)構(gòu)造對所述訪問請求的響應(yīng), 副本判斷裝置,配置為如果所述數(shù)據(jù)位于HDD,進一步判斷在所述副本區(qū)是否包括所述數(shù)據(jù)的SSD副本, 副本區(qū)響應(yīng)構(gòu)造裝置,配置為如果在副本區(qū)包括所述數(shù)據(jù)的SSD副本,根據(jù)所述SSD副本構(gòu)造對所述訪問請求的響應(yīng),以及 副本創(chuàng)建裝置,配置為如果在副本區(qū)不包括所述數(shù)據(jù)的SSD副本,基于HDD中的所述數(shù)據(jù)在副本區(qū)創(chuàng)建新SSD副本,以便基于所述新SSD副本構(gòu)造對所述訪問請求的響應(yīng)。
12.如權(quán)利要求11所述的設(shè)備,其中所述SSD中存儲非副本數(shù)據(jù)的存儲空間作為所述非副本區(qū),以及所述SSD中未被所述非副本區(qū)占用的SSD存儲空間作為所述副本區(qū)。
13.如權(quán)利要求12所述的設(shè)備,該設(shè)備進一步包括: 副本區(qū)空間釋放裝置,配置為在有新的非副本數(shù)據(jù)需要存儲到SSD的情況下,釋放所述副本區(qū)的至少一部分存儲空間,以及 副本區(qū)空間重新分配裝置,配置為將所釋放的存儲空間重新分配給非副本區(qū)以存儲所述新的非副本數(shù)據(jù)。
14.如權(quán)利要求11所述的設(shè)備,其中所述SSD中存儲非副本數(shù)據(jù)的存儲空間作為所述非副本區(qū),所述SSD中一部分空閑存儲空間作為所述緩沖區(qū),以及未被所述非副本區(qū)和所述緩沖區(qū)占用的SSD存儲空間作為所述副本區(qū)。
15.如權(quán)利要求14所述的設(shè)備,進一步包括: 緩沖區(qū)存儲裝置,配置為在有新的非副本數(shù)據(jù)需要存儲到SSD的情況下,使用所述緩沖區(qū)的存儲空間來存儲所述新的非副本數(shù)據(jù)。
16.如權(quán)利要求15所述的設(shè)備,進一步包括: 緩沖區(qū)容量檢查裝置,配置為檢查緩沖區(qū)的容量, 副本區(qū)空間釋放裝置,配置為如果所述容量低于緩沖區(qū)閾值,則釋放所述副本區(qū)的至少一部分存儲空間,以及 副本區(qū)空間重新分配裝置,配置為將所釋放的存儲空間重新分配給所述緩沖區(qū)。
17.如權(quán)利要求13或16所述的設(shè)備,其中所述副本區(qū)被進一步劃分為專用副本區(qū)和動態(tài)副本區(qū),并且其中副本區(qū)空間釋放裝置包括: 配置為僅釋放動態(tài)副本區(qū)的至少一部分存儲空間的裝置。
18.如權(quán)利要求17所述的設(shè)備,其中配置為僅釋放動態(tài)副本區(qū)的至少一部分存儲空間的裝置包括: 配置為從動態(tài)副本區(qū)中逐出至少一部分SSD副本以釋放存儲空間的裝置,其中保留在所述副本區(qū)中的SSD副本具有較低的逐出指數(shù)。
19.如權(quán)利要求17所述的設(shè)備,其中所述副本創(chuàng)建裝置包括: 配置為優(yōu)先使用專用副本區(qū)的存儲空間來創(chuàng)建所述新SSD副本的裝置,以及配置為在專用副本區(qū)的存儲空間不足以創(chuàng)建所述新SSD副本的情況下,使用動態(tài)副本區(qū)的存儲空間來創(chuàng)建所述新SSD副本的裝置。
20.如權(quán)利要求11到6中任意一項所述的設(shè)備,其中所述副本創(chuàng)建裝置包括: 配置為優(yōu)先使用來自具有較高穩(wěn)定性的SSD塊的副本區(qū)來創(chuàng)建所述新SSD副本的裝置,其中所述穩(wěn)定性指的是向該SSD塊增減非副本數(shù)據(jù)的頻率。
【文檔編號】G06F12/08GK104375961SQ201310357278
【公開日】2015年2月25日 申請日期:2013年8月16日 優(yōu)先權(quán)日:2013年8月16日
【發(fā)明者】余江, 蔣紫東, 曾曉華, 廖夢澤, 王挺, 史戰(zhàn)偉 申請人:國際商業(yè)機器公司