一種日志映射的塊設(shè)備精簡配置方法
【專利摘要】本發(fā)明公開了一種日志映射的塊設(shè)備精簡配置方法,該方法包括:硬盤數(shù)據(jù)布局步驟用于將存儲資源格式化,將硬盤數(shù)據(jù)布局進(jìn)行資源池化管理,以支持精簡配置的資源分配及日志映射信息的存儲和管理;精簡配置資源管理步驟用于基于資源池化的硬盤,將數(shù)據(jù)按照存儲資源寫時按需分配方式順序?qū)懭胗脖P的下一空閑資源,并生成寫操作相應(yīng)的映射信息;映射信息日志化步驟用于將寫操作映射信息按照追加分配方式進(jìn)行日志化存儲,并基于異步更新方式進(jìn)行映射信息的修改操作,以實現(xiàn)多用戶多虛擬卷并發(fā)順序的數(shù)據(jù)寫入。
【專利說明】 一種日志映射的塊設(shè)備精簡配置方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲領(lǐng)域,特別涉及一種精簡配置方法。
【背景技術(shù)】
[0002]隨著現(xiàn)代社會信息數(shù)據(jù)增多,大數(shù)據(jù)挑戰(zhàn)存儲系統(tǒng)的容量、性能和可維護(hù)性。隨著存儲的數(shù)據(jù)量持續(xù)快速增長,在不影響服務(wù)的情況下,存儲系統(tǒng)需要增加新的硬盤進(jìn)行容量擴(kuò)容。然而,在傳統(tǒng)的存儲系統(tǒng)中,當(dāng)某個應(yīng)用需要一部分存儲空間的時候,系統(tǒng)劃分出一部分足夠大的空間預(yù)先分配給該應(yīng)用。此時,這個應(yīng)用暫時沒有足夠的數(shù)據(jù)來填充分配給它的存儲空間。由于這部分存儲空間已經(jīng)被預(yù)留出來,因此系統(tǒng)無法將空余的空間提供給其他的應(yīng)用使用。另外,該應(yīng)用程序產(chǎn)生的數(shù)據(jù)增長將來有可能超出前述分配的容量空間。
[0003]精簡配置(Thin-Provis1ning)存儲系統(tǒng)可實現(xiàn)存儲資源的動態(tài)分配和增長。精簡配置技術(shù)也稱為“自動精簡配置”。物理存儲資源只有當(dāng)數(shù)據(jù)寫操作發(fā)生的時候才被分配,這種分配空間的方法也被稱為“按需分配” (On-DemandAllocat1n)或“寫時分配”。精簡配置將所有的存儲空間匯集到一個統(tǒng)一的存儲池(Storage Pool)中,并使用同樣大小的“段”(Segment)將空間分塊,按需分配存儲池中的“段”。精簡配置存儲系統(tǒng)提供給用戶虛擬卷(Volume)。虛擬卷的可視容量由存儲管理員設(shè)定,其虛擬地址空間被劃分以同樣大小的“段”。根據(jù)應(yīng)用對“卷”的寫操作請求,系統(tǒng)按需建立映射信息,在此之后對該“段”進(jìn)行所有讀寫操作時,根據(jù)映射信息重定向?qū)懖僮髦翆?yīng)硬盤地址。精簡配置通過存儲虛擬化提供了比實際物理存儲容量更大的虛擬存儲容量。當(dāng)系統(tǒng)中剩余的存儲容量較少時,通過添加新的硬盤,精簡配置存儲系統(tǒng)會再次擴(kuò)充存儲空間。總上所述,精簡配置技術(shù)具有很高的存儲空間利用率,并能動態(tài)實現(xiàn)存儲空間擴(kuò)容。
[0004]現(xiàn)有技術(shù)中存在以下問題:
[0005]I)存儲的性能主要被寫性能限制,90%的讀操作將命中主存(RAM),硬盤上1/0請求的多數(shù)是寫操作,因此優(yōu)化存儲的寫性能非常關(guān)鍵。
[0006]然而,多個虛擬卷順序并發(fā)寫入同一個硬盤時將會導(dǎo)致精簡配置存儲的性能下降。一個硬盤的存儲資源可能分配給多個虛擬卷,在這些虛擬卷同時寫入時(例如多攝像頭的視頻監(jiān)控環(huán)境,電影后期制作的非線性編輯環(huán)境),多個并發(fā)順序?qū)懭脒^程在硬盤上表現(xiàn)為并發(fā)的離散寫入,這種寫入模式延遲較高,從而導(dǎo)致硬盤帶寬很低,硬盤寫入帶寬可能大幅下降到順序?qū)懭霂挼?0%。
[0007]2)另外,現(xiàn)有的日志方法(數(shù)據(jù)塊日志文件,日志文件系統(tǒng))適合“文件系統(tǒng)層”,而精簡配置存儲在文件系統(tǒng)層下層的“塊設(shè)備層”。因此,現(xiàn)有日志方法并不適用。
【發(fā)明內(nèi)容】
[0008]本發(fā)明提出了結(jié)合日志和精簡配置資源管理的技術(shù),將數(shù)據(jù)和映射信息都按寫時分配方式寫入順序的下一個空閑資源。本發(fā)明的優(yōu)勢在于提高硬盤帶寬利用率,減少并發(fā)順序?qū)戦_銷,實現(xiàn)資源按需分配的精簡配置存儲。本發(fā)明的目的是克服現(xiàn)有精簡配置存儲系統(tǒng)在多卷順序?qū)懭胗脖P時帶寬下降的缺陷,結(jié)合日志技術(shù)和精簡配置資源管理,提出了數(shù)據(jù)和映射信息都按存儲資源寫時分配方式寫入下一個空閑資源的方法,從而提供一種適用于多用戶多虛擬卷并發(fā)順序?qū)懭氲?、高性能的虛擬塊設(shè)備層的精簡配置存儲方法。
[0009]為達(dá)上述目的,本發(fā)明提供了一種日志映射的塊設(shè)備精簡配置方法,其特征在于,所述方法包括:
[0010]硬盤數(shù)據(jù)布局步驟:將存儲資源格式化,將硬盤數(shù)據(jù)布局進(jìn)行資源池化管理,以支持精簡配置的資源分配及日志映射信息的存儲和管理;
[0011]精簡配置資源管理步驟:基于所述資源池化的硬盤,采用將數(shù)據(jù)按照存儲資源寫時按需分配方式順序?qū)懭胨鲇脖P的下一空閑資源,并生成相應(yīng)的寫操作映射信息;
[0012]映射信息日志化步驟:將所述寫操作映射信息按照追加分配方式進(jìn)行日志化存儲,并基于異步更新方式進(jìn)行所述映射信息的修改操作,以實現(xiàn)多用戶多虛擬卷并發(fā)順序的數(shù)據(jù)寫入。
[0013]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述方法還包括:
[0014]系統(tǒng)自舉和恢復(fù)步驟:基于兩級檢查點方法和動態(tài)日志區(qū)管理方法,實現(xiàn)所述存儲資源的寫時分配加速,及系統(tǒng)自舉快速恢復(fù)和崩潰快速恢復(fù)。
[0015]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述單位包括:
[0016]粒:用于存儲資源管理的最小單位;
[0017]段:由固定數(shù)量的多個連續(xù)的所述粒組成的定長資源,包含:數(shù)據(jù)和反向映射表。所述反向映射表用于持久存儲所述段中用于數(shù)據(jù)的所述粒的反向映射信息,所述反向映射信息用于從硬盤地址查詢獲得虛擬地址;
[0018]簇:由固定數(shù)量的多個連續(xù)的所述段組成的定長資源,存儲池向動態(tài)日志區(qū)分配資源的單位,包括:簇編號、空閑粒數(shù)量、可分配粒數(shù)量、空閑粒位圖和時間戳;
[0019]硬盤元數(shù)據(jù)信息:用于所述系統(tǒng)自舉和恢復(fù)步驟中讀取的數(shù)據(jù)信息,包括:物理硬盤信息、存儲池信息、虛擬卷信息、映射檢索信息和空閑資源信息;
[0020]元數(shù)據(jù)卷:用于將正向映射表中的正向映射信息及其修改操作寫入日志,所述元數(shù)據(jù)卷與虛擬卷--對應(yīng)。
[0021]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述反向映射表包含:虛擬粒號、校驗信息、虛擬卷標(biāo)識、釋放的硬盤粒號和時間戳,所述校驗信息用于檢查存儲數(shù)據(jù)的所述粒與所述粒的反向映射表是否完成,所述時間戳用于記錄一個所述反向映射信息的生成時間,所述反向映射信息與數(shù)據(jù)采取異步寫入方式。
[0022]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述正向映射表存儲于主存中,用于存儲從虛擬地址查詢獲得硬盤地址的正向映射信息,所述正向映射表包含區(qū)映射,所述區(qū)映射為連續(xù)的虛擬粒和連續(xù)的硬盤粒之間的映射,所述區(qū)映射包括:物理存儲資源設(shè)備標(biāo)志、物理起始粒編號、虛擬卷標(biāo)志、虛擬起始粒編號和連續(xù)粒的數(shù)量。
[0023]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述精簡配置資源管理步驟包括:
[0024]寫操作步驟: 基于資源寫時分配和日志式分配策略,將數(shù)據(jù)按順序追加寫入硬盤,并生成映射信息;[0025]讀操作步驟:通過查找所述正向映射表的映射信息,進(jìn)行數(shù)據(jù)讀取。
[0026]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述映射記錄日志化步驟包括:
[0027]映射信息寫步驟:將所述寫操作步驟生成的新的映射信息寫入硬盤的所述反向映射表,成功后更新存儲于主存中的所述正向映射表,并將所述正向映射表的映射信息異步寫入日志;
[0028]映射信息延遲寫入步驟:所述正向映射信息分組打包為所述粒大小的正向映射記錄,所述正向映射記錄的時間戳為打包時刻組中所有所述正向映射信息時間戳最小值;
[0029]映射信息修改步驟:通過解除映射和重新映射的所述映射記錄,釋放虛擬卷的存儲資源或在所述虛擬卷之間進(jìn)行映射關(guān)系轉(zhuǎn)換;
[0030]映射信息回收步驟:正向映射記錄寫入日志結(jié)束后,回收舊的映射記錄的存儲資源,所述映射記錄包含:所述正向映射記錄、解除映射記錄和重新映射記錄。
[0031]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述基于資源寫時分配和日志式分配策略包括:
[0032]將所述寫操作劃分為對齊寫和非對齊寫,所述對齊寫為寫入日志末尾下一個空閑塊,所述非對齊寫為寫入上一次寫入的日志位置,作為所述對齊寫的補(bǔ)充。
[0033]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述系統(tǒng)自舉和恢復(fù)步驟包括:
[0034]兩級檢查點步驟:通過一級檢查點存儲虛擬卷的正向映射信息,并通過二級檢查點存儲所述正向映射信息的檢索信息;
[0035]動態(tài)日志區(qū)管理步驟:動態(tài)移動和增減寫入時分配資源的區(qū)域,以實現(xiàn)資源的動態(tài)分配,并實現(xiàn)在動態(tài)日志區(qū)中的檢索;
[0036]系統(tǒng)恢復(fù)步驟:通過讀取正向映射信息、動態(tài)日志區(qū)信息和映射修改記錄,完成系統(tǒng)恢復(fù)。
[0037]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述寫操作步驟還包括:
[0038]接收寫操作步驟:將寫入的數(shù)據(jù)按照所述粒劃分為多個寫操作數(shù)據(jù)塊,對于所述數(shù)據(jù)塊長度為所述粒長度的數(shù)據(jù),采取所述對齊寫方式,對于所述數(shù)據(jù)塊長度小于所述粒長度的數(shù)據(jù),采取所述非對齊寫方式;
[0039]查找正向映射表步驟:在主存中的所述正向映射表中查找所述數(shù)據(jù)塊的映射信息,如果查找所述映射信息成功,則判斷是否采取所述對齊寫方式,如果查找所述映射信息失敗,則按照所述追加寫方式分配新的存儲資源;
[0040]對齊寫步驟:對于需要采取所述對齊寫方式的所述數(shù)據(jù)塊,將所述數(shù)據(jù)塊寫入日志,即上次寫入位置后的第一塊空閑塊,并異步的在日志當(dāng)前段的末尾記錄虛擬卷地址信息,更新主存中所述正向映射表信息和時間戳;
[0041]非對齊寫步驟:對于需要采取所述非對齊寫方式的所述數(shù)據(jù)塊,將所述數(shù)據(jù)塊寫入所述粒在日志的上次的物理位置,并且所述正向映射表中的映射信息保持不變;
[0042]回收步驟:回收失效的存儲資源,虛擬卷寫操作成功。
[0043]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述映射信息修改步驟還包括:[0044]解除映射步驟:用于釋放所述虛擬卷的存儲資源;
[0045]重新映射步驟:用于在所述虛擬卷之間進(jìn)行映射關(guān)系的轉(zhuǎn)換。
[0046]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述解除映射步驟還包括:
[0047]接收解除請求步驟:虛擬卷接收到解除映射請求,根據(jù)所述解除映射請求獲取待解除映射的映射區(qū)間,并按照所述映射區(qū)間長度分配長度為所述粒整數(shù)倍的寫緩存;
[0048]查找解除步驟:針對所述映射區(qū)間內(nèi)每個待解除映射數(shù)據(jù)塊的虛擬地址在主存中查找所述正向映射表,查找命中所述正向映射表的相應(yīng)表項,并將解除映射信息記錄在所述寫緩存,并將所述寫緩存下刷寫入日志;
[0049]刪除映射步驟:對所述映射區(qū)間內(nèi)所述待解除映射數(shù)據(jù)塊的虛擬地址進(jìn)行刪除操作,刪除主存中所述正向映射表中的對應(yīng)表項,更新所述正向映射表中對應(yīng)映射區(qū)間的時間戳為當(dāng)前時間,并將所述待解除映射數(shù)據(jù)塊標(biāo)記為空閑資源。
[0050]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述重新映射步驟還包括:
[0051]接收重新映射請求步驟:虛擬卷接收重新映射請求,根據(jù)所述重新映射請求獲取重新映射的映射區(qū)間,并按照所述映射區(qū)間長度分配長度為所述粒整數(shù)倍的寫緩存;
[0052]查找映射步驟:根據(jù)所述映射區(qū)間內(nèi)每個待重新映射的虛擬地址在主存中查找待映射的源虛擬卷,在所述源虛擬卷中查找命中所述正向映射表的相應(yīng)表項,并根據(jù)同一虛擬地址進(jìn)行待映射的目標(biāo)虛擬卷查找,在所述目標(biāo)虛擬卷中查找命中所述正向映射表的表項,將重新映射的操作記錄在所述寫緩存中,并下刷寫入日志;
[0053]更新步驟:刪除主存中所述源虛擬卷的正向映射表中查找成功的表項,更新所述源虛擬卷中映射區(qū)間的時間戳為當(dāng)前時間,并更新所述目標(biāo)虛擬卷的查找成功表項,更新所述目標(biāo)虛擬卷中映射區(qū)間的時間戳為當(dāng)前時間,并將所述目標(biāo)虛擬卷中解除映射的數(shù)據(jù)塊標(biāo)記為空閑資源。
[0054]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述兩級檢查點步驟還包括:
[0055]掃描步驟:將主存中所述正向映射表的信息按組進(jìn)行分配,所述組為所述簇中的所有映射,對所述組進(jìn)行掃描;
[0056]分裂步驟:如果所述組占用空間大于所述粒的指定尺寸,則將所述組分裂為多個組,對分裂后的所述組進(jìn)行掃描;
[0057]合并步驟:如果所述組占用空間小于所述粒的指定尺寸,則將所述組進(jìn)行合并,對合并后的所述組進(jìn)行掃描;
[0058]記錄步驟:如果所述組的占用空間在所述粒的指定尺寸內(nèi),則分配一個所述粒尺寸的緩存區(qū),將所述組中的映射區(qū)間及當(dāng)前時間戳記錄到所述緩存區(qū);
[0059]釋放回收步驟:如果所述正向映射表屬于所述元數(shù)據(jù)卷,則將所述緩存區(qū)下刷到所述硬盤頭部的映射檢索區(qū),并回收失效的映射記錄的存儲資源,如果所述正向映射表屬于所述虛擬卷,則將所述緩存區(qū)下刷到所述元數(shù)據(jù)卷,并釋放反向映射資源。
[0060]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述動態(tài)日志區(qū)管理步驟還包括:
[0061]寫時資源分配步驟:用于在寫時分配時,從動態(tài)日志區(qū)分配資源;
[0062]動態(tài)日志管理步驟:用于系統(tǒng)恢復(fù)時,讀取相關(guān)映射信息,進(jìn)行時間戳比較,將最新時間戳的映射信息恢復(fù)到主存中。
[0063]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述系統(tǒng)恢復(fù)步驟還包括:
[0064]讀取檢索信息步驟:讀取硬盤上的正向映射表,加載所述正向映射表到主存,讀取所述硬盤上的動態(tài)日志區(qū)檢索信息,進(jìn)行動態(tài)日志區(qū)定位;
[0065]掃描步驟:順序掃描所述動態(tài)日志區(qū),讀取映射修改記錄,并根據(jù)所述映射修改記錄查詢正向映射表,如果所述映射修改記錄的時間戳小于所述正向映射表的時間戳,則丟棄所述映射修改記錄,如果所述映射修改記錄的時間戳大于所述正向映射表的時間戳,則將所述映射修改記錄更新到所述正向映射表,并回收所述映射修改記錄的存儲資源。
[0066]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述寫時資源分配步驟還包括:
[0067]查詢資源步驟:查詢當(dāng)前簇的存儲資源,如果所述簇沒有空閑資源,則查詢下一個所述簇;
[0068]分配資源步驟:如果所述查詢資源步驟中,查詢所述當(dāng)前簇中有空閑資源,則從所述當(dāng)前簇中分配存儲資源;
[0069]檢查動態(tài)資源步驟:檢查當(dāng)前動態(tài)日志區(qū)的總空閑資源數(shù)量,如果所述空閑資源小于一定閾值,則執(zhí)行所述動態(tài)日志管理步驟。
[0070]上述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述動態(tài)日志管理步驟還包括:
[0071]查找空閑資源步驟:在存儲資源池中順序查找有空閑的所述簇,如果查找成功,則將所述簇的位置信息更新到主存中的動態(tài)日志檢索,分配動態(tài)日志檢索區(qū)長度的緩存區(qū);
[0072]更新簇步驟:在所述緩存區(qū)中填入時間戳和所述動態(tài)日志區(qū)的簇的相關(guān)信息,將緩存區(qū)下刷到存儲池中所有硬盤的動態(tài)日志檢索區(qū),并更新主存中的動態(tài)日志區(qū)信息;
[0073]通知步驟:所述查找空閑資源步驟中,如果查找空閑的所述簇失敗,則輸出通知用戶信息。
[0074]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:
[0075]I)結(jié)合了日志資源追加分配和精簡配置資源按需分配,將來自多個虛擬卷的并發(fā)順序?qū)懭氲臄?shù)據(jù)和新映射信息都按寫時分配方式寫入硬盤,一般分配策略為追加寫,開銷小。因此在多用戶多流并發(fā)順序?qū)憰r,本發(fā)明的硬盤帶寬利用率高(>85%);
[0076]2)映射信息的日志化寫入,實現(xiàn)了映射信息的動態(tài)分散存儲,簡化了映射信息的存儲管理復(fù)雜性;
[0077]3)映射修改記錄先順序?qū)懭胱陨淼娜罩荆螽惒礁碌秸蛴成涞娜罩?,實現(xiàn)了快速地映射修改;
[0078]4)系統(tǒng)自舉速度快,本發(fā)明通過正向映射檢索加載映射信息,然后僅需要掃描動態(tài)日志區(qū)加載最新映射信息。
【專利附圖】
【附圖說明】
[0079]圖1為本發(fā)明方法流程示意圖;
[0080]圖2A?圖2E為本發(fā)明方法詳細(xì)流程示意圖;
[0081]圖3為本發(fā)明物理硬盤布局示意圖;[0082]圖4為本發(fā)明簇的布局示意圖;
[0083]圖5為本發(fā)明段的布局示意圖;
[0084]圖6為本發(fā)明實施例寫操作步驟流程示意圖;
[0085]圖7為本發(fā)明實施例解除映射步驟流程示意圖;
[0086]圖8為本發(fā)明實施例重新映射步驟流程示意圖;
[0087]圖9為本發(fā)明實施例更新映射信息步驟流程示意圖;
[0088]圖10為本發(fā)明實施例映射追加與和兩級檢查點步驟流程不意圖;
[0089]圖11為本發(fā)明實施例兩級檢查點步驟流程示意圖;
[0090]圖12為本發(fā)明實施例寫時資源分配流程示意圖;
[0091]圖13為本發(fā)明實施例動態(tài)日志區(qū)管理步驟流程示意圖;
[0092]圖14為本發(fā)明實施例系統(tǒng)恢復(fù)流程示意圖。
[0093]其中,附圖標(biāo)記:
[0094]SI ?S4、S21 ?S22、S31 ?S34、S41 ?S43、S211 ?S215、S411 ?S415、S3311 ?S3313、S3321?S3323、S4211?S4213、S4221?S4223:本發(fā)明各實施例的施行步驟
【具體實施方式】
[0095]下面給出本發(fā)明的【具體實施方式】,結(jié)合圖示對本發(fā)明做出了詳細(xì)描述。
[0096]本發(fā)明提出的“追加寫”能最大化硬盤(包括固態(tài)硬盤SSD)的寫帶寬,然而存儲資源的映射信息管理復(fù)雜。追加寫來源于數(shù)據(jù)庫使用的日志和日志結(jié)構(gòu)文件系統(tǒng)(Log-structured File System, LFS),能夠保持連續(xù)的順序?qū)懭搿FS使用一個順序的、只能追加寫(Append)的結(jié)構(gòu),將一系列對文件的改變記錄到一個大的日志項中,并將這個日志項一次寫入硬盤。因此,LFS每次寫入硬盤一個大的連續(xù)數(shù)據(jù)塊,從而提高硬盤帶寬的利用率。在系統(tǒng)崩潰后,只需查看日志文件的尾部就能快速的恢復(fù)文件系統(tǒng)。由于日志寫入,系統(tǒng)需要維護(hù)存儲資源的映射信息來實現(xiàn)資源的按需分配和空閑資源管理。同時,映射信息寫時分配存儲,這使得存儲資源的管理比較復(fù)雜。
[0097]本發(fā)明的技術(shù)關(guān)鍵點在于:
[0098]I)資源寫時分配和面向優(yōu)化寫性能的日志式分配策略,能維持較低的寫入開銷。
[0099]a)將寫操作劃分為“對齊寫”和“非對齊寫”分別處理。
[0100]b)對齊寫:寫入日志末尾下一個空閑塊。
[0101]c)非對齊寫:寫入該地址的上一次寫入的日志位置,作為“對齊寫”的補(bǔ)充。
[0102]2)資源池化管理的硬盤數(shù)據(jù)布局(也稱為“格式化”),能支持精簡配置的資源分配和管理、日志映射信息的存儲和管理。
[0103]a)粒:存儲資源管理的最小單位,其大小在配置資源池時指定。
[0104]b)段:由多個連續(xù)的粒組成的定長資源,包括數(shù)據(jù)和反向映射。關(guān)鍵特征:
[0105]i)反向映射表(反向映射記錄)。反向映射表持久存儲段中所有粒的反向映射。反向映射可從硬盤地址(硬盤數(shù)據(jù)塊的LBA地址)查詢獲得虛擬地址。寫入硬盤的反向映射信息包括:虛擬粒號、校驗、虛擬卷標(biāo)識、釋放的硬盤粒號、時間戳。其中,硬盤粒號可由所在硬盤地址通過硬盤布局計算獲得,也可存儲在反向映射信息中。時間戳用于記錄一個反向映射的生成時間。[0106]?)校驗信息。用于檢查存儲上層數(shù)據(jù)的粒和它的反向映射信息是否都完成。在系統(tǒng)崩潰恢復(fù)時,如果硬盤上的校驗跟重新計算的校驗一致,那么認(rèn)為存儲上層數(shù)據(jù)的粒和它的反向映射信息都有效,否則認(rèn)為這二者都無效。校驗通過計算對應(yīng)粒中的部分內(nèi)容獲得,使校驗出錯的概率小于等于硬盤不可恢復(fù)讀錯誤的概率。
[0107]iii)反向映射信息和數(shù)據(jù)的異步寫入。寫入“段尾”反向映射信息的1和寫入“段”內(nèi)空閑“?!钡?需要滿足如下的順序約定:即直到數(shù)據(jù)寫入和反向映射信息寫入都完成后,虛擬卷才向上層返回數(shù)據(jù)寫入成功。
[0108]c)簇:有多個連續(xù)的段組成的定長資源,存儲池向動態(tài)日志區(qū)分配資源的單位。關(guān)鍵信息包括:簇編號、空閑粒數(shù)量、可分配粒數(shù)量、空閑粒位圖、時間戳。
[0109]d)硬盤元數(shù)據(jù)信息:在系統(tǒng)自舉過程讀取。關(guān)鍵信息包括:物理硬盤信息、存儲池信息、虛擬卷信息、映射檢索信息、空閑資源信息。
[0110]3)映射信息的日志化存儲。在日志中存儲正向映射表,減少正向映射信息(從虛擬地址獲得硬盤地址,以區(qū)別反向映射)的寫入開銷和管理復(fù)雜度。
[0111]a)寫操作生成新的映射記錄,先將映射記錄寫入硬盤上的反向映射表,成功后更新主存中的正向映射表,然后返回寫操作成功。由檢查點線程在后臺異步地將正向映射記錄寫入日志。
[0112]b)正向映射表的基本構(gòu)成是區(qū)映射(extent mapping),反映連續(xù)整數(shù)個“粒”的映射,即連續(xù)的虛擬粒和連續(xù)的硬盤粒之間的映射。這里“連續(xù)”指粒的編號連續(xù),連續(xù)的虛擬地址編號和連續(xù)的硬盤 地址編號。區(qū)映射包括5個核心數(shù)據(jù):物理存儲資源的設(shè)備標(biāo)志、物理起始“?!本幪?、虛擬卷標(biāo)志、虛擬起始“?!本幪枴⑦B續(xù)“?!钡臄?shù)量。
[0113]c)正向映射信息延遲(Lazy)寫入日志(對齊寫)。
[0114]i)正向映射信息打包為一個粒度大小的“映射記錄”。將主存中映射信息分組,一個組中的所有區(qū)映射占用的空間需要滿足一定的比例,即不超過一個“?!?,也不非常少,加上包頭部能按一個“?!毕滤?。包頭部信息包括:Magic、包標(biāo)識、所屬虛擬卷標(biāo)識、校驗。
[0115]ii)正向“映射記錄”中時間戳的值:取打包時刻,該組中所有尚未完成的修改正向映射表操作的時間戳的最小值,代表該組中小于該時間戳的映射信息已持久存儲到日
O
[0116]iii)正向“映射記錄”寫入日志結(jié)束后,回收舊的“映射記錄”的存儲資源。映射記錄包括:正向映射記錄、解除映射記錄、重新映射記錄。
[0117]4)兩級檢查點方法,能加快本發(fā)明的系統(tǒng)自舉的速度和崩潰恢復(fù)的速度。
[0118]a) 一級檢查點存儲虛擬卷的正向映射信息。
[0119]b) 二級檢查點存儲正向映射信息的檢索信息(也可稱為間接索引塊或二級索引)。
[0120]5)動態(tài)日志區(qū)及其管理方法,能加快本發(fā)明的資源分配、系統(tǒng)自舉的速度和崩潰恢復(fù)的速度。
[0121]a)寫入時分配資源的區(qū)域,動態(tài)移動和增減。隨著資源分配,從動態(tài)日志區(qū)摘除沒有空閑資源的簇。其空閑資源減少到一定比例后,從存儲資源池按策略添加有空閑資源的簇。
[0122]b)動態(tài)日志區(qū)的檢索。在向動態(tài)日志區(qū)添加空閑簇時,動態(tài)日志區(qū)的組成信息由一個檢查點線程持久持久存儲到硬盤元數(shù)據(jù)區(qū)。
[0123]6)映射修改操作(如,解除映射unmap和重新映射remap)的日志化存儲,能實現(xiàn)快速修改資源映射和快速恢復(fù)。
[0124]a)從映射修改操作構(gòu)造“映射記錄”,將“映射記錄”寫入日志(對齊寫),成功后更新主存中的正向映射表,最后返回映射修改成功。
[0125]b)解除映射的“映射記錄”包含如下關(guān)鍵信息:操作類型(表示um-map)、虛擬卷標(biāo)識、被解除映射的虛擬粒號、存儲資源所在硬盤標(biāo)識、硬盤粒號、時間戳。時間戳用于記錄一個“映射記錄”的生成時間。
[0126]c)重新映射的“映射記錄”包含如下關(guān)鍵信息:操作類型(表示re-map)、源虛擬卷標(biāo)識、源虛擬卷的虛擬粒號、目標(biāo)虛擬卷標(biāo)識、目標(biāo)虛擬卷的虛擬粒號、存儲資源所在硬盤標(biāo)識、硬盤粒號、時間戳。時間戳用于記錄一個“映射記錄”的生成時間。
[0127]7)映射信息恢復(fù)時比較映射記錄的時間戳。這些可能參與比較的映射記錄包括:正向映射、反向映射、解除映射、重新映射。系統(tǒng)恢復(fù)時,通過比較時間戳確定動態(tài)日志區(qū)的映射記錄的有效性,其時間戳的比較對象是正向映射表的時間戳。
[0128]本發(fā)明的相關(guān)概念
[0129]在對本發(fā)明具體實施做詳細(xì)說明前,首先對本發(fā)明中的相關(guān)概念進(jìn)行說明。
[0130]I)邏輯塊尋址(Logical block addressing, LBA),本文也稱為硬盤地址,用于表示計算機(jī)存儲設(shè)備上數(shù)據(jù)塊的位置,通常用于第二級存儲,例如硬盤。LBA采用簡單的線性尋址方案,數(shù)據(jù)塊使用整數(shù)索引,第一個塊表示為LBA0,第二個塊表示為LBA1,以此類推。
[0131]2)扇區(qū)(Sector),讀寫硬盤或“塊設(shè)備”的基本單位,固定大小512B(512個字節(jié)),起始地址按512B對齊。
[0132]3)粒(Granule),固定大小的寫時分配單位和映射單元。
[0133]4)虛擬粒,粒在虛擬卷上的虛擬地址空間的表示。
[0134]5)硬盤粒,粒在硬盤上的硬盤地址空間的表示。
[0135]6)粒度(Granularity),粒的大小。一般為64KB,取值范圍從4KB到512KB,為4KB大小整數(shù)倍且起始地址按4KB對齊。
[0136]7)段(Segment),包括一個“數(shù)據(jù)段”和一個“段尾”,用于批量成組地更新映射信息的單位,將時間緊鄰寫入的一些數(shù)據(jù)一起更新映射信息?!岸挝病笔窍鄬τ跀?shù)據(jù)最佳性能的寫入順序而言。
[0137]8)數(shù)據(jù)段(Data Segment),固定大小的資源分配單元,包括256個“?!?一般大小為16MB),段內(nèi)地址空間按“粒度”劃分為等大的塊,且“段”的起始地址按“粒度”對齊。
[0138]9)映射(Map),指從虛擬卷上“?!钡钠鹗嫉奶摂M地址到日志上“?!钡钠鹗嫉挠脖P地址(LBA)的映射,也稱為正向映射。用于從虛擬地址查詢獲得硬盤地址。
[0139]10)映射區(qū)間,表示一個物理和邏輯上都連續(xù)的存儲資源的映射信息,包括5個核心數(shù)據(jù):硬盤標(biāo)志、起始“硬盤粒”編號、虛擬卷標(biāo)志、起始“虛擬?!本幪枴⑦B續(xù)“?!钡臄?shù)量。
[0140]11)反向映射(Reverse Map),指從日志上“?!钡钠鹗嫉挠脖P地址(LBA)到虛擬卷上“?!钡钠鹗嫉奶摂M地址的映射。用于從硬盤地址查詢獲得虛擬地址。
[0141]12)段尾(Segment Tail),也稱為元數(shù)據(jù)粒(Meta Granule),記錄“數(shù)據(jù)段”中每個“粒”的反向映射,即每個“?!钡挠脖P地址(LBA)到虛擬地址的映射,段尾的大小為“粒度”的正整數(shù)倍,一般大小為一個“粒度”。
[0142]13)解除映射(Un-map),也稱為trim或discard。對虛擬卷上“?!边M(jìn)行解映射,將使對應(yīng)的存儲資源(既日志上“粒”)空閑。
[0143]14)重新映射(Re-map),由Un_map和Map組成的原子操作序列,實現(xiàn)不同虛擬卷上存儲資源的“零拷貝”(Zero Copy)遷移。重映射將使一個存儲資源從一個虛擬卷A映射到另外一個虛擬卷B。
[0144]15)存儲池(Pool),集中管理所有硬盤上未分配的存儲資源。新加入硬盤的存儲資源首先添加到存儲池中,然后由存儲池按需分配??臻e存儲資源由存儲池統(tǒng)一管理和分配。
[0145]16)簇(Cluster),從存儲池分配存儲資源給日志使用的單位,包括256個段。當(dāng)日志上已分配的存儲資源快要寫滿時,本發(fā)明從存儲池中分配一個新的“簇”或者空閑資源較多的“簇”給日志使用。簇中的空閑資源按“?!庇涗洝?br>
[0146]17)動態(tài)日志區(qū)(Dynamic Logging Area),寫時資源分配的日志區(qū)域,該區(qū)域由多個具有空閑存儲資源的簇組成。隨著資源分配,從動態(tài)日志區(qū)摘除沒有空閑資源的簇。其空閑資源減少到一定比例后,從存儲資源池按策略添加有空閑資源的簇。
[0147]18)虛擬卷(Volume),由系統(tǒng)管理員指定容量的塊設(shè)備,可從存儲池動態(tài)按需分配存儲資源,分配的存儲資源可能來自不同物理硬盤,是提供給用戶的存儲設(shè)備。
[0148]19)元數(shù)據(jù)卷(Meta Volume),用于將“正向映射”及其修改作為數(shù)據(jù)寫入日志。本發(fā)明中元數(shù)據(jù)卷與虛擬卷一一對應(yīng),每個虛擬卷都有一個元數(shù)據(jù)卷,每個元數(shù)據(jù)卷都有一個虛擬卷。
[0149]本發(fā)明提供了一種日志映射的塊設(shè)備精簡配置方法,圖1為本發(fā)明方法流程示意圖,如圖1所示,該方法包括:
[0150]硬盤數(shù)據(jù)布局步驟S1:將存儲資源格式化,將硬盤數(shù)據(jù)布局進(jìn)行資源池化管理,以支持精簡配置的資源分配及日志映射信息的存儲和管理;
[0151]精簡配置資源管理步驟S2:基于資源池化的硬盤,將數(shù)據(jù)按照存儲資源寫時按需分配方式順序?qū)懭胗脖P的下一空閑資源,并生成相應(yīng)的寫操作映射信息;
[0152]映射信息日志化步驟S3:將寫操作映射信息按照追加分配方式進(jìn)行日志化存儲,并基于異步更新方式進(jìn)行映射信息的修改操作,以實現(xiàn)多用戶多虛擬卷并發(fā)順序的數(shù)據(jù)寫入。
[0153]系統(tǒng)自舉和恢復(fù)步驟S4:基于兩級檢查點方法和動態(tài)日志區(qū)管理方法,實現(xiàn)存儲資源的寫時分配加速,及系統(tǒng)自舉和崩潰恢復(fù)的加速。
[0154]其中,反向映射表包含:虛擬粒號、校驗信息、虛擬卷標(biāo)識、釋放的硬盤粒號和時間戳,所述校驗信息用于檢查存儲數(shù)據(jù)的所述粒與所述粒的反向映射表是否完成,所述時間戳用于記錄一個所述反向映射信息的生成時間,所述反向映射信息與數(shù)據(jù)采取異步寫入方式。
[0155]其中,正向映射表存儲于主存中,用于存儲從虛擬地址查詢獲得硬盤地址的正向映射信息,所述正向映射表包含區(qū)映射,所述區(qū)映射為連續(xù)的虛擬粒和連續(xù)的硬盤粒之間的映射,所述區(qū)映射包括:物理存儲資源設(shè)備標(biāo)志、物理起始粒編號、虛擬卷標(biāo)志、虛擬起始粒編號和連續(xù)粒的數(shù)量。[0156]其中,圖2A?圖2E為本發(fā)明方法詳細(xì)流程示意圖,如圖2A所示,精簡配置資源管理步驟S2包括:
[0157]寫操作步驟S21:基于資源寫時分配和日志式分配策略,將數(shù)據(jù)按順序追加寫入虛擬卷,并生成映射信息;
[0158]讀操作步驟S22:通過查找正向映射表的映射信息,進(jìn)行數(shù)據(jù)讀取。
[0159]其中,基于資源寫時分配和日志式分配策略包括:
[0160]將所述寫操作劃分為對齊寫和非對齊寫,所述對齊寫為寫入日志末尾下一個空閑塊,所述非對齊寫為寫入上一次寫入的日志位置,作為所述對齊寫的補(bǔ)充。
[0161]其中,如圖2A所示,寫操作步驟S21還包括:
[0162]接收寫操作步驟S211:將寫入的數(shù)據(jù)按照粒劃分為多個寫操作數(shù)據(jù)塊,對于數(shù)據(jù)塊長度為粒長度的數(shù)據(jù),采取對齊寫方式,對于數(shù)據(jù)塊長度小于粒長度的數(shù)據(jù),采取非對齊寫方式;
[0163]查找正向映射表步驟S212:在主存中的正向映射表中查找數(shù)據(jù)塊的映射信息,如果查找映射信息成功,則判斷是否采取對齊寫方式,如果查找映射信息失敗,則按照追加寫方式分配新的存儲資源;
[0164]對齊寫步驟S213:對于需要采取對齊寫方式的數(shù)據(jù)塊,將數(shù)據(jù)塊寫入日志,并異步的在日志當(dāng)前段的末尾記錄虛擬卷地址信息,更新主存中正向映射表信息和時間戳;
[0165]非對齊寫步驟S214:對于需要采取非對齊寫方式的所述數(shù)據(jù)塊,將數(shù)據(jù)塊寫入粒在日志的上次的物理位置,并且正向映射表中的映射信息保持不變;
[0166]回收步驟S215:回收失效的存儲資源,虛擬卷寫操作成功。
[0167]其中,如圖2A所示,映射記錄日志化步驟S3包括:
[0168]映射信息寫步驟S31:將寫操作步驟生成的新的映射信息寫入硬盤的反向映射表,成功后更新存儲于主存中的正向映射表,并將正向映射表的映射信息異步寫入日志;
[0169]映射信息延遲寫入步驟S32:正向映射信息分組打包為粒大小的正向映射記錄,正向映射記錄的時間戳為打包時刻組中所有正向映射信息時間戳最小值;
[0170]映射信息修改步驟S33:通過解除映射和重新映射的映射記錄,釋放虛擬卷的存儲資源或在虛擬卷之間進(jìn)行映射關(guān)系轉(zhuǎn)換;
[0171 ] 映射信息回收步驟S34:正向映射記錄寫入日志結(jié)束后,回收舊的映射記錄的存儲資源,映射記錄包含:正向映射記錄、解除映射記錄和重新映射記錄。
[0172]其中,映射信息修改步驟S33還包括:
[0173]解除映射步驟S331:用于釋放虛擬卷的存儲資源;
[0174]重新映射步驟S332:用于在虛擬卷之間進(jìn)行映射關(guān)系的轉(zhuǎn)換。
[0175]其中,如圖2C所示,解除映射步驟S331還包括:
[0176]接收解除請求步驟S3311:虛擬卷接收到解除映射請求,根據(jù)解除映射請求獲取待解除映射的映射區(qū)間,并按照映射區(qū)間長度計算所需映射記錄的存儲空間,根據(jù)映射記錄的存儲空間大小分配長度為粒整數(shù)倍的寫緩存;
[0177]查找解除步驟S3312:針對映射區(qū)間內(nèi)每個待解除映射數(shù)據(jù)塊的虛擬地址在主存中查找正向映射表,查找命中正向映射表的相應(yīng)表項,并將解除映射信息記錄在寫緩存,并將寫緩存下刷寫入日志;[0178]刪除映射步驟S3313:對映射區(qū)間內(nèi)待解除映射數(shù)據(jù)塊的虛擬地址進(jìn)行刪除操作,刪除主存中正向映射表中的對應(yīng)表項,更新正向映射表中對應(yīng)映射區(qū)間的時間戳為當(dāng)前時間,并將待解除映射數(shù)據(jù)塊標(biāo)記為空閑資源。
[0179]其中,重新映射步驟S332還包括:
[0180]接收重新映射請求步驟S3321:虛擬卷接收重新映射請求,根據(jù)重新映射請求獲取重新映射的映射區(qū)間,并按照映射區(qū)間長度計算所需映射記錄的存儲空間,根據(jù)映射記錄的存儲空間大小分配長度為粒整數(shù)倍的寫緩存;
[0181]查找映射步驟S3322:根據(jù)映射區(qū)間內(nèi)每個待重新映射的虛擬地址在主存中查找待映射的源虛擬卷,在源虛擬卷中查找命中正向映射表的相應(yīng)表項,并根據(jù)同一虛擬地址進(jìn)行待映射的目標(biāo)虛擬卷查找,在目標(biāo)虛擬卷中查找命中正向映射表的表項,將重新映射的操作記錄在寫緩存中,并下刷寫入日志;
[0182]更新步驟S3323:刪除主存中源虛擬卷的正向映射表中查找成功的表項,更新源虛擬卷中映射區(qū)間的時間戳為當(dāng)前時間,并更新目標(biāo)虛擬卷的查找成功表項,更新目標(biāo)虛擬卷中映射區(qū)間的時間戳為當(dāng)前時間,并將目標(biāo)虛擬卷中解除映射的數(shù)據(jù)塊標(biāo)記為空閑資源。
[0183]其中,如圖2A所示,系統(tǒng)自舉和恢復(fù)步驟S4包括:
[0184]兩級檢查點步驟S41:通過一級檢查點存儲虛擬卷的正向映射信息,并通過二級檢查點存儲正向映射信息的檢索信息;
[0185]動態(tài)日志區(qū)管理步驟S42:動態(tài)移動和增減寫入時分配資源的區(qū)域,以實現(xiàn)資源的動態(tài)分配,并實現(xiàn)在動態(tài)日志區(qū)中的檢索;
[0186]系統(tǒng)恢復(fù)步驟S43:通過讀取正向映射信息、動態(tài)日志區(qū)信息和映射修改記錄,完成系統(tǒng)恢復(fù)。
[0187]其中,如圖2D所示,兩級檢查點步驟S41:
[0188]掃描步驟S411:將主存中正向映射表的信息按組進(jìn)行分配,組為簇中的所有映射,對組進(jìn)行掃描;
[0189]分裂步驟S412:如果組占用空間大于粒的指定尺寸,則將組分裂為多個組,對分裂后的組進(jìn)行掃描;
[0190]合并步驟S413:如果組占用空間小于粒的指定尺寸,則將組進(jìn)行合并,對合并后的組進(jìn)行掃描;
[0191]記錄步驟S414:如果組的占用空間在粒的指定尺寸內(nèi),則分配一個粒尺寸的緩存區(qū),將組中的映射區(qū)間及當(dāng)前時間戳記錄到緩存區(qū);
[0192]釋放回收步驟S415:如果正向映射表屬于元數(shù)據(jù)卷,則將緩存區(qū)下刷到硬盤頭部的映射檢索區(qū),并回收失效的映射記錄的存儲資源,如果正向映射表屬于虛擬卷,則將緩存區(qū)下刷到元數(shù)據(jù)卷,并釋放反向映射資源。
[0193]其中,動態(tài)日志區(qū)管理步驟S42還包括:
[0194]寫時資源分配步驟S421:用于在寫時分配時,從動態(tài)日志區(qū)分配資源;
[0195]動態(tài)日志管理步驟S422:用于系統(tǒng)讀取相關(guān)映射信息,進(jìn)行時間戳比較,將最新時間戳的映射信息恢復(fù)到主存中。
[0196]其中,系統(tǒng)恢復(fù)步驟S43還包括:[0197]讀取檢索信息步驟S431:讀取硬盤上的正向映射表,加載正向映射表到主存,讀取硬盤上的動態(tài)日志區(qū)檢索信息,進(jìn)行動態(tài)日志區(qū)定位;
[0198]掃描步驟S432:順序掃描動態(tài)日志區(qū),讀取映射修改記錄,并根據(jù)映射修改記錄查詢正向映射表,如果映射修改記錄的時間戳小于正向映射表的時間戳,則丟棄映射修改記錄,如果映射修改記錄的時間戳大于正向映射表的時間戳,則將映射修改記錄更新到正向映射表,并回收映射修改記錄的存儲資源。
[0199]其中,如圖2E所示,寫時資源分配步驟S421還包括:
[0200]查詢資源步驟S4211:查詢當(dāng)前簇的存儲資源,如果簇沒有空閑資源,則查詢下一個簇;
[0201]分配資源步驟S4212:如果查詢資源步驟中,查詢當(dāng)前簇中有空閑資源,則從當(dāng)前簇中分配存儲資源;
[0202]檢查動態(tài)資源步驟S4213:檢查當(dāng)前動態(tài)日志區(qū)的總空閑資源數(shù)量,如果空閑資源小于一定閾值,則執(zhí)行動態(tài)日志管理步驟。
[0203]其中,動態(tài)日志管理步驟S422還包括:
[0204]查找空閑資源步驟S4221:在存儲資源池中順序查找有空閑的簇,如果查找成功,則將簇的位置信息更新到主存中的動態(tài)日志檢索,分配動態(tài)日志檢索區(qū)長度的緩存區(qū);
[0205]更新簇步驟S4222:在緩存區(qū)中填入時間戳和動態(tài)日志區(qū)的簇的相關(guān)信息,將緩存區(qū)下刷到存儲池中所有硬盤的動態(tài)日志檢索區(qū),并更新主存中的動態(tài)日志區(qū)信息;
[0206]通知步驟S4223:查找空閑資源步驟中,如果查找空閑的簇失敗,則輸出通知用戶信息。
[0207]以下結(jié)合圖示說明本發(fā)明具體實施例的步驟,詳細(xì)說明塊設(shè)備精簡配置過程。
[0208]I)硬盤上的數(shù)據(jù)布局
[0209]硬盤布局(Layout)用于將存儲資源添加到存儲資源池中進(jìn)行管理,包括一個頭部和后續(xù)線性排列的多個簇,圖2為本發(fā)明物理硬盤布局示意圖,如圖2所示。簇的大小固定,一般大小為4GB+16MB,其中4GB為存儲來著上層的數(shù)據(jù)的空間,16MB為反向映射表的空間。如果硬盤末尾有不足一個簇的空間,那么最后末尾的空間作為一個簇分配,末尾空間減反向映射表的空間等于簇的空閑資源量。簇的空閑資源由位圖表示。
[0210]頭部存儲的硬盤元數(shù)據(jù)信息主要用于系統(tǒng)啟動時自舉,快速加載本發(fā)明的精簡配置存儲系統(tǒng)。這些頭部的元數(shù)據(jù)信息的更新頻率很低。頭部一般大小為32MB,簇的數(shù)據(jù)布局如圖3所示,圖3為本發(fā)明物理硬盤布局示意圖,包括這些元數(shù)據(jù)信息:物理硬盤信息、存儲池信息、虛擬卷信息、映射檢索信息、空閑資源信息。物理硬盤信息包括:物理硬盤標(biāo)識、物理硬盤存儲資源數(shù)量、所屬存儲池的標(biāo)識、本硬盤的空閑資源信息的起始地址、本硬盤的空閑資源信息的長度。存儲池信息包括:存儲池標(biāo)識、粒度、存儲池名稱、物理硬盤數(shù)量。虛擬卷信息包括:虛擬卷標(biāo)識、虛擬卷名稱、所屬存儲池標(biāo)識、虛擬卷容量、虛擬卷類型、元數(shù)據(jù)卷標(biāo)識。映射檢索信息:間接映射??臻e資源信息索引本硬盤上的可用空閑資源的位置。
[0211]
【權(quán)利要求】
1.一種日志映射的塊設(shè)備精簡配置方法,其特征在于,所述方法包括: 硬盤數(shù)據(jù)布局步驟:將存儲資源格式化,將硬盤數(shù)據(jù)布局進(jìn)行資源池化管理,以支持精簡配置的資源分配及日志映射信息的存儲和管理; 精簡配置資源管理步驟:基于所述資源池化的硬盤,將數(shù)據(jù)按照存儲資源寫時按需分配方式順序?qū)懭胨鲇脖P的下一空閑資源,并生成寫操作相應(yīng)的映射信息; 映射信息日志化步驟:將所述寫操作映射信息按照 追加分配方式進(jìn)行日志化存儲,并基于異步更新方式進(jìn)行所述映射信息的修改操作,以實現(xiàn)多用戶多虛擬卷并發(fā)順序的數(shù)據(jù)寫入。
2.根據(jù)權(quán)利要求1所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述方法還包括: 系統(tǒng)自舉和恢復(fù)步驟:基于兩級檢查點方法和動態(tài)日志區(qū)管理方法,實現(xiàn)所述存儲資源的寫時分配加速,及系統(tǒng)自舉快速恢復(fù)和系統(tǒng)崩潰快速恢復(fù)。
3.根據(jù)權(quán)利要求1所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述單位包括: 粒:用于存儲資源管理的最小單位; 段:由固定數(shù)量的多個連續(xù)的所述粒組成的定長資源,包含:數(shù)據(jù)和反向映射表。所述反向映射表用于持久存儲所述段中用于數(shù)據(jù)的所述粒的反向映射信息,所述反向映射信息用于從硬盤地址查詢獲得虛擬地址; 簇:由固定數(shù)量的多個連續(xù)的所述段組成的定長資源,存儲池向動態(tài)日志區(qū)分配資源的單位,包括:簇編號、空閑粒數(shù)量、可分配粒數(shù)量、空閑粒位圖和時間戳; 硬盤元數(shù)據(jù)信息:用于所述系統(tǒng)自舉和恢復(fù)步驟中讀取的數(shù)據(jù)信息,包括:物理硬盤信息、存儲池信息、虛擬卷信息、映射檢索信息和空閑資源信息; 元數(shù)據(jù)卷:用于將正向映射表中的正向映射信息及其修改操作寫入日志,所述元數(shù)據(jù)卷與虛擬卷--對應(yīng)。
4.根據(jù)權(quán)利要求3所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述反向映射表包含:虛擬粒號、校驗信息、虛擬卷標(biāo)識、釋放的硬盤粒號和時間戳,所述校驗信息用于檢查存儲數(shù)據(jù)的所述粒與所述粒的反向映射表是否完成,所述時間戳用于記錄一個所述反向映射信息的生成時間,所述反向映射信息與數(shù)據(jù)采取異步寫入方式。
5.根據(jù)權(quán)利要求3所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述正向映射表存儲于主存中,用于存儲從虛擬地址查詢獲得硬盤地址的正向映射信息,所述正向映射表包含區(qū)映射,所述區(qū)映射為連續(xù)的虛擬粒和連續(xù)的硬盤粒之間的映射,所述區(qū)映射包括:物理存儲資源設(shè)備標(biāo)志、物理起始粒編號、虛擬卷標(biāo)志、虛擬起始粒編號和連續(xù)粒的數(shù)量。
6.根據(jù)權(quán)利要求1所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述精簡配置資源管理步驟包括: 寫操作步驟:基于資源寫時分配和日志式分配策略,將數(shù)據(jù)按順序追加寫入硬盤,并生成映射信息; 讀操作步驟:通過查找所述正向映射表的映射信息,進(jìn)行數(shù)據(jù)讀取。
7.根據(jù)權(quán)利要求1所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述映射記錄日志化步驟包括: 映射信息寫步驟:將所述寫操作步驟生成的新的映射信息寫入硬盤的所述反向映射表,成功后更新存儲于主存中的所述正向映射表,并將所述正向映射表的映射信息異步寫入日志; 映射信息延遲寫入步驟:所述正向映射信息分組打包為所述粒大小的正向映射記錄,所述正向映射記錄的時間戳為打包時刻組中所有所述正向映射信息時間戳最小值; 映射信息修改步驟:通過解除映射和重新映射的所述映射記錄,釋放虛擬卷的存儲資源或在所述虛擬卷之間進(jìn)行映射關(guān)系轉(zhuǎn)換; 映射信息回收步驟:正向映射記錄寫入日志結(jié)束后,回收舊的映射記錄的存儲資源,所述映射記錄包含:所述正向映射記錄、解除映射記錄和重新映射記錄。
8.根據(jù)權(quán)利要求6所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述基于資源寫時分配和日志式分配策略包括: 將所述寫操作劃分為對齊寫和非對齊寫,所述對齊寫為寫入日志末尾下一個空閑塊,所述非對齊寫為寫入上一次寫入的日志位置,作為所述對齊寫的補(bǔ)充。
9.根據(jù)權(quán)利要求2所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述系統(tǒng)自舉和恢復(fù)步驟包括: 兩級檢查點步驟:通過一級檢查點存儲虛擬卷的正向映射信息,并通過二級檢查點存儲所述正向映射信息的檢索信息; 動態(tài)日志區(qū)管理步驟:動態(tài)移動和增減寫入時分配資源的區(qū)域,以實現(xiàn)資源的動態(tài)分配,并實現(xiàn)在動態(tài)日志區(qū) 中的檢索; 系統(tǒng)恢復(fù)步驟:通過讀取正向映射信息、動態(tài)日志區(qū)信息和映射修改記錄,完成系統(tǒng)恢復(fù)。
10.根據(jù)權(quán)利要求6所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述寫操作步驟還包括: 接收寫操作步驟:將寫入的數(shù)據(jù)按照所述粒劃分為多個寫操作數(shù)據(jù)塊,對于所述數(shù)據(jù)塊長度為所述粒長度的數(shù)據(jù),采取所述對齊寫方式,對于所述數(shù)據(jù)塊長度小于所述粒長度的數(shù)據(jù),采取所述非對齊寫方式; 查找正向映射表步驟:在主存中的所述正向映射表中查找所述數(shù)據(jù)塊的映射信息,如果查找所述映射信息成功,則判斷是否采取所述對齊寫方式,如果查找所述映射信息失敗,則按照所述追加寫方式分配新的存儲資源; 對齊寫步驟:對于需要采取所述對齊寫方式的所述數(shù)據(jù)塊,將所述數(shù)據(jù)塊寫入日志中上次寫入位置后的第一塊空閑塊,并異步的在日志當(dāng)前段的末尾記錄虛擬卷地址信息,更新主存中所述正向映射表信息和時間戳; 非對齊寫步驟:對于需要采取所述非對齊寫方式的所述數(shù)據(jù)塊,將所述數(shù)據(jù)塊寫入所述粒在日志的上次的物理位置,并且所述正向映射表中的映射信息保持不變; 回收步驟:回收失效的存儲資源,虛擬卷寫操作成功。
11.根據(jù)權(quán)利要求7所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述映射信息修改步驟還包括: 解除映射步驟:用于釋放所述虛擬卷的存儲資源; 重新映射步驟:用于在所述虛擬卷之間進(jìn)行映射關(guān)系的轉(zhuǎn)換。
12.根據(jù)權(quán)利要求11所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述解除映射步驟還包括: 接收解除請求步驟:虛擬卷接收到解除映射請求,根據(jù)所述解除映射請求獲取待解除映射的映射區(qū)間,并按照所述映射區(qū)間長度計算所需映射記錄的存儲空間,根據(jù)所述映射記錄的存儲空間分配長度為所述粒整數(shù)倍的寫緩存; 查找解除步驟:針對所述映射區(qū)間內(nèi)每個待解除映射數(shù)據(jù)塊的虛擬地址在主存中查找所述正向映射表,查找命中所述正向映射表的相應(yīng)表項,并將解除映射信息記錄在所述寫緩存,并將所述寫緩存下刷寫入日志; 刪除映射步驟:對所述映射區(qū)間內(nèi)所述待解除映射數(shù)據(jù)塊的虛擬地址進(jìn)行刪除操作,刪除主存中所述正向映射表中的對應(yīng)表項,更新所述正向映射表中對應(yīng)映射區(qū)間的時間戳為當(dāng)前時間,并將所述待解除映射數(shù)據(jù)塊標(biāo)記為空閑資源。
13.根據(jù)權(quán)利要求11所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述重新映射步驟還包括: 接收重新映射請求步驟:虛擬卷接收重新映射請求,根據(jù)所述重新映射請求獲取重新映射的映射區(qū)間,并按照所述映射區(qū)間長度計算所需映射記錄的存儲空間,根據(jù)所述映射記錄的存儲空間分配長度為所述粒整數(shù)倍的寫緩存; 查找映射步驟:根 據(jù)所述映射區(qū)間內(nèi)每個待重新映射的虛擬地址在主存中查找待映射的源虛擬卷,在所述源虛擬卷中查找命中所述正向映射表的相應(yīng)表項,并根據(jù)同一虛擬地址進(jìn)行待映射的目標(biāo)虛擬卷查找,在所述目標(biāo)虛擬卷中查找命中所述正向映射表的表項,將重新映射的操作記錄在所述寫緩存中,并下刷寫入日志; 更新步驟:刪除主存中所述源虛擬卷的正向映射表中查找成功的表項,更新所述源虛擬卷中映射區(qū)間的時間戳為當(dāng)前時間,并更新所述目標(biāo)虛擬卷的查找成功表項,更新所述目標(biāo)虛擬卷中映射區(qū)間的時間戳為當(dāng)前時間,并將所述目標(biāo)虛擬卷中解除映射的數(shù)據(jù)塊標(biāo)記為空閑資源。
14.根據(jù)權(quán)利要求9所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述兩級檢查點步驟還包括: 掃描步驟:將主存中所述正向映射表的信息按組進(jìn)行分配,所述組為所述簇中的所有映射,對所述組進(jìn)行掃描; 分裂步驟:如果所述組占用空間大于所述粒的指定尺寸,則將所述組分裂為多個組,對分裂后的所述組進(jìn)行掃描; 合并步驟:如果所述組占用空間小于所述粒的指定尺寸,則將所述組進(jìn)行合并,對合并后的所述組進(jìn)行掃描; 記錄步驟:如果所述組的占用空間在所述粒的指定尺寸內(nèi),則分配一個所述粒尺寸的緩存區(qū),將所述組中的映射區(qū)間及當(dāng)前時間戳記錄到所述緩存區(qū); 釋放回收步驟:如果所述正向映射表屬于所述元數(shù)據(jù)卷,則將所述緩存區(qū)下刷到所述硬盤頭部的映射檢索區(qū),并回收失效的映射記錄的存儲資源,如果所述正向映射表屬于所述虛擬卷,則將所述緩存區(qū)下刷到所述元數(shù)據(jù)卷,并釋放反向映射資源。
15.根據(jù)權(quán)利要求9所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述動態(tài)日志區(qū)管理步驟還包括: 寫時資源分配步驟:用于在寫時分配時,從動態(tài)日志區(qū)分配資源;動態(tài)日志管理步驟:用于系統(tǒng)恢復(fù)時,讀取相關(guān)映射信息,進(jìn)行時間戳比較,將最新時間戳的映射信息恢復(fù)到主存中。
16.根據(jù)權(quán)利要求9所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述系統(tǒng)恢復(fù)步驟還包括: 讀取檢索信息步驟:讀取硬盤上的正向映射表,加載所述正向映射表到主存,讀取所述硬盤上的動態(tài)日志區(qū)檢索信息,進(jìn)行動態(tài)日志區(qū)定位; 掃描步驟:順序掃描所述動態(tài)日志區(qū),讀取映射修改記錄,并根據(jù)所述映射修改記錄查詢正向映射表,如果所述映射修改記錄的時間戳小于所述正向映射表的時間戳,則丟棄所述映射修改記錄,如果所述映射修改記錄的時間戳大于所述正向映射表的時間戳,則將所述映射修改記錄更新到所述正向映射表,并回收所述映射修改記錄的存儲資源。
17.根據(jù)權(quán)利要求15所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述寫時資源分配步驟還包括: 查詢資源步驟:查詢當(dāng)前簇的存儲資源,如果所述簇沒有空閑資源,則查詢下一個所述簇; 分配資源步驟:如果所述查詢資源步驟中,查詢所述當(dāng)前簇中有空閑資源,則從所述當(dāng)前簇中分配存儲資源; 檢查動態(tài)資源步驟:檢 查當(dāng)前動態(tài)日志區(qū)的總空閑資源數(shù)量,如果所述空閑資源小于一定閾值,則執(zhí)行所述動態(tài)日志管理步驟。
18.根據(jù)權(quán)利要求15所述日志映射的塊設(shè)備精簡配置方法,其特征在于,所述動態(tài)日志管理步驟還包括: 查找空閑資源步驟:在存儲資源池中順序查找有空閑的所述簇,如果查找成功,則將所述簇的位置信息更新到主存中的動態(tài)日志檢索,分配動態(tài)日志檢索區(qū)長度的緩存區(qū); 更新簇步驟:在所述緩存區(qū)中填入時間戳和所述動態(tài)日志區(qū)的簇的相關(guān)信息,將緩存區(qū)下刷到存儲池中所有硬盤的動態(tài)日志檢索區(qū),并更新主存中的動態(tài)日志區(qū)信息; 通知步驟:所述查找空閑資源步驟中,如果查找空閑的所述簇失敗,則輸出通知用戶信肩、O
【文檔編號】G06F3/06GK104035729SQ201410218798
【公開日】2014年9月10日 申請日期:2014年5月22日 優(yōu)先權(quán)日:2014年5月22日
【發(fā)明者】卜慶忠, 董歡慶, 許魯, 孫振元 申請人:中國科學(xué)院計算技術(shù)研究所, 天津中科藍(lán)鯨信息技術(shù)有限公司