一種精簡配置存儲池數據一致性維護的方法及裝置的制造方法
【技術領域】
[0001 ]本發明涉及計算機數據保護和存儲領域,更具體地說,涉及一種精簡配置存儲池數據一致性維護的方法及裝置。
【背景技術】
[0002]當前計算機存儲數據方式多樣,本地磁盤存儲、存儲區域網絡SAN(StorageAreaNetwork)、網絡附加存儲NAS(Network Attached Storage)、直連存儲(Direct AttachedStorage)等,在計算機系統或存儲系統中,一塊或多塊磁盤被虛擬化為存儲池,再劃分邏輯卷提供給客戶端或上層文件系統使用。邏輯卷一般在創建時就分配了物理空間,而只有應用寫入數據,存放了應用數據的空間才是真正有用的,空閑的物理空間分配了卻沒有有效數據,也不能為其他邏輯卷使用。為了提高存儲空間利用率,存儲行業發展了自動精簡配置存儲特性,即邏輯卷在創建時不分配物理空間,或只分配部分空間,當應用寫入數據時若未分配空間則實時分配物理空間進行存儲。精簡配置存儲池用元數據記錄邏輯卷邏輯空間及其物理空間位置,為了提高性能,運行時一般元數據在內存中相應存放和處理,累積一定更新量后再寫入存儲介質,從而發生系統掉電時可能會丟失一部分元數據,進而丟失部分數據。
[0003]因此,如何避免由于系統掉電造成元數據和數據丟失,是本領域人員需要解決的問題。
【發明內容】
[0004]本發明的目的在于提供一種精簡配置存儲池數據一致性維護的方法及裝置,以避免由于系統掉電造成元數據和數據的丟失。
[0005]為實現上述目的,本發明實施例提供了如下技術方案:
[0006]—種精簡配置存儲池數據一致性維護的方法,包括:
[0007]接收數據空間修改指令;
[0008]根據所述修改指令對映射樹中的邏輯卷空間映射信息進行修改,并對超級塊中的元數據版本號進行修改;
[0009]將超級塊中的元數據版本號信息、修改后的邏輯卷空間映射信息及修改指令類型信息保存至日志空間。
[0010]優選的,對超級塊中的元數據版本號進行修改,包括:
[0011]將超級塊中的元數據版本號加一。
[0012]優選的,所述修改指令至少包括增加指令、刪除指令和數據迀移指令中的一個。
[0013]優選的,若所述修改指令為增加指令,則所述接收數據空間修改指令之后還包括:
[0014]將寫數據的起始地址作為鍵值中的邏輯地址,查詢所述映射樹中是否存在所述邏輯地址的物理區段;
[0015]若不存在,則執行根據所述修改指令對映射樹中的邏輯卷空間映射信息進行修改的步驟;
[0016]若所述修改指令為刪除修改指令或者數據迀移修改指令,則所述接收數據空間修改指令之后,還包括:
[0017]將寫數據的起始地址作為鍵值中的邏輯地址,查詢所述映射樹中是否存在所述邏輯地址的物理區段;
[0018]若存在,則執行根據所述修改指令對映射樹中的邏輯卷空間映射信息進行修改的步驟。
[0019]優選的,將超級塊中的元數據版本號信息、修改后的邏輯卷空間映射信息及修改指令類型信息保存至日志空間之后,還包括:
[0020]在存儲池重啟時,判斷所述存儲池中元數據版本號信息是否小于所述日志空間中存儲的元數據版本號信息;
[0021 ]若是,則確定所述存儲池缺少的元數據版本號信息;
[0022]從所述日志空間中獲取與所述存儲池缺少的元數據版本號信息相對應的邏輯卷空間映射信息及修改指令類型信息,并對所述存儲池進行修復。
[0023]—種精簡配置存儲池數據一致性維護的裝置,包括:
[0024]接收模塊,用于接收數據空間修改指令;
[0025]邏輯卷空間映射信息修改模塊,用于根據所述修改指令對映射樹中的邏輯卷空間映射信息進行修改;
[0026]元數據版本號信息修改模塊,用于對超級塊中的元數據版本號進行修改;
[0027]保存模塊,用于將超級塊中的元數據版本號信息、修改后的邏輯卷空間映射信息及修改指令類型信息保存至日志空間。
[0028]優選的,所述元數據版本號信息修改模塊為將超級塊中的元數據版本號加一的模塊。
[0029]優選的,所述接收模塊包括如下單元中的至少一個:
[0030]第一接收單元,用于接收數據空間增加指令;
[0031]第二接收單元,用于接收數據空間刪除指令;
[0032]第三接收單元,用于接收數據空間數據迀移指令。
[0033]優選的,所述裝置還包括:
[0034]第一查詢模塊,用于當所述修改指令為增加指令時,將寫數據的起始地址作為鍵值中的邏輯地址,查詢所述映射樹中是否存在所述邏輯地址的物理區段;若不存在,則觸發所述邏輯卷空間映射信息修改模塊;
[0035]第二查詢模塊,用于當所述修改指令為刪除修改指令或者數據迀移修改指令時,將寫數據的起始地址作為鍵值中的邏輯地址,查詢所述映射樹中是否存在所述邏輯地址的物理區段;若存在,則觸發所述邏輯卷空間映射信息修改模塊。
[0036]優選的,所述裝置還包括:
[0037]判斷模塊,用于在存儲池重啟時,判斷所述存儲池中元數據版本號信息是否小于所述日志空間中存儲的元數據版本號信息;
[0038]若是,則觸發修復模塊;
[0039]所述修復模塊,用于確定所述存儲池缺少的元數據版本號信息,從所述日志空間中獲取與所述存儲池缺少的元數據版本號信息相對應的邏輯卷空間映射信息及修改指令類型信息,并對所述存儲池進行修復。
[0040]通過以上方案可知,本發明實施例提供的一種精簡配置存儲池數據一致性維護的方法及裝置,包括:接收數據空間修改指令;根據所述修改指令對映射樹中的邏輯卷空間映射信息進行修改,并對超級塊中的元數據版本號進行修改;將超級塊中的元數據版本號信息、修改后的邏輯卷空間映射信息及修改指令類型信息保存至日志空間。
[0041 ]可見,在本實施例中,在根據修改指令對映射樹中的邏輯卷空間映射信息進行修改時,同時將超級塊中的元數據版本號信息、修改后的邏輯卷空間映射信息及修改指令類型信息備份至日志空間,以備在系統掉電時,通過備份的日志數據恢復數據,解決系統掉電造成元數據和數據丟失問題,并且存儲池中的日志存儲數據量極小,對系統性能影響低。
【附圖說明】
[0042]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0043]圖1為本發明實施例公開的一種精簡配置存儲池數據一致性維護的方法流程示意圖;
[0044]圖2為本發明實施例公開的邏輯卷數據映射結構示意圖;
[0045]圖3為本發明實施例公開的增加映射信息操作的元數據示意圖;
[0046]圖4為本發明實施例公開的增加映射信息操作的日志結構示意圖;
[0047]圖5為本發明實施例公開的一種精簡配置存儲池數據一致性維護的裝置結構示意圖。
【具體實施方式】
[0048]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0049]本發明實施例公開了一種精簡配置存儲池數據一致性維護的方法及裝置,以避免由于系統掉電造成元數據和數據的丟失。
[0050]參見圖1,本發明實施例提供的一種精簡配置存儲池數據一致性維護的方法,包括:
[0051 ] SlOl、接收數據空間修改指令;
[0052]具體的,在本實施例中的精簡配置存儲池由元數據空間、日志空間和數據空間組成。
[0053]1、元數據空間存放元數據,記錄存儲池和邏輯卷信息