專利名稱:一種存儲系統(tǒng)中檢索數據的方法和設備的制作方法
技術領域:
本發(fā)明一般涉及存儲系統(tǒng),更具體地,涉及ー種存儲系統(tǒng)中檢索數據的方法和設備。
背景技術:
目前,數據已經成為企業(yè)最重要的資源之一。1998年圖靈獎獲得者JimGray曾斷言現在每18個月新增的存儲量等于有史以來存儲量之和。根據預測,2020年數據宇宙將達到35. 2ZB(1ZB = I百萬PB),比2009的O. 8ZB增加44倍(本發(fā)明中全部數據量或者存儲空間単位的B為字節(jié))。數據量的幾乎指數型的增長,使得企業(yè)需要不斷購置大量的存儲設備來應對不斷增長的存儲需求。但是研究發(fā)現,企業(yè)的存儲利用率往往不足50%,存儲投資回報率水平較低。為了滿足數據存儲高增長的要求,提出了高效存儲(Space Efficient)理念,旨在緩解存儲系統(tǒng)的空間增長問題,縮減數據占用空間,簡化存儲管理,最大程度地利用已有資源,降低成本。高效存儲的基本策略主要有存儲資源整合、動態(tài)存儲容量配置、縮減存儲容量、信息生命周期管理和降低能耗,高效存儲技術基于這五種基本策略來實現高效的存儲。高效存儲策略的ー個重要技術就是自動精簡配置(Thin Provisioning),是ー種全新的存儲空間管理技術,它的核心原理是“欺騙”操作系統(tǒng),讓其認為存儲系統(tǒng)中有很大的存儲空間,而實際上的物理存儲空間并沒有那么大。傳統(tǒng)的存儲系統(tǒng)中,為確保存儲容量在一定的時間內足夠使用,用戶往往會部署多于實際需求的充足物理存儲空間。但在實際使用過程中,尤其是初始階段,部署的存儲容量通常都未充分利用。例如,ー個中小企業(yè)計劃5年內計劃使用的存儲容量為2TB,第一年使用50GB,第二年達到200GB,第三年達到900GB,第4年為I. 2TB,第5年達到2TB,則傳統(tǒng)的存儲系統(tǒng)中需要一次部署2TB的存儲空間,需要很高的投資,但是存儲空間的利用率很低。而使用自動精簡配置技術的存儲系統(tǒng),不會一次性的劃分過大的空間給某項應用,而是根據該項應用實際所需要的容量,多次的少量的分配給應用程序,當該項應用所產生的數據增長,分配的容量空間已不夠的時候,系統(tǒng)會再次從后端存儲池中補充分配一部分存儲空間。這樣,用戶可以第一年只配置50GB的實際物理存儲空間,在第二年再増加150GB的物理存儲空間,以此類推。使用這樣的技術,無須改變用戶存儲系統(tǒng)的體系結構,還能夠減少超量配置,大幅提高存儲空間利用效率,降低初始投資成本,降低總功耗,從而降低企業(yè)運營成本。目前,IBM、HDS、EMC、3PAR的高端磁盤陣列均支持該項技術。使用自動精簡配置的存儲系統(tǒng)與傳統(tǒng)的存儲系統(tǒng)數據的組織方式不同,導致二者的數據索引方式不同,從而支持上述功能。使用自動精簡配置的存儲系統(tǒng)檢索數據耗時更長,性能會變差,實際上是ー種以時間換空間的技術方案。因此,有必要提出新的技術方案,來減少應用自動精簡配置技術的存儲系統(tǒng)的檢索數據時間
發(fā)明內容
本發(fā)明提出了一種存儲系統(tǒng)中檢索數據的方法和設備,該存儲系統(tǒng)應用自動精簡配置技術,本發(fā)明的方法和系統(tǒng)能夠進ー步減少現有的高效存儲系統(tǒng)的IO訪問時間,提高IO訪問效率。根據本發(fā)明的ー個方面,提供了一種存儲系統(tǒng)中檢索數據的方法,該方法包括接收ー寫操作請求;建立所述寫操作的邏輯塊地址與物理塊地址的對應關系;判斷在存儲的元數據中加入上述對應關系后,使用映射表計算的有效數據比例是否大于預設閾值;響應于使用映射表計算的有效數據比例不大于所述預設閾值,在所述存儲的元數 據的B-tree數據結構中加入所述對應關系;響應于使用映射表計算的有效數據比例大于所述預設閾值,判斷所述存儲的元數據是否以B-tree數據結構存儲,響應于所述存儲的元數據以B-tree數據結構存儲,將該以B-tree數據結構存儲的元數據存儲為包含上述對應關系的元數據的映射表;以及在上述物理塊地址寫入該寫操作請求要求寫入的數據。根據本發(fā)明的另ー個方面提供了一種存儲系統(tǒng)中檢索數據的設備,該設備包括接收裝置,被配置為接收一寫操作請求;對應關系建立裝置,被配置為對所述寫操作請求,建立所述寫操作的邏輯塊地址與物理塊地址的對應關系;第一判斷裝置,被配置為判斷在存儲的元數據加入上述對應關系后,使用映射表計算的有效數據比例是否大于預設閾值;B-tree索弓I對應關系加入裝置,被配置為響應于使用映射表計算的有效數據比例不大于所述預設閾值,在所述存儲的元數據的B-tree數據結構中加入所述對應關系;第二判斷裝置,被配置為響應于使用映射表計算的有效數據比例大于所述預設閾值,判斷所述存儲的元數據是否以B-tree數據結構存儲;轉換裝置,被配置為響應于所述存儲的元數據以B-tree數據結構存儲,將該以B-tree數據結構存儲的元數據存儲為包含上述對應關系的元數據的映射表;以及寫入裝置,被配置為在上述物理塊地址寫入該寫操作請求要求寫入的數據。。
通過對附圖中本發(fā)明示例實施例方式的更詳細描述,本發(fā)明的上述、以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,相同的參考標號通常代表本發(fā)明示例實施例方式中的相同部件。圖I示出了現有的自動精簡配置存儲技術中的體系結構;圖2示出了ー個映射表的結構及其中數據表達的含義;圖3示出了根據本發(fā)明的一種實施方式的一種存儲系統(tǒng)中檢索數據的方法流程;以及圖4示出了根據本發(fā)明的一種實施方式的一種存儲系統(tǒng)中檢索數據的設備結構。
具體實施方式
將參照附圖更加詳細地描述本發(fā)明的優(yōu)選實施方式,在附圖中顯示了本發(fā)明的優(yōu)選實施例。然而,本發(fā)明可以以各種形式實現而不應該理解為被這里闡述的實施例所限制。相反,提供這些實施例是為了使本發(fā)明更加透徹和完整,并且,完全將本發(fā)明的范圍傳達給本領域的技術人員。目前常用的存儲系統(tǒng)一般都是采用虛擬存儲結構,即將實際的物理硬盤虛擬成為多個卷,可以認為這多個卷就是多個虛擬盤。例如兩個3G的物理硬盤可能被主機虛擬成為3個2G的虛擬盤,使用3個盤符標記來給主機使用;每個虛擬盤都可以支持自動精簡配置存儲技術。存儲系統(tǒng)分配存儲空間時,分配的單位為粒(Grain),粒的単位可以為32K,64K,128Κ或者256Κ等等。從技術上來看,無論是虛擬化存儲系統(tǒng)還是實際的物理存儲系統(tǒng),都可以支持自動精簡配置存儲技術。圖I示出了現有的自動精簡配置存儲技術中的體系結構,來自CPU100的輸入輸出
(IO)操作,包括寫操作和讀操作,被高速緩存模塊102中的緩存代理1021獲得,高速緩存模 塊102中的緩存代理1021主要是用于提高IO速度的,可以將ー些常用的客戶數據放置到高速緩存中,當需要訪問數據時,首先訪問高速緩存,如果高速緩存中存在該數據,稱為高速緩存命中,就無需到低速存儲器(例如硬盤,磁帶等存儲系統(tǒng)中用于存儲用戶數據的設備)中訪問該數據,來提高訪問速度;如果高速緩存未命中,就通過自動精簡配置模塊103,對高速緩存模塊102要進行IO操作的數據的地址進行重新映射,得到數據的物理地址,訪問低速存儲器(或者虛擬盤)104的該地址。具體來說,對于寫操作,根據圖I,首先CPU的寫操作通過高速緩存模塊102中的緩存代理1021進入自動精簡配置模塊103的空間分配器1031,空間分配器根據寫操作的邏輯塊地址,為其分配ー個物理塊地址,然后對低速存儲器104中的元數據的映射表1041進行修改,在元數據中建立起上述分配的物理塊地址與寫操作的邏輯塊地址的映射關系;最后將寫操作相關的數據寫入到上述分配的物理塊地址,一次寫操作分配的地址空間大小為ー個粒。而對于讀操作,根據圖1,首先CPU的讀操作通過高速緩存模塊102中的緩存代理1021進入自動精簡配置模塊103的空間分配器1031,空間分配器根據讀操作的邏輯塊地址,查詢元數據的映射表中該邏輯塊地址對應的物理塊地址,然后從低速存儲器104的物理塊地址讀出該數據。可見每一次的IO操作都要至少訪問低速存儲器兩次,一次是獲得元數據的映射表中的地址映射關系,另外一次是訪問客戶數據,造成IO操作時間較長的問題。配置有自動精簡配置存儲技術的虛擬盤對于隨機讀操作在高速緩存未命中時,性能大約是配置傳統(tǒng)存儲技術磁盤的1/2 ;配置有自動精簡配置存儲技術的虛擬盤對于隨機寫操作在高速緩存未命中時,性能大約是配置傳統(tǒng)存儲技術磁盤的1/3。因此,有必要提高配置有自動精簡配置存儲技術的存儲系統(tǒng)的I/O性能。由于在自動精簡配置存儲技術中,實際的物理存儲空間一般小于等于CPU分配的存儲空間式,因此,在這種存儲技術中,數據的組織方式與通常的存儲技術不同,導致自動精簡配置存儲技術數據的索引方式也與通常的存儲索引不同。通常的存儲技術中,由于實際的物理存儲空間等于CPU分配的存儲空間式,因此,CPU進行讀寫操作時,邏輯空間與物理存儲空間可以認為是一一對應的,不需要存儲其映射關系。而在自動精簡配置存儲技術數據中,在低速存儲器上存儲了元數據,用于將CPU的IO操作的邏輯地址映射到對應的物理存儲地址。因此,支持自動精簡配置存儲技術的低速存儲器(或虛擬盤)中通常包含了元數據和用戶數據。元數據采用B-tree數據結構存儲。本發(fā)明提出了一種元數據的新的數據結映射表,該映射表數據結構含義更清楚,如圖2所示。圖2示出了ー個元數據的映射表結構及其中數據表達的含義。該映射表看起
來像是ー個矩陣,實際上,是以第一行、第二行......,第五行的形式存儲來表達的從邏輯
塊地址到物理塊地址的映射,例如圖I的映射表中表達了 25個邏輯塊地址和物理塊地址的映射關系,具體來說,映射表中數據O表示第O (從第一行開始數為第O個數據)個邏輯塊對應著第O個物理塊,映射表中數據I表示第4 (從第一行開始數為第4個數據)個邏輯塊對應著第I個物理塊,映射表中數據2表示第5 (從第一行開始數為第5個數據)個邏輯塊對應著第2個物理塊。 使用上述元數據的映射表的數據結構存儲元數據,所使用的存儲空間滿足下式元數據的映射表所占的存儲空間=虛擬存儲能力/粒的空間女8舉例來說,對于ー個2T字節(jié)(Bytes)的虛擬存儲能力而言,元數據的映射表需要512M字節(jié)的存儲空間,因此,使用映射表存儲元數據,映射表所占用的存儲空間對于整個預定的數據存儲空間而言是固定的。但是,元數據的映射表在低速存儲器(例如磁盤,磁帶等)初始使用階段,由于大部分映射表中的元素還沒有被填入數據,映射表中有效數據較少,數據是稀疏的。隨著低速存儲器空間的使用,映射表中有效數據會越來越稠密。但是映射表本身占用的存儲空間無論在數據稀疏還是稠密時,都是ー樣的,并且映射表中地址的映射關系一旦建立后就不會刪除,因此,映射表中的有效數據是持續(xù)增長的。但是映射表本身占用的存儲空間是不變的。而在現有支持自動精簡配置存儲技術的存儲系統(tǒng)中,低速存儲器上存儲的元數據的B-Tree數據結構,在低速存儲器初始使用階段,是ー個較小的樹,占用的存儲空間少;隨著低速存儲器空間的使用,B-tree越來越大,占用的存儲空間也越來越大。表I給出元數據中不同的有效數據比例對應的映射表及B-Tree所需的存儲空間。其中B-tree的每個節(jié)點有512個條目。其中有效數據的比例為映射表中非空數據占映射表全部數據的百分比??梢?,當使用映射表,元數據中有效數據比例為50%吋,B-tree數據結構所需的存儲空間與映射表數據結構所需的存儲空間相同。顯然,這種情況下,如果有效數據繼續(xù)增長,B-tree數據結構占用的存儲空間將大于映射表數據結構占用的存儲空間。當然,這里50%的比例只是針對上述特定實例,在不同的情況下,這個比例可能不同,但是可以知道,存在著這樣的閾值,當使用映射表,有效數據的比例小于該閾值時,存儲元數據的B-tree數據結構更節(jié)約存儲空間,當使用映射表,有效數據的比例大于該閾值時,存儲映射表更節(jié)約存儲空間。表I不同的有效數據比例對應的映射表及B-Tree所需的存儲空間映射表所有效數據的有效數據占B-tree的葉B-tree的非B-tree所需
需的存儲比例用的存儲空子節(jié)點個葉子節(jié)點的存儲空間
空間間(MB)數個數(MB) (MB)
25650%1283 276865256
25630%761945639152
25610%2265531351本發(fā)明考慮到,在支持自動精簡配置存儲技術的存儲系統(tǒng)的IO訪問性能影響因素中,主要是元數據的訪問,如果能加速元數據的訪問,則就能提高IO訪問性能 。低速存儲器的訪問速度眾所周知,與高速緩存器(cache)相比太慢,因此ー個直觀的想法就是在運行時將元數據存儲在高速緩存中,因為高速緩存是揮發(fā)性存儲,即斷電后存儲內容消失,因此在運行結束后需要將高速緩存中的元數據存儲到低速存儲器中。但是,通常的高速緩存空間較小,還要存儲用戶數據,所以只能在高速緩存中放入很少量的元數據,現有的在支持自動精簡配置存儲技術的存儲系統(tǒng)中,就在高速緩存中存儲全部(B-tree需要的存儲空間小時)或部分的元數據的B-tree數據結構(B-tree需要的存儲空間大時),來加速性能。在元數據的B-tree數據結構占用的存儲空間大時,對于在高速緩存中無法檢索到的元數據,需要去訪問低速存儲器中的元數據,降低了存儲系統(tǒng)的IO訪問效率。既然低速存儲器的訪問時間較長,而高速緩存的空間有很有限,直接利用高速緩存的方案有不可行,可以考慮采用高速存儲器來存儲元數據,來提高訪問效率。在一種實施方式中,存儲元數據的高速存儲器可以采用固態(tài)硬盤(SSD, solid state disk)。固態(tài)硬盤是目前倍受存儲界廣泛關注的存儲新技術,它被看作是ー種革命性的存儲技術,已經給存儲行業(yè)甚至計算機體系結構帶來深刻變革。SSD與傳統(tǒng)低速存儲器不同,它是ー種電子器件而非物理機械裝置,它具有體積小、能耗小、搞干擾能力強、尋址時間極小(甚至可以忽略不計)、10PS高、I/O性能高等特點。一種簡單的實施方式就是直接利用SSD替代低速存儲器來存儲元數據的B-tree數據結構。但是SSD是ー種相對較貴的資源,在存儲系統(tǒng)中還經常被其它模塊用于提高性能,因此,SSD的使用過程中,通常是要節(jié)約利用的,節(jié)約下來的資源可以被其它模塊用于提高其它的訪問性能??紤]到元數據在初始數據稀疏時,可以使用B-tree數據結構來存儲,這樣可以減少存儲空間。但是,當元數據中數據變得稠密,達到一定的程度時,也就是說,如果使用映射表結構,有效數據的比例達到設定的閾值時,存儲B-tree所需的空間將大于存儲映射表所需的存儲空間。本發(fā)明公開了ー種存儲系統(tǒng)中檢索數據的方法,該方法能夠減少所述存儲系統(tǒng)檢索訪問數據的時間,所述存儲系統(tǒng)支持自動精簡配置存儲技術,并且在所述存儲系統(tǒng)中,使用高速存儲器存儲元數據,元數據映射表的建立過程主要和IO中的寫操作相關,圖3示出了該方法的流程,根據圖3,該方法包括在步驟S301,接收ー寫操作請求;在步驟S302,建立所述寫操作的邏輯塊地址與物理塊地址的對應關系;在步驟S303,判斷在存儲的元數據中加入上述對應關系后,使用映射表計算的有效數據比例是否大于預設閾值;響應于使用映射表計算的有效數據比例不大于所述預設閾值,在步驟S304,在所述存儲的元數據的B-tree數據結構中加入所述對應關系,然后到步驟S308,在上述對應關系的物理塊地址寫入該寫操作請求要求寫入的數據;響應于使用映射表計算的有效數據比例大于所述預設閾值,在步驟S305,判斷所述存儲的元數據是否以B-tree數據結構存儲;響應于所述存儲的元數據以B-tree數據結構存儲,在步驟S306,將該以B-tree數據結構存儲的元數據存儲為包含上述對應關系的元數據的映射表,然后到步驟S308。響應于使用映射表計算的有效數據比例大于所述預設閾值,并且所述存儲的元數據不以B-tree數據結構存儲而,在步驟S307,判斷所述存儲的元數以映射表方式存儲,并在元數據的映射表中加入所述對應關系,然后到步驟S308。在一種實施方式中,響應于元數據的映射表很大,可以將元數據分成若干個部分,每個部分可以占用相同大小的存儲空間,也可以占用不同大小的存儲空間。對于元數據的每一部分,執(zhí)行如圖3所示的方法,在計算有效數據比例時,可以將元數據的一部分當成一個獨立的元數據處理,這樣有效數據比例是該一部分元數據內的使用映射表計算的有效數據比例。在一種實施方式中,存儲元數據的高速存儲器為SSD。當映射表中有效數據稀疏,既有效數據比例小于預設閾值時,可以在SSD存儲元數據的B-tree數據結構,這樣節(jié)省的空間可以被其它模塊用于加速性能,對應每次的寫操作,將新建立的映射關系插入到元數據的B-tree數據結構中,B-tree數據結構的插入操作對于本領域技術人員是公知的,這里不再贅述;當有效數據變得稠密,既有效數據比例大于預設閾值時,將元數據的B-tree數據結構展開成為映射表,并且將新建立的映射關系加入到映射表中,再存儲到該SSD中。B-tree的展開方式有很多種算法,可以在數據結構的教科書或算法集中獲得,是本領域技術人員公知的方法,在此不再贅述。并且在上述實施方式下,如果元數據被分成多個部分,可能在SSD中,存儲該元數據若干部分的映射表,以及一部分元數據的B-tree數據結構。存儲的該元數據若干部分的映射表是經過圖3的方法逐步建立的。這時,由于高速緩存器的速度一般還要高于SSD接近10倍,高速緩存器可以被用作SSD中元數據的高速緩存,如果高速緩存命中,還可以提高IO速度。優(yōu)選的方式中,高速緩存用于緩存一部分元數據的B-tree數據結構,如果還有多余的高速緩存空間,再緩存該元數據若干部分的映射表,或者,如果有更足夠的高速緩存空間,還可以在高速緩存中建立該元數據若干部分的映射表的B-tree數據結構。但是要注意,需要給客戶數據的高速緩存留下足夠的空間,否則,就失去了高速緩存器的本質作用,反而降低訪問效率。在另外ー種實施方式中,用于存儲元數據的B-tree數據結構的高速存儲器為高速緩存器,用于存儲元數據的映射表的高速存儲器為SSD,由于高速緩存器為易失性存儲 器,掉電后存儲信息丟失,所以還要在低速存儲器中存儲元數據的B-tree數據結構,而且保持與高速緩存器中的元數據的B-tree數據結構同歩。這里的同步目的,是為了在高速緩存器掉電時,仍然保留相關的元數據,因此,這種同步的要求并不嚴格,可以在高速緩存更新后若干時間后進行,甚至,如果電源足夠可靠,可以在電源關閉前做一次同步即可。具體如何保持同步,可以采用現有數據同步的任何方式,或者獨立編程。在另外的實施方式中,也可以采用其它非易失性存儲器件來存儲B-tree數據結構,并與高速緩存器中的B-tree數據結構保持上述意義上的同歩。在上述實施方式中,當映射表中有效數據稀疏,即有效數據比例小于預設閾值吋,可以在高速緩存中存儲元數據的B-tree數據結構,這樣不僅提高訪問效率,節(jié)省的SSD空間可以被其它模塊用于加速性能,由于此時B-tree所占的存儲空間小,可以在高速緩存中存儲當前元數據的整個B-tree數據結構,對應毎次的寫操作,將新建立的映射關系插入到高速緩存元數據的B-tree數據結構中,并且同步低速存儲器中存儲的元數據的B-tree數據結構,這里的同步與前文的同步為同一含義;當映射表中有效數據變得稠密,即如果使 用映射表結構的有效數據比例首次大于預設閾值時,這時還是在高速緩存中將元數據以B-tree數據結構存儲,將同步后的低速存儲器中的元數據的B-tree數據結構展開為包含上述對應關系的元數據的映射表,并遷移到SSD中存儲;如果不是首次有效數據比例大于預設閾值,則此時元數據的映射表已經存儲在SSD中,只要在SSD存儲的映射表中加入映射關系即可。后續(xù)高速緩存的應用可以根據高速緩存能提供給元數據使用的空間來確定,如果空間很大,可以存放元數據的B-tree數據結構,如果不是很大,可以存放元數據的部分映射表,或者部分B-tree數據結構,等等。并且在上述實施方式下,如果元數據被分成多個部分,可能在SSD中,存儲該元數據若干部分的映射表,在高速緩存中,存儲一部分元數據的B-tree數據結構,同時在低速存儲器中存儲與高速緩存中的B-tree數據結構同步的B-tree數據結構,同步的含義與前文相同。存儲的該元數據若干部分的映射表是經過圖3的方法逐步建立的。這時,如果高速緩存還有多余空間可以用于存儲元數據,還可以緩存該元數據若干部分的映射表,或者,如果有更足夠的高速緩存空間,還可以在高速緩存中建立該元數據若干部分的映射表的B-tree數據結構。但是同樣要注意,需要給客戶數據的高速緩存留下足夠的空間,否則,就失去了高速緩存器的本質作用,反而降低訪問效率。在上述實施方式中,如果低速存儲器的讀時間為SSD讀時間的100倍,SSD的寫時間是讀時間的3倍,對2TB的虛擬存儲能力,粒的大小為32K,SSD上的元數據為358MB,SSD中的元數據占全部元數據的70%,高速緩存中的元數據占全部元數據的30%時,高速緩存中的元數據的命中率為50%,對于包含70%讀操作,30%寫操作的存儲系統(tǒng),IO訪問的平均效率能夠提高50%。在上述各種實施方式中,如果存儲系統(tǒng)接收到讀請求時,可以從元數據中獲得讀請求的邏輯塊地址映射的物理塊地址,從而從該物理塊地址讀取該數據。在一種優(yōu)選的實施方式中,為了提高圖3中步驟S303和步驟S305的效率,可以使用標記記錄當前元數據的是以B-tree數據結構的存儲方式存儲還是以映射表數據結構的存儲方式存儲,并且響應于當前元數據的存儲方式改變,更新該標記。而且還可以使用標記記錄元數據的每個部分的存儲位置,并且響應于該元數據的每個部分的存儲位置改變,更新該標記。甚至,還可以記錄當前元數據中有效數據的個數以及當前元數據的映射表中全部數據的個數,這樣可以迅速計算出元數據的映射表中加入上述對應關系后,新的有效數據比例。
在同一個發(fā)明構思下,本發(fā)明還公開了ー種存儲系統(tǒng)中檢索數據的設備,圖4示出了其設備結構,所述存儲系統(tǒng)支持自動精簡配置存儲技術,并且使用高速存儲器存儲元數據,根據圖4,該設備包括接收裝置401,被配置為接收一寫操作請求;對應關系建立裝置402,被配置為對所述寫操作請求,建立所述寫操作的邏輯塊地址與物理塊地址的對應關系;第一判斷裝置403,被配置為判斷在存儲的元數據加入上述對應關系后,使用映射表計算的有效數據比例是否大于預設閾值;B-tree索引對應關系加入裝置404,被配置為響應于使用映射表計算的有效數據比例不大于所述預設閾值,在所述存儲的元數據的B-tree數據結構中加入所述對應關系;第二判斷裝置405,被配置為響應于使用映射表計算的有效數據比例大于所述預設閾值,判斷所述存儲的元數據是否以B-tree數據結構存儲;轉換裝置406,被配置為響應于所述存儲的元數據以B-tree數據結構存儲,將該以B-tree數據結構存儲的元數據存儲為包含上述對應關系的元數據的映射表;映射表對應關系加入裝置407,被配置為被配置為響應于使用映射表計算的有效數據比例大于所述預設閾值,并且所述存儲的元數據不以B-tree數據結構存儲而,則確定所述存儲的元數據以映射表方式存儲,并在存儲的元數據的映射表中加入所述對應關系;以及寫入裝置408,被配置為在上述 對應關系的物理塊地址寫入該寫操作請求要求寫入的數據。在一種實施方式中,如果元數據的映射表很大,可以將元數據分成若干個部分,每個部分可以占用相同大小的存儲空間,也可以占用不同大小的存儲空間。對于元數據的每一部分,第一判斷裝置判斷其中的有效數據比例是否大于預設閾值,使用映射表計算的有效數據比例是該一部分元數據內的使用映射表計算的有效數據比例。圖4所示的設備可以加入圖I的自動精簡配置模塊103中,成為該模塊內部ー個単獨的設備,也可以在圖I的外部成為獨立的設備,或者,還可以將其中的部分模塊加入到圖I的某些模塊,將另外一些模塊加入到圖I的其它模塊中,本領域技術人員可以知道,有各種加入形式,都在本發(fā)明的保護范圍之中。在一種實施方式中,存儲元數據的高速存儲器為SSD。在這種實施方式下,轉換裝置可以包括展開裝置,被配置為將SSD中元數據的B-tree數據結構展開成為映射表的數據結構;矩陣數據對應關系加入裝置,被配置為將新建立的映射關系加入到映射表的數據結構中。在另外ー種實施方式中,用于存儲元數據的B-tree數據結構的高速存儲器為高速緩存器,用于存儲元數據的映射表的高速存儲器為SSD,并且在低速存儲器中存儲元數據的B-tree數據結構,該設備還包括同步裝置,被配置為將所述低速存儲器中存儲元數據的B-tree數據結構與所述高速緩存器中存儲的元數據的B-tree數據結構同步。在這種實施方式下,轉換裝置可以包括展開裝置,被配置為將低速存儲器中元數據的B-tree數據結構展開成為映射表的數據結構;映射表對應關系加入裝置,被配置為將新建立的映射關系加入到映射表的數據結構中;以及遷移裝置,被配置為將映射表對應關系加入裝置得到的映射表遷移到該SSD中存儲。同樣,為了提高第一判斷裝置和第二判斷裝置的效率,在優(yōu)選的實施方式中,使用標記記錄當前元數據是以B-tree數據結構的存儲方式存儲還是以映射表的存儲方式存儲,并且響應于當前元數據的存儲方式改變,更新該標記。還可以使用標記記錄所述元數據的每個部分的存儲位置,并且響應于該元數據的每個部分的存儲位置改變,更新該標記。
雖然這里參照附圖描述了本發(fā)明的示例性實施例,但是應該理解本發(fā)明不限于這些精確的實施例,并且在不背離本發(fā)明的范圍和宗g的情況下,本領域普通技術人員能對實施例進行各種變化的修改。所有這些變化和修改意欲包含在所附權利要求中限定的本發(fā)明的范圍中。并且根據上述描述,所屬技術領域的技術人員知道,本發(fā)明可以體現為裝置、方法或計算機程序產品。因此,本發(fā)明可以具體實現為以下形式,即,可以是完全的硬件、完全的軟件(包括固件、駐留軟件、微代碼等)、或者本文一般稱為“電路”、“模塊”或“系統(tǒng)”的軟件部分與硬件部分的組合。此外,本發(fā)明還可以采取體現在任何有形的表達介質(mediumof expression)中的計算機 程序產品的形式,該介質中包含計算機可讀的程序碼??梢允褂靡粋€或多個計算機可讀的或計算機可讀的介質的任何組合。計算機可讀的或計算機可讀的介質例如可以是——但不限于——電的、磁的、光的、電磁的、紅外線的、或半導體的系統(tǒng)、裝置、器件或傳播介質。計算機可讀介質的更具體的例子(非窮舉的列表)包括以下有一個或多個導線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、諸如支持因特網或內部網的傳輸介質、或者磁存儲器件。注意計算機可讀的或計算機可讀的介質甚至可以是上面印有程序的紙張或者其它合適的介質,這是因為,例如可以通過電掃描這種紙張或其它介質,以電子方式獲得程序,然后以適當的方式加以編譯、解釋或處理,并且必要的話在計算機存儲器中存儲。在本文件的語境中,計算機可讀的或計算機可讀的介質可以是任何含有、存儲、傳達、傳播、或傳輸供指令執(zhí)行系統(tǒng)、裝置或器件使用的或與指令執(zhí)行系統(tǒng)、裝置或器件相聯系的程序的介質。計算機可讀的介質可包括在基帶中或者作為載波一部分傳播的、由其體現計算機可讀的程序碼的數據信號。計算機可讀的程序碼可以用任何適當的介質傳輸,包括——但不限于——無線、電線、光纜、RF等等。用于執(zhí)行本發(fā)明的操作的計算機程序碼,可以以ー種或多種程序設計語言的任何組合來編寫,所述程序設計語言包括面向對象的程序設計語言——諸如Java、Smalltalk、C++之類,還包括常規(guī)的過程式程序設計語言——諸如” C”程序設計語言或類似的程序設計語言。程序碼可以完全地在用戶的計算上執(zhí)行、部分地在用戶的計算機上執(zhí)行、作為ー個獨立的軟件包執(zhí)行、部分在用戶的計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在后一種情形中,遠程計算機可以通過任何種類的網絡——包括局域網(LAN)或廣域網(WAN)——連接到用戶的計算機,或者,可以(例如利用因特網服務提供商來通過因特網)連接到外部計算機。此外,本發(fā)明的流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數據處理裝置的處理器,從而生產出ー種機器,使得通過計算機或其它可編程數據處理裝置執(zhí)行的這些指令,產生實現流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置(means)。也可以把這些計算機程序指令存儲在能指令計算機或其它可編程數據處理裝置以特定方式工作的計算機可讀介質中,這樣,存儲在計算機可讀介質中的指令產生ー個包括實現流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruction means)的制造品,也可以把計算機程序指令加載到計算機或其它可編程數據處理裝置上,使得在計算機或其它可編程數據處理裝置上執(zhí)行一系列操作步驟,以產生計算機實現的過程,從而在計算機或其它可編程裝置上執(zhí)行的指令就提供實現流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。附圖中的流程圖和框圖,圖示了按照本發(fā)明各種實施例的系統(tǒng)、方法和計算機程序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含ー個或多個用于實現規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個接連地表示的方框實際 上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現,或者可以用專用硬件與計算機指令的組合來實現。
權利要求
1.一種存儲系統(tǒng)中檢索數據的方法,該方法包括 接收ー寫操作請求; 建立所述寫操作的邏輯塊地址與物理塊地址的對應關系; 判斷在存儲的元數據中加入上述對應關系后,使用映射表計算的有效數據比例是否大于預設閾值; 響應于使用映射表計算的有效數據比例不大于所述預設閾值,在所述存儲的元數據的B-tree數據結構中加入所述對應關系; 響應于使用映射表計算的有效數據比例大于所述預設閾值,判斷所述存儲的元數據是否以B-tree數據結構存儲,響應于所述存儲的元數據以B-tree數據結構存儲,將該以B-tree數據結構存儲的元數據存儲為包含上述對應關系的元數據的映射表;以及 在上述物理塊地址寫入該寫操作請求要求寫入的數據。
2.根據權利要求I所述的方法,其中還包括 響應于使用映射表計算的有效數據比例大于所述預設閾值,并且所述存儲的元數據不以B-tree數據結構存儲,則確定所述存儲的元數據以映射表存儲,并在元數據的映射表中加入所述對應關系。
3.根據權利要求I或2所述的方法,其中所述存儲系統(tǒng)支持自動精簡配置存儲技木,所述元數據為支持自動精簡配置存儲技術的低速存儲器的元數據的一部分。
4.根據權利要求1-3之一所述的方法,其中所述存儲系統(tǒng)使用高速存儲器存儲元數據,所述高速存儲器為SSD。
5.根據權利要求4所述的方法,其中響應于存儲的元數據中加入上述對應關系后,使用映射表計算的有效數據比例大于預設閾值,并且所述存儲的元數據以B-tree數據結構存儲,則所述將該以B-tree數據結構存儲的元數據存儲為包含上述對應關系的元數據的映射表還包括 將元數據的B-tree數據結構展開成為映射表,并且將所述對應關系加入到映射表中,再存儲到該SSD中。
6.根據權利要求1-3之一所述的方法,其中所述存儲系統(tǒng)使用高速存儲器存儲元數據,用于存儲元數據的B-tree數據結構的高速存儲器為高速緩存器,用于存儲元數據的映射表的高速存儲器為SSD,并且在低速存儲器中存儲元數據的B-tree數據結構,而且與高速緩存器中存儲的元數據的B-tree數據結構同歩。
7.根據權利要求6所述的方法,其中響應于存儲的元數據中加入上述對應關系后,使用映射表計算的有效數據比例大于預設閾值,并且所述存儲的元數據以B-tree數據結構存儲,則所述將該以B-tree數據結構存儲的元數據存儲為包含上述對應關系的元數據的映射表還包括將低速存儲器中的元數據的B-tree數據結構展開為包含上述對應關系的元數據的映射表,并遷移到SSD中存儲。
8.根據權利要求1-3之一所述的方法,其中使用標記記錄當前元數據是以B-tree數據結構的存儲方式存儲還是以映射表的存儲方式存儲,并且響應于當前元數據的存儲方式改變,更新該標記。
9.根據權利要求1-3之一所述的方法,其中使用標記記錄元數據的每個部分的存儲位置,并且響應于該元數據的每個部分的存儲位置改變,更新該標記。
10.一種存儲系統(tǒng)中檢索數據的設備,該設備包括 接收裝置,被配置為接收一寫操作請求; 對應關系建立裝置,被配置為對所述寫操作請求,建立所述寫操作的邏輯塊地址與物理塊地址的對應關系; 第一判斷裝置,被配置為判斷在存儲的元數據加入上述對應關系后,使用映射表計算的有效數據比例是否大于預設閾值; B-tree索引對應關系加入裝置,被配置為響應于使用映射表計算的有效數據比例不大于所述預設閾值,在所述存儲的元數據的B-tree數據結構中加入所述對應關系; 第二判斷裝置,被配置為響應于使用映射表計算的有效數據比例大于所述預設閾值,判斷所述存儲的元數據是否以B-tree數據結構存儲; 轉換裝置,被配置為響應于所述存儲的元數據以B-tree數據結構存儲,將該以B-tree數據結構存儲的元數據存儲為包含上述對應關系的元數據的映射表;以及 寫入裝置,被配置為在上述物理塊地址寫入該寫操作請求要求寫入的數據。
11.根據權利要求10所述的設備,其中還包括 矩陣數據對應關系加入裝置,被配置為響應于使用映射表計算的有效數據比例大于所述預設閾值,并且所述存儲的元數據不以B-tree數據結構存儲,則確定所述存儲的元數據以映射表存儲,并在存儲的元數據的映射表中加入所述對應關系。
12.根據權利要求10或11所述的設備,其中所述存儲系統(tǒng)支持自動精簡配置存儲技術,所述元數據為支持自動精簡配置存儲技術的低速存儲器的元數據的一部分。
13.根據權利要求10-12之一所述的設備,其中所述存儲系統(tǒng)使用高速存儲器存儲元數據,所述高速存儲器為SSD。
14.根據權利要求13所述的設備,其中所述轉換裝置包括 展開裝置,被配置為將SSD中元數據的B-tree數據結構展開成為映射表; 矩陣數據對應關系加入裝置,被配置為將所述對應關系加入到映射表中。
15.根據權利要求10-12之一所述的設備,其中所述存儲系統(tǒng)使用高速存儲器存儲元數據,用于存儲元數據的B-tree數據結構的高速存儲器為高速緩存器,用于存儲元數據的映射表的高速存儲器為SSD,并且在低速存儲器中存儲元數據的B-tree數據結構,該設備還包括 同步裝置,被配置為將所述低速存儲器中存儲元數據的B-tree數據結構與所述高速緩存器中存儲的元數據的B-tree數據結構同歩。
16.根據權利要求15所述的設備,其中所述轉換裝置包括 展開裝置,被配置為將低速存儲器中元數據的B-tree數據結構展開成為映射表; 映射表對應關系加入裝置,被配置為將新建立的映射關系加入到映射表中。
遷移裝置,被配置為將映射表對應關系加入裝置得到的映射表遷移到該SSD中存儲。
17.根據權利要求10-12之一所述的設備,其中使用標記記錄當前元數據是以B-tree數據結構的存儲方式存儲還是以映射表的存儲方式存儲,并且響應于當前元數據的存儲方式改變,更新該標記。
18.根據權利要求10-12之一所述的設備,其中使用標記記錄所述元數據的每個部分的存儲位置,并且響應于該元數據的每個部分的存儲位置改變,更新該標記。
全文摘要
本發(fā)明公開了一種存儲系統(tǒng)中檢索數據的方法和設備,該方法包括接收一寫操作請求;建立所述寫操作的邏輯塊地址與物理塊地址的對應關系;判斷在存儲的元數據中加入上述對應關系后,使用映射表計算的有效數據比例是否大于預設閾值;響應于使用映射表計算的有效數據比例不大于所述預設閾值,在所述存儲的元數據的B-tree數據結構中加入所述對應關系;響應于使用映射表計算的有效數據比例大于所述預設閾值,判斷所述存儲的元數據是否以B-tree數據結構存儲,響應于所述存儲的元數據以B-tree數據結構存儲,將該以B-tree數據結構存儲的元數據存儲為包含上述對應關系的元數據的映射表;以及在上述物理塊地址寫入該寫操作請求要求寫入的數據。
文檔編號G06F3/06GK102651009SQ201110051630
公開日2012年8月29日 申請日期2011年2月28日 優(yōu)先權日2011年2月28日
發(fā)明者方敏, 曾凡鋼, 李小燕, 顧慧翔 申請人:國際商業(yè)機器公司