專利名稱:分區(qū)表信息備份方法和裝置以及存儲系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實施例涉及存儲技術(shù),尤其涉及一種分區(qū)表信息備份方法、一種分區(qū)表信 息備份裝置和一種存儲系統(tǒng)。
背景技術(shù):
在存儲技術(shù)領(lǐng)域,對于大容量的數(shù)據(jù)存儲,采用磁盤冗余陣列(Redundant Arrays of Inexpensive Disks,簡稱RAID)技術(shù)。RAID技術(shù)將下層真正的磁盤封裝成邏輯單元號 (Logical Unit Number,簡稱LUN)的形式并映射給上層的操作系統(tǒng)。每一個LUN代表一個 LUN設(shè)備,該LUN設(shè)備對應(yīng)于操作系統(tǒng)上的一個標(biāo)稱的磁盤。如果操作系統(tǒng)需要對標(biāo)稱的磁 盤進行數(shù)據(jù)讀寫操作,則將讀寫操作指令發(fā)送給存儲控制器,通過存儲控制器讀寫下層真 正的磁盤。在數(shù)據(jù)存儲時,將LUN設(shè)備等存儲設(shè)備劃分成多個子區(qū)域,將數(shù)據(jù)在多個子區(qū)域 中分開存放,其中每一個子區(qū)域稱為一個分區(qū)。采用分區(qū)表記錄每一個分區(qū)對應(yīng)的下層實 際磁盤的位置以及容量大小,在數(shù)據(jù)讀寫時,需要根據(jù)分區(qū)表的指引找到下層實際磁盤的 相應(yīng)位置,進行數(shù)據(jù)讀寫操作。在實際應(yīng)用中,由于錯誤操作、磁盤故障、壞道、病毒破壞等 原因,會出現(xiàn)數(shù)據(jù)破壞或丟失的情況,其中最常見的一種情況是分區(qū)表信息被破壞,這種情 況損壞大,將直接導(dǎo)致對應(yīng)分區(qū)的大量甚至所有數(shù)據(jù)丟失或者不可使用?,F(xiàn)有的數(shù)據(jù)存儲 方法并不對分區(qū)表信息進行備份,或采用定期人工備份分區(qū)表的方法。如果不對分區(qū)表信息進行備份,在發(fā)生數(shù)據(jù)丟失時,采用數(shù)據(jù)恢復(fù)軟件查找丟失 的數(shù)據(jù)。這些數(shù)據(jù)恢復(fù)軟件通常需要對發(fā)生數(shù)據(jù)丟失的整個LUN設(shè)備進行全面掃描,讀取 對應(yīng)LUN設(shè)備的所有數(shù)據(jù)塊并進行分析,根據(jù)分析結(jié)果拼湊出原數(shù)據(jù)。采用該數(shù)據(jù)恢復(fù)方 法,需要對LUN進行全面掃描,而存儲陣列的LUN —般都很大,因此數(shù)據(jù)恢復(fù)過程會消耗大 量時間。并且,采用該數(shù)據(jù)恢復(fù)方法恢復(fù)的數(shù)據(jù)不完整,會出現(xiàn)目錄結(jié)構(gòu)丟失和混亂、文檔 名稱丟失、文檔無法打開等情況。因為采用對LUN進行全面掃描,因此會恢復(fù)一些在發(fā)生數(shù) 據(jù)丟失之前已經(jīng)刪除的文件,導(dǎo)致恢復(fù)的數(shù)據(jù)重名和混亂。如果定期人工備份分區(qū)表,當(dāng)出現(xiàn)問題以后,可以將以前的備份分區(qū)表恢復(fù)到對 應(yīng)的LUN上。由于只能由操作者定期手動備份,因此無法跟蹤到突發(fā)的數(shù)據(jù)丟失或改變,例 如操作者無法獲知病毒對數(shù)據(jù)的突然修改,從而導(dǎo)致缺失備份時機,因此難以恢復(fù)到最近 一次的正常狀態(tài)。并且,在數(shù)據(jù)恢復(fù)時,將備份的分區(qū)表結(jié)構(gòu)覆蓋到當(dāng)前結(jié)構(gòu)上,將導(dǎo)致當(dāng) 前數(shù)據(jù)狀態(tài)不可逆的破壞,一旦恢復(fù)失敗,二次恢復(fù)成功率很低。并且,操作者只能從主機 上獲取備份信息,因此每臺主機只能對映射給自己的LUN對應(yīng)的分區(qū)表信息進行備份,而 無法備份其它LUN對應(yīng)的分區(qū)表信息,如果需要備份所有LUN對應(yīng)的分區(qū)表信息,則需要在 所有的主機上進行定期人工備份操作,操作過程麻煩,所需時間長,無法對所有LUN進行統(tǒng) 一管理。總之,現(xiàn)有的數(shù)據(jù)存儲方法中,還沒有能夠準(zhǔn)確完整地備份分區(qū)表信息的方法。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種分區(qū)表信息備份方法,用以解決現(xiàn)有技術(shù)中的缺陷,保證 分區(qū)表信息的準(zhǔn)確性和完整性。本發(fā)明實施例還提供一種分區(qū)表信息備份裝置,用以解決現(xiàn)有技術(shù)中的缺陷,保 證分區(qū)表信息的準(zhǔn)確性和完整性。本發(fā)明實施例還提供一種存儲系統(tǒng),用以解決現(xiàn)有技術(shù)中的缺陷,保證分區(qū)表信 息的準(zhǔn)確性和完整性。本發(fā)明實施例提供一種分區(qū)表信息備份方法,包括獲取與邏輯單元號LUN設(shè)備的分區(qū)表相關(guān)的輸入輸出I/O數(shù)據(jù)流;根據(jù)所述LUN設(shè)備的分區(qū)格式,獲取所述LUN設(shè)備的當(dāng)前分區(qū)表信息;判斷當(dāng)前分區(qū)表信息與前次備份的分區(qū)表信息是否相同,如果是,返回執(zhí)行所述 獲取與LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流的步驟,否則,備份當(dāng)前分區(qū)表信息并記錄時間 戳。本發(fā)明實施例還提供一種分區(qū)表信息備份裝置,包括監(jiān)控模塊,用于獲取與邏輯單元號LUN設(shè)備的分區(qū)表相關(guān)的輸入輸出I/O數(shù)據(jù)流 后控制獲取模塊開啟;獲取模塊,用于根據(jù)所述LUN設(shè)備的分區(qū)格式,獲取所述LUN設(shè)備的當(dāng)前分區(qū)表信 息;判斷模塊,用于判斷當(dāng)前分區(qū)表信息與前次備份的分區(qū)表信息是否相同,如果是, 控制所述監(jiān)控模塊重新獲取與LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流;否則,控制備份模塊備 份當(dāng)前分區(qū)表信息并記錄時間戳;備份模塊,用于備份當(dāng)前分區(qū)表信息并記錄時間戳。本發(fā)明實施例還提供一種存儲系統(tǒng),包括存儲控制器,用于將磁盤介質(zhì)映射為一個以上邏輯單元號LUN設(shè)備;磁盤介質(zhì),用于存儲所述一個以上LUN設(shè)備的數(shù)據(jù)和分區(qū)表信息;分區(qū)表信息備份裝置,用于獲取與所述LUN設(shè)備的分區(qū)表相關(guān)的輸入輸出I/O數(shù) 據(jù)流;根據(jù)所述LUN設(shè)備的分區(qū)格式,獲取所述LUN設(shè)備的當(dāng)前分區(qū)表信息;判斷當(dāng)前分區(qū) 表信息與前次備份的分區(qū)表信息是否相同,如果是,重新獲取與所述LUN設(shè)備的分區(qū)表相 關(guān)的I/O數(shù)據(jù)流,否則,備份當(dāng)前分區(qū)表信息并記錄時間戳。由上述技術(shù)方案可知,本發(fā)明通過對LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流進行監(jiān) 控,當(dāng)獲取到上述I/O數(shù)據(jù)流時,根據(jù)LUN設(shè)備的分區(qū)格式獲取該LUN設(shè)備的當(dāng)前分區(qū)表信 息并判斷當(dāng)前分區(qū)表信息與前次備份的分區(qū)表信息是否相同,當(dāng)不相同時,備份當(dāng)前分區(qū) 表信息并記錄時間戳。因為在監(jiān)測到I/O數(shù)據(jù)流時對分區(qū)表信息進行備份,因此每當(dāng)分區(qū) 表信息發(fā)生變化時均會執(zhí)行備份操作,從而能夠保證分區(qū)表信息的準(zhǔn)確性和完整性。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā) 明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實施例一的分區(qū)表信息備份方法的流程圖;圖2為本發(fā)明實施例二的分區(qū)表信息備份方法的流程圖;圖3為本發(fā)明實施例三的分區(qū)表信息備份裝置的結(jié)構(gòu)示意圖;圖4為本發(fā)明實施例四的存儲系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例 中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是 本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員 在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。圖1為本發(fā)明實施例一的分區(qū)表信息備份方法的流程圖。如圖1所示,該方法包 括以下過程。步驟101 獲取與LUN設(shè)備的分區(qū)表相關(guān)的輸入輸出anput/Output,簡稱I/O)數(shù) 據(jù)流。步驟102 根據(jù)LUN設(shè)備的分區(qū)格式,獲取該LUN設(shè)備的當(dāng)前分區(qū)表信息。步驟103 判斷當(dāng)前分區(qū)表信息與前次備份的分區(qū)表信息是否相同,如果是,返回 步驟101,否則,執(zhí)行步驟104。步驟104 備份當(dāng)前分區(qū)表信息并記錄時間戳。在本發(fā)明實施例一中,通過對LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流進行監(jiān)控,當(dāng)獲 取到上述I/O數(shù)據(jù)流時,根據(jù)LUN設(shè)備的分區(qū)格式獲取該LUN設(shè)備的當(dāng)前分區(qū)表信息并判 斷當(dāng)前分區(qū)表信息與前次備份的分區(qū)表信息是否相同,當(dāng)不相同時,備份當(dāng)前分區(qū)表信息 并記錄時間戳。因為在監(jiān)測到I/O數(shù)據(jù)流時對分區(qū)表信息進行備份,因此每當(dāng)分區(qū)表信息 發(fā)生變化時均會執(zhí)行備份操作,從而能夠保證分區(qū)表信息的準(zhǔn)確性和完整性。圖2為本發(fā)明實施例二的分區(qū)表信息備份方法的流程圖。如圖2所示,該方法包 括以下過程。步驟201 存儲控制器存儲LUN設(shè)備的分區(qū)表對應(yīng)的邏輯塊尋址(Logical Block Addressing,簡稱 LBA)地址。在本步驟中,采用LBA記錄表存儲LUN設(shè)備的分區(qū)表對應(yīng)的LBA地址。具體地,在 每一個LUN設(shè)備初始化以后,生成一個對于該LUN設(shè)備的LBA記錄表,該記錄表中的LBA地 址僅包括該LUN設(shè)備的第一個扇區(qū)的地址。一種較佳的實施方式是,可以將上述LBA記錄 表存儲在磁盤冗余陣列的系統(tǒng)磁盤中,也可以將上述LBA記錄表存儲在存儲控制器自身的 緩存中。步驟202 存儲控制器獲取與LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流。在本步驟中,存儲控制器獲取與LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流的具體方法 包括存儲控制器獲取存儲的LUN設(shè)備的分區(qū)表對應(yīng)的LBA地址的I/O數(shù)據(jù)流。由于存儲 控制器用于向磁盤寫入I/O數(shù)據(jù)流,因此存儲控制器能夠?qū)︶槍ι鲜鯨BA地址的I/O數(shù)據(jù) 流進行監(jiān)控,當(dāng)監(jiān)控到上述LBA地址發(fā)生了 I/O數(shù)據(jù)流的寫入時,通過執(zhí)行以下步驟203啟 動分區(qū)表備份過程。
步驟203 存儲控制器根據(jù)LUN設(shè)備的分區(qū)格式,獲取LUN設(shè)備的當(dāng)前分區(qū)表信 肩、ο在本步驟中,存儲控制器根據(jù)需要進行備份的LUN設(shè)備所采用的分區(qū)格式,獲取 當(dāng)前該分區(qū)格式所規(guī)定的分區(qū)表扇區(qū)中的信息,該信息即為該LUN設(shè)備的當(dāng)前分區(qū)表信 息。本發(fā)明的分區(qū)信息表備份方法具體可以應(yīng)用于對多種操作系統(tǒng)的分區(qū)表信息備份, 例如微軟視窗操作系統(tǒng)(Microsoft Windows)、Linux操作系統(tǒng)、蘋果公司的操作系統(tǒng) (Apple Mac OS)、SUN公司的操作系統(tǒng)(Solaris)等,也可以應(yīng)用于對多種分區(qū)文件系統(tǒng)進 行文件系統(tǒng)重要結(jié)構(gòu)信息備份,例如新技術(shù)文件系統(tǒng)(New Technology File System,簡 稱NTFS)和文檔分配表(File Allocation Table,簡稱FAT)文件系統(tǒng)的DOS引導(dǎo)記錄(DOS Boot Record,簡稱DBR)結(jié)構(gòu)、NTFS文件系統(tǒng)的主文件表(Master File Table,簡稱$MFT) 和FAT16/32文件系統(tǒng)中的FAT表、第三代擴展文件系統(tǒng)(Third extended file system,簡 稱Ext3)/XFS等文件系統(tǒng)的超級塊、邏輯卷管理(Logical Volume Manager,簡稱LVM)和 Veritas公司卷管理(Veritas Volume Manager,簡稱VxVM)卷的元數(shù)據(jù)等。在本步驟中, 只要根據(jù)備份方法應(yīng)用的系統(tǒng)的具體分區(qū)格式,獲取該格式規(guī)定的分區(qū)表扇區(qū)中的信息即 可。在本發(fā)明實施例二中,僅以常用的Windows和Linux系統(tǒng)為例,由于在上述兩種系統(tǒng) 中,LUN設(shè)備采用的分區(qū)格式包括主引導(dǎo)記錄(Master Boot Record,簡稱MBR)分區(qū)格式 和全球唯一標(biāo)識符分區(qū)格式(Globally Unique Identifier Partition Table Format,簡 稱GPT)分區(qū)格式,因此,本步驟具體可以包括以下過程。首先,存儲控制器判斷LUN設(shè)備的分區(qū)表屬于MBR分區(qū)格式或GPT分區(qū)格式。然后,如果是MBR分區(qū)格式,則通過分析一個以上分區(qū)表項獲取第一指定扇區(qū),記 錄第一指定扇區(qū)的當(dāng)前分區(qū)表信息。具體方法為判斷一個以上分區(qū)表項是否均為空。如 果是,該一個以上分區(qū)表項都為空,則直接執(zhí)行以下步驟204。否則,該一個以上分區(qū)表項 不都為空,則判斷一個以上分區(qū)表項是否包括擴展分區(qū),由于MBR分區(qū)格式的擴展分區(qū)在 該分區(qū)表項的04H位置的標(biāo)識符為OxOF或0x05,因此判斷一個以上分區(qū)表項是否包括擴 展分區(qū)的具體方法為判斷一個以上分區(qū)表項中是否包括標(biāo)識符為OxOF或0x05的分區(qū)表 項。如果一個以上分區(qū)表項中包括標(biāo)識符為OxOF或0x05的分區(qū)表項,說明包括擴展分區(qū), 則第一指定扇區(qū)包括擴展引導(dǎo)記錄(Extended Boot Record,簡稱EBR)扇區(qū)和MBR扇區(qū),記 錄EBR扇區(qū)和MBR扇區(qū)的當(dāng)前分區(qū)表信息。如果一個以上分區(qū)表項中不包括標(biāo)識符為OxOF 或0x05的分區(qū)表項,說明不包括擴展分區(qū),則第一指定扇區(qū)只包括MBR扇區(qū),記錄MBR扇區(qū) 的當(dāng)前分區(qū)表信息。如果是GPT分區(qū)格式,則記錄第二指定扇區(qū)的當(dāng)前分區(qū)表信息。具體地,GPT分區(qū) 格式的分區(qū)表項的格式及長度固定,第二指定扇區(qū)包括LUN設(shè)備的最前34個扇區(qū)與最后33 個扇區(qū),則記錄LUN設(shè)備的最前34個扇區(qū)與最后33個扇區(qū)的當(dāng)前分區(qū)表信息,其中,所述 LUN設(shè)備的最前34個扇區(qū),例如,可以是LUN設(shè)備的0 33號扇區(qū)。步驟204 存儲控制器判斷當(dāng)前分區(qū)表信息與前次備份的分區(qū)表信息是否相同, 如果是,返回步驟202 ;否則,執(zhí)行步驟205和步驟206。其中,步驟205和步驟206的執(zhí)行 順序可以互換或同時執(zhí)行。步驟205 存儲控制器備份當(dāng)前分區(qū)表信息并記錄時間戳。在本步驟中,一種較佳的實施方式是,存儲控制器可以將當(dāng)前分區(qū)表信息備份在磁盤冗余陣列的系統(tǒng)磁盤中,也可以將當(dāng)前分區(qū)表信息備份在存儲控制器自身的緩存中。 該時間戳記錄當(dāng)前時間。步驟206 存儲控制器根據(jù)當(dāng)前分區(qū)表信息更新存儲的LUN設(shè)備的分區(qū)表對應(yīng)的 LBA地址。在本步驟中,在步驟201中生成的LBA記錄表中更新存儲上述第一指定扇區(qū)和第 二指定扇區(qū)的LBA地址。步驟207 存儲控制器根據(jù)備份的分區(qū)表信息恢復(fù)LUN設(shè)備的數(shù)據(jù)。在本步驟中,可以根據(jù)備份的分區(qū)表信息,采用任何數(shù)據(jù)恢復(fù)方法,對LUN設(shè)備進 行數(shù)據(jù)恢復(fù)。一種較佳的實施方式是,本步驟具體包括以下過程。第一步,根據(jù)時間戳獲取備份的分區(qū)表信息。具體地,在需要進行數(shù)據(jù)恢復(fù)時,根 據(jù)時間戳從一個以上備份的分區(qū)表信息中選擇用于數(shù)據(jù)恢復(fù)的備份的分區(qū)表信息。第二步,對LUN設(shè)備進行快照,獲取LUN設(shè)備快照數(shù)據(jù)。具體地,在需要進行數(shù)據(jù) 恢復(fù)時,對此時的LUN設(shè)備進行快照,獲取LUN設(shè)備快照數(shù)據(jù)。上述第一步與第二步的執(zhí)行順行可以互換或同時執(zhí)行。第三步,根據(jù)獲取的備份的分區(qū)表信息恢復(fù)LUN設(shè)備快照數(shù)據(jù),獲取LUN設(shè)備快照 恢復(fù)數(shù)據(jù)。具體地,根據(jù)獲取的備份的分區(qū)表信息對應(yīng)的扇區(qū)的LBA地址,將該分區(qū)表信息 還原到LUN設(shè)備快照數(shù)據(jù)的對應(yīng)的LBA地址上。第四步,判斷LUN設(shè)備快照恢復(fù)數(shù)據(jù)是否正確,如果是,向LUN設(shè)備中存儲LUN設(shè) 備快照恢復(fù)數(shù)據(jù);否則,返回執(zhí)行第一步。具體地,將LUN設(shè)備快照恢復(fù)數(shù)據(jù)映射到主機, 通過主機檢查LUN設(shè)備快照恢復(fù)數(shù)據(jù),判斷LUN設(shè)備快照恢復(fù)數(shù)據(jù)是否正確。如果正確, 向LUN設(shè)備中存儲LUN設(shè)備快照恢復(fù)數(shù)據(jù),實現(xiàn)數(shù)據(jù)成功恢復(fù)。如果不正確,返回執(zhí)行第一 步,選擇其它時間戳對應(yīng)的備份的分區(qū)表信息,通過重復(fù)上述步驟重新嘗試數(shù)據(jù)恢復(fù),直到 數(shù)據(jù)成功恢復(fù)。例如,當(dāng)發(fā)現(xiàn)數(shù)據(jù)存儲錯誤或數(shù)據(jù)丟失而需要進行數(shù)據(jù)恢復(fù)時,首先根據(jù)發(fā)現(xiàn)數(shù) 據(jù)存儲錯誤或數(shù)據(jù)丟失的當(dāng)前時刻,選擇距離當(dāng)前時刻最近的時間戳,獲取該時間戳對應(yīng) 的備份的分區(qū)表信息。同時,可以在發(fā)現(xiàn)數(shù)據(jù)存儲錯誤或數(shù)據(jù)丟失的當(dāng)前時刻對LUN設(shè)備 進行快照,獲取LUN設(shè)備快照數(shù)據(jù)。根據(jù)上述備份的分區(qū)表信息恢復(fù)LUN設(shè)備快照數(shù)據(jù),如 果獲取的LUN設(shè)備快照恢復(fù)數(shù)據(jù)是數(shù)據(jù)存儲錯誤或數(shù)據(jù)丟失前的正確數(shù)據(jù),則存儲該LUN 設(shè)備快照恢復(fù)數(shù)據(jù)。如果該LUN設(shè)備快照恢復(fù)數(shù)據(jù)不是數(shù)據(jù)存儲錯誤或數(shù)據(jù)丟失前的正確 數(shù)據(jù),則選擇該時間戳的前一個時間戳進行數(shù)據(jù)恢復(fù),如果仍不能得到數(shù)據(jù)存儲錯誤或數(shù) 據(jù)丟失前的正確數(shù)據(jù),則再向前選擇一個時間戳,直到恢復(fù)到數(shù)據(jù)存儲錯誤或數(shù)據(jù)丟失前 的正確數(shù)據(jù)為止。在本發(fā)明實施例二中,不僅通過監(jiān)測I/O數(shù)據(jù)流來監(jiān)控分區(qū)表信息的變化,每當(dāng) 分區(qū)表信息發(fā)生變化時均會執(zhí)行備份操作,從而能夠保證分區(qū)表信息的準(zhǔn)確性和完整性。 并且,對于MBR分區(qū)格式和GPT分區(qū)格式分別采用不同的備份方式,進一步提高了分區(qū)表信 息備份過程的處理速度。并且,在發(fā)生數(shù)據(jù)丟失或錯誤時,可以根據(jù)時間戳選擇合適的備份 的分區(qū)表信息,通過將備份的分區(qū)表信息恢復(fù)到數(shù)據(jù)恢復(fù)時的LUN設(shè)備快照數(shù)據(jù),對分區(qū) 表進行恢復(fù),進一步保證了分區(qū)表信息的準(zhǔn)確性和完整性。圖3為本發(fā)明實施例三的分區(qū)表信息備份裝置的結(jié)構(gòu)示意圖。一種較佳的實施方式是,該裝置設(shè)置于存儲控制器中。如圖3所示,該裝置至少包括監(jiān)控模塊31、獲取模塊 32、判斷模塊33和備份模塊34。其中,獲取模塊32包括格式判斷單元321、MBR獲取單元 322和GPT獲取單元323。進一步地,分區(qū)表信息備份裝置還可以包括LBA記錄模塊35和 恢復(fù)模塊36。其中,LBA記錄模塊35存儲LUN設(shè)備的分區(qū)表對應(yīng)的LBA地址。進一步地,LBA記 錄模塊35在判斷模塊33的控制下,根據(jù)當(dāng)前分區(qū)表信息更新存儲的LUN設(shè)備的分區(qū)表對 應(yīng)的LBA地址。監(jiān)控模塊31監(jiān)控與LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流,當(dāng)獲取到與LUN設(shè)備的 分區(qū)表相關(guān)的I/O數(shù)據(jù)流后,控制獲取模塊32開啟。具體地,監(jiān)控模塊31監(jiān)控并獲取LBA 記錄模塊35存儲的LUN設(shè)備的分區(qū)表對應(yīng)的LBA地址的I/O數(shù)據(jù)流。獲取模塊32根據(jù)LUN設(shè)備的分區(qū)格式,獲取LUN設(shè)備的當(dāng)前分區(qū)表信息并傳送到 判斷模塊33。具體地,獲取模塊32包括格式判斷單元321、MBR獲取單元322和GPT獲取 單元323。其中,格式判斷單元321判斷LUN設(shè)備的分區(qū)表屬于MBR分區(qū)格式或GPT分區(qū) 格式,如果是MBR分區(qū)格式,則開啟MBR獲取單元322 ;如果是GPT分區(qū)格式,則開啟GPT獲 取單元323。MBR獲取單元322通過分析一個以上分區(qū)表項獲取第一指定扇區(qū),記錄第一指 定扇區(qū)的當(dāng)前分區(qū)表信息。GPT獲取單元323記錄第二指定扇區(qū)的當(dāng)前分區(qū)表信息。具體 地,MBR獲取單元322判斷一個以上分區(qū)表項是否均為空;如果是,通知判斷模塊33判斷當(dāng) 前分區(qū)表信息與前次備份的分區(qū)表信息是否相同;否則,判斷一個以上分區(qū)表項是否包括 擴展分區(qū);如果是,記錄EBR扇區(qū)和MBR扇區(qū)的當(dāng)前分區(qū)表信息;否則,記錄MBR扇區(qū)的當(dāng)前 分區(qū)表信息。具體地,GPT獲取單元323記錄LUN設(shè)備的最前34個扇區(qū)與最后33個扇區(qū) 的當(dāng)前分區(qū)表信息,其中,所述LUN設(shè)備的最前34個扇區(qū),例如,可以是LUN設(shè)備的0 33 號扇區(qū)。判斷模塊33判斷當(dāng)前分區(qū)表信息與前次備份的分區(qū)表信息是否相同,如果是,控 制監(jiān)控模塊31重新獲取與LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流;否則,控制備份模塊34備 份當(dāng)前分區(qū)表信息并記錄時間戳,并且,還可以進一步地控制LBA記錄模塊35根據(jù)當(dāng)前分 區(qū)表信息更新存儲的LUN設(shè)備的分區(qū)表對應(yīng)的LBA地址。備份模塊34備份當(dāng)前分區(qū)表信息并記錄時間戳。恢復(fù)模塊36根據(jù)備份的分區(qū)表信息恢復(fù)LUN設(shè)備的數(shù)據(jù)。具體地,恢復(fù)模塊36 根據(jù)時間戳獲取備份的分區(qū)表信息,對LUN設(shè)備進行快照,獲取LUN設(shè)備快照數(shù)據(jù),根據(jù)獲 取的備份的分區(qū)表信息恢復(fù)LUN設(shè)備快照數(shù)據(jù),獲取LUN設(shè)備快照恢復(fù)數(shù)據(jù),判斷LUN設(shè)備 快照恢復(fù)數(shù)據(jù)是否正確,如果是,向LUN設(shè)備中存儲LUN設(shè)備快照恢復(fù)數(shù)據(jù),否則,重新根據(jù) 時間戳獲取備份的分區(qū)表信息。在本發(fā)明實施例三中,當(dāng)監(jiān)控模塊獲取到I/O數(shù)據(jù)流時,獲取模塊根據(jù)LUN設(shè)備的 分區(qū)格式獲取該LUN設(shè)備的當(dāng)前分區(qū)表信息,判斷模塊判斷當(dāng)前分區(qū)表信息與前次備份的 分區(qū)表信息是否相同,當(dāng)不相同時,備份當(dāng)前分區(qū)表信息并記錄時間戳。因為在監(jiān)測到I/ 0數(shù)據(jù)流時對分區(qū)表信息進行備份,因此每當(dāng)分區(qū)表信息發(fā)生變化時均會執(zhí)行備份操作,從 而能夠保證分區(qū)表信息的準(zhǔn)確性和完整性。并且,在發(fā)生數(shù)據(jù)丟失或錯誤時,恢復(fù)模塊可以 根據(jù)時間戳選擇合適的備份的分區(qū)表信息,并對數(shù)據(jù)恢復(fù)時刻的LUN設(shè)備存儲的信息進行 快照,將備份的分區(qū)表信息恢復(fù)到LUN設(shè)備快照數(shù)據(jù),進一步保證了分區(qū)表信息的準(zhǔn)確性和完整性。圖4為本發(fā)明實施例四的存儲系統(tǒng)的結(jié)構(gòu)示意圖。如圖4所示,該存儲系統(tǒng)至少 包括存儲控制器40、磁盤介質(zhì)41和分區(qū)表信息備份裝置42。其中,存儲控制器40將磁盤介質(zhì)41映射為一個以上LUN設(shè)備,該一個以上LUN設(shè) 備用于存儲數(shù)據(jù)和分區(qū)表信息。磁盤介質(zhì)41作為存儲的物理介質(zhì),用于存儲所述一個以上LUN設(shè)備的數(shù)據(jù)和分區(qū)表fe息。
分區(qū)表信息備份裝置42獲取與LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流,根據(jù)LUN設(shè) 備的分區(qū)格式,獲取LUN設(shè)備的當(dāng)前分區(qū)表信息,判斷當(dāng)前分區(qū)表信息與前次備份的分區(qū) 表信息是否相同,如果是,重新獲取與LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流,否則,備份當(dāng)前 分區(qū)表信息并記錄時間戳。進一步地,分區(qū)表信息備份裝置42還用于根據(jù)備份的分區(qū)表信 息恢復(fù)所述LUN設(shè)備的數(shù)據(jù)。具體地,本發(fā)明實施例四中的存儲系統(tǒng)可以是任何采用LUN映射方式的存儲系 統(tǒng),例如,磁盤冗余陣列系統(tǒng)、虛擬智能存儲系統(tǒng)等。在本發(fā)明實施例四中,分區(qū)表信息備份裝置在獲取到I/O數(shù)據(jù)流時,根據(jù)LUN設(shè)備 的分區(qū)格式獲取該LUN設(shè)備的當(dāng)前分區(qū)表信息,判斷當(dāng)前分區(qū)表信息與前次備份的分區(qū)表 信息是否相同,當(dāng)不相同時,備份當(dāng)前分區(qū)表信息并記錄時間戳。在監(jiān)測到I/O數(shù)據(jù)流時對 分區(qū)表信息進行備份,因此每當(dāng)分區(qū)表信息發(fā)生變化時均會執(zhí)行備份操作,從而能夠保證 分區(qū)表信息的準(zhǔn)確性和完整性。需要說明的是對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列 的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因為 依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知 悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明 所必須的。在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部 分,可以參見其他實施例的相關(guān)描述。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述方法實施例的全部或部分步驟可以通過 程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序 在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括R0M、RAM、磁碟或者 光盤等各種可以存儲程序代碼的介質(zhì)。最后應(yīng)說明的是以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡 管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然 可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替 換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精 神和范圍。
權(quán)利要求
1.一種分區(qū)表信息備份方法,其特征在于,包括獲取與邏輯單元號LUN設(shè)備的分區(qū)表相關(guān)的輸入輸出I/O數(shù)據(jù)流; 根據(jù)所述LUN設(shè)備的分區(qū)格式,獲取所述LUN設(shè)備的當(dāng)前分區(qū)表信息; 判斷當(dāng)前分區(qū)表信息與前次備份的分區(qū)表信息是否相同,如果是,返回執(zhí)行所述獲取 與LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流的步驟,否則,備份當(dāng)前分區(qū)表信息并記錄時間戳。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取與LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流之前還包括存儲所述LUN設(shè)備的分 區(qū)表對應(yīng)的邏輯塊尋址LBA地址;所述獲取與LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流包括獲取存儲的所述LUN設(shè)備的分 區(qū)表對應(yīng)的LBA地址的I/O數(shù)據(jù)流;所述判斷當(dāng)前分區(qū)表信息與前次備份分區(qū)表信息是否相同之后,如果判斷為否還包 括根據(jù)當(dāng)前分區(qū)表信息更新存儲的所述LUN設(shè)備的分區(qū)表對應(yīng)的LBA地址。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述LUN設(shè)備的分區(qū)格式,獲取 所述LUN設(shè)備的當(dāng)前分區(qū)表信息包括判斷所述LUN設(shè)備的分區(qū)表屬于主引導(dǎo)記錄MBR分區(qū)格式或全球唯一標(biāo)識符分區(qū)格式 GPT分區(qū)格式;如果是MBR分區(qū)格式,則通過分析一個以上分區(qū)表項獲取第一指定扇區(qū),記錄所述第 一指定扇區(qū)的當(dāng)前分區(qū)表信息;如果是GPT分區(qū)格式,則記錄第二指定扇區(qū)的當(dāng)前分區(qū)表信息。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述通過分析一個以上分區(qū)表項獲取第 一指定扇區(qū),記錄所述第一指定扇區(qū)的當(dāng)前分區(qū)表信息包括判斷所述一個以上分區(qū)表項是否均為空;如果是,執(zhí)行所述判斷當(dāng)前分區(qū)表信息與前次備份的分區(qū)表信息是否相同的步驟; 否則,判斷所述一個以上分區(qū)表項是否包括擴展分區(qū); 如果是,記錄擴展引導(dǎo)記錄EBR扇區(qū)和MBR扇區(qū)的當(dāng)前分區(qū)表信息; 否則,記錄MBR扇區(qū)的當(dāng)前分區(qū)表信息。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述記錄第二指定扇區(qū)的當(dāng)前分區(qū)表信 息包括記錄所述LUN設(shè)備的最前34個扇區(qū)與最后33個扇區(qū)的當(dāng)前分區(qū)表信息。
6.根據(jù)權(quán)利要求1至5中任意一項所述的方法,其特征在于,所述備份當(dāng)前分區(qū)表信息 并記錄時間戳之后還包括根據(jù)備份的分區(qū)表信息恢復(fù)所述LUN設(shè)備的數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述根據(jù)備份的分區(qū)表信息恢復(fù)LUN設(shè)備 的數(shù)據(jù)包括根據(jù)所述時間戳獲取備份的分區(qū)表信息; 對所述LUN設(shè)備進行快照,獲取LUN設(shè)備快照數(shù)據(jù);根據(jù)獲取的備份的分區(qū)表信息恢復(fù)所述LUN設(shè)備快照數(shù)據(jù),獲取LUN設(shè)備快照恢復(fù)數(shù)據(jù);判斷所述LUN設(shè)備快照恢復(fù)數(shù)據(jù)是否正確,如果是,向所述LUN設(shè)備中存儲所述LUN設(shè)備快照恢復(fù)數(shù)據(jù);否則,返回根據(jù)所述時間戳獲取備份的分區(qū)表信息的步驟。
8.—種分區(qū)表信息備份裝置,其特征在于,包括監(jiān)控模塊,用于獲取與邏輯單元號LUN設(shè)備的分區(qū)表相關(guān)的輸入輸出I/O數(shù)據(jù)流后控 制獲取模塊開啟;獲取模塊,用于根據(jù)所述LUN設(shè)備的分區(qū)格式,獲取所述LUN設(shè)備的當(dāng)前分區(qū)表信息; 判斷模塊,用于判斷當(dāng)前分區(qū)表信息與前次備份的分區(qū)表信息是否相同,如果是,控制 所述監(jiān)控模塊重新獲取與LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流;否則,控制備份模塊備份當(dāng) 前分區(qū)表信息并記錄時間戳;備份模塊,用于備份當(dāng)前分區(qū)表信息并記錄時間戳。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,還包括邏輯塊尋址LBA記錄模塊,用于存儲所述LUN設(shè)備的分區(qū)表對應(yīng)的LBA地址; 所述監(jiān)控模塊具體用于獲取LBA記錄模塊存儲的所述LUN設(shè)備的分區(qū)表對應(yīng)的LBA地 址的I/O數(shù)據(jù)流;所述判斷模塊還用于在判斷當(dāng)前分區(qū)表信息與前次備份分區(qū)表信息不同時,控制所述 LBA記錄模塊根據(jù)當(dāng)前分區(qū)表信息更新存儲的所述LUN設(shè)備的分區(qū)表對應(yīng)的LBA地址。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述獲取模塊包括格式判斷單元,用于判斷所述LUN設(shè)備的分區(qū)表屬于主引導(dǎo)記錄MBR分區(qū)格式或全球 唯一標(biāo)識符分區(qū)格式GPT分區(qū)格式;如果是MBR分區(qū)格式,則開啟MBR獲取單元;如果是GPT 分區(qū)格式,則開啟GPT獲取單元;MBR獲取單元,用于通過分析一個以上分區(qū)表項獲取第一指定扇區(qū),記錄所述第一指定 扇區(qū)的當(dāng)前分區(qū)表信息;GPT獲取單元,用于記錄第二指定扇區(qū)的當(dāng)前分區(qū)表信息。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述MBR獲取單元具體用于判斷所述一個以上分區(qū)表項是否均為空;如果是,通知所 述判斷模塊判斷當(dāng)前分區(qū)表信息與前次備份的分區(qū)表信息是否相同;否則,判斷所述一個 以上分區(qū)表項是否包括擴展分區(qū);如果是,記錄擴展引導(dǎo)記錄EBR扇區(qū)和MBR扇區(qū)的當(dāng)前分 區(qū)表信息;否則,記錄MBR扇區(qū)的當(dāng)前分區(qū)表信息;所述GPT獲取單元具體用于記錄所述LUN設(shè)備的最前34個扇區(qū)與最后33個扇區(qū)的當(dāng) 前分區(qū)表信息。
12.根據(jù)權(quán)利要求8至11中任意一項所述的裝置,其特征在于,還包括 恢復(fù)模塊,用于根據(jù)備份的分區(qū)表信息恢復(fù)所述LUN設(shè)備的數(shù)據(jù)。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述恢復(fù)模塊具體用于根據(jù)所述時間戳獲取備份的分區(qū)表信息,對所述LUN設(shè)備進行 快照,獲取LUN設(shè)備快照數(shù)據(jù),根據(jù)獲取的備份的分區(qū)表信息恢復(fù)所述LUN設(shè)備快照數(shù)據(jù), 獲取LUN設(shè)備快照恢復(fù)數(shù)據(jù),判斷所述LUN設(shè)備快照恢復(fù)數(shù)據(jù)是否正確,如果是,向所述LUN 設(shè)備中存儲所述LUN設(shè)備快照恢復(fù)數(shù)據(jù),否則,重新根據(jù)所述時間戳獲取備份的分區(qū)表信 肩、ο
14.一種存儲系統(tǒng),其特征在于,包括存儲控制器,用于將磁盤介質(zhì)映射為一個以上邏輯單元號LUN設(shè)備;磁盤介質(zhì),用于存儲所述一個以上LUN設(shè)備的數(shù)據(jù)和分區(qū)表信息; 分區(qū)表信息備份裝置,用于獲取與每個LUN設(shè)備的分區(qū)表相關(guān)的輸入輸出I/O數(shù)據(jù)流; 根據(jù)所述LUN設(shè)備的分區(qū)格式,獲取所述LUN設(shè)備的當(dāng)前分區(qū)表信息;判斷當(dāng)前分區(qū)表信息 與前次備份的分區(qū)表信息是否相同,如果是,重新獲取與所述LUN設(shè)備的分區(qū)表相關(guān)的I/O 數(shù)據(jù)流,否則,備份當(dāng)前分區(qū)表信息并記錄時間戳。
15.根據(jù)權(quán)利要求14所述的存儲系統(tǒng),其特征在于,所述分區(qū)表信息備份裝置還用于根據(jù)備份的分區(qū)表信息恢復(fù)所述LUN設(shè)備的數(shù)據(jù)。
全文摘要
本發(fā)明實施例提供一種分區(qū)表信息備份方法,獲取與LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流,根據(jù)LUN設(shè)備的分區(qū)格式獲取LUN設(shè)備的當(dāng)前分區(qū)表信息,判斷當(dāng)前分區(qū)表信息與前次備份的分區(qū)表信息是否相同,如果是,返回執(zhí)行獲取與LUN設(shè)備的分區(qū)表相關(guān)的I/O數(shù)據(jù)流的步驟,否則,備份當(dāng)前分區(qū)表信息并記錄時間戳。本發(fā)明還提供一種分區(qū)表信息備份裝置和一種存儲系統(tǒng)。采用本發(fā)明提供的分區(qū)表信息備份方法和裝置以及存儲系統(tǒng),在監(jiān)測到I/O數(shù)據(jù)流時對分區(qū)表信息進行備份,因此當(dāng)分區(qū)表信息發(fā)生變化時均會執(zhí)行備份操作,從而能夠保證分區(qū)表信息的準(zhǔn)確性和完整性。
文檔編號G06F11/14GK102063348SQ20101061392
公開日2011年5月18日 申請日期2010年12月27日 優(yōu)先權(quán)日2010年12月27日
發(fā)明者唐承文, 楊道明 申請人:成都市華為賽門鐵克科技有限公司