專利名稱:一種快照系統(tǒng)及方法
技術領域:
本發(fā)明涉及計算機的存儲技術領域,尤其涉及一種既支持基于初始數(shù)據(jù)的快照,又支持基于快照映象本身的快照的快照系統(tǒng)及其方法。
背景技術:
在計算機存儲技術領域,獲取某一時刻的數(shù)據(jù)映象的應用需求非常普遍。這種即時數(shù)據(jù)映象又稱為“快照”,快照被大量應用在數(shù)據(jù)的備份和恢復、數(shù)據(jù)統(tǒng)計和分析等領域。
一種被廣泛采用的獲取快照的技術是寫拷貝(Copy-On-Write)技術。在創(chuàng)建快照時,寫拷貝技術不是將被創(chuàng)建快照的初始數(shù)據(jù)的所有內(nèi)容都進行復制以獲得一個數(shù)據(jù)映象副本,而是創(chuàng)建一個記錄初始數(shù)據(jù)修改情況的數(shù)據(jù)結(jié)構(gòu)和一個保存數(shù)據(jù)的快照空間,因此快照的創(chuàng)建過程十分短暫。當應用程序?qū)Τ跏紨?shù)據(jù)進行寫操作時,若待寫入的數(shù)據(jù)塊自快照創(chuàng)建以來還沒有被修改,則原數(shù)據(jù)塊先被復制到快照空間,數(shù)據(jù)塊才被寫入,同時在快照的數(shù)據(jù)結(jié)構(gòu)中標記這些數(shù)據(jù)塊已被修改;若待寫入的數(shù)據(jù)塊被標記為已修改,則數(shù)據(jù)塊的寫操作和正常情況相同,直接對數(shù)據(jù)塊做寫操作即可。當應用程序?qū)煺者M行讀取時,若讀取的數(shù)據(jù)塊沒有被標記為已修改,則數(shù)據(jù)塊從初始數(shù)據(jù)中讀取,否則數(shù)據(jù)塊從快照中讀取??煺胀ㄟ^這樣的方式表現(xiàn)為初始數(shù)據(jù)在創(chuàng)建快照那一時刻的固定映象。
快照也可以是可寫的數(shù)據(jù)映象??煺諏懭氲姆绞绞侨舸龑懭氲臄?shù)據(jù)塊在快照中不存在,則從初始數(shù)據(jù)中將該數(shù)據(jù)塊復制到快照中,然后對快照中的數(shù)據(jù)塊做寫入操作??蓪懣煺盏囊饬x不再是初始數(shù)據(jù)的即時映象,而是在這個即時映象的基礎上進行改變的數(shù)據(jù)映象。
Armangau等人在1999年12月2日提出的、名稱為“一種允許持續(xù)讀寫訪問數(shù)據(jù)存儲系統(tǒng)的快照技術”的美國專利第6,434,681號(“Snapshot copy facility fora data storage system permitting continued host read/write access”)涉及到寫拷貝快照技術。該專利作為和快照技術相關的背景信息列出,以供參考。
目前的快照技術主要是對初始數(shù)據(jù)創(chuàng)建即時映像。即時映像可滿足數(shù)據(jù)備份等只讀應用,也可以支持讀寫應用。但在一般快照系統(tǒng)中只存在一級快照邏輯,不存在迭代的快照結(jié)構(gòu)。圖1是一般快照系統(tǒng)的快照邏輯構(gòu)成的一個例子。邏輯卷100有兩個快照,分別是邏輯卷101和邏輯卷102。而邏輯卷101與邏輯卷102已經(jīng)是快照,不能再對它們創(chuàng)建快照。
然而,對可寫快照的應用中,同樣存在對該可寫快照創(chuàng)建即時映像的需求。怎樣將快照技術再次應用到這些通過快照技術生成的數(shù)據(jù)映像上,即“基于快照的快照”,尤其這種快照邏輯的重復迭代(例如對“基于快照的快照”再次創(chuàng)建快照),還沒有很好的方法來解決這個問題。
此外,在現(xiàn)有技術中的某些快照邏輯卷只支持讀操作,這會限制快照的應用方式。
發(fā)明內(nèi)容
本發(fā)明的一個目的是提供一種快照系統(tǒng),創(chuàng)建對初始數(shù)據(jù)的快照和對快照的快照。
為了實現(xiàn)上述目的,本發(fā)明提供了一種快照系統(tǒng),可為快照創(chuàng)建快照,由包含初始數(shù)據(jù)的普通邏輯卷和包含快照的快照邏輯卷組成,其特征在于,普通邏輯卷與快照邏輯卷的結(jié)構(gòu)相同,包括讀寫請求處理單元301、邏輯塊對應表單元302、邏輯卷物理存儲資源303、基礎卷記錄以及本邏輯卷和它的交互接口單元304、快照卷記錄以及本邏輯卷和它的交互接口單元305;讀寫請求處理單元301用于處理對邏輯卷的讀寫操作;邏輯塊對應表單元302用于標識外部應用訪問邏輯卷時所使用的邏輯塊號與該邏輯塊在邏輯卷中存儲的實際物理塊號間的對應關系;基礎卷記錄以及本邏輯卷和它的交互接口單元304用于記錄本地邏輯卷的基礎卷,并提供與基礎卷的交互接口;快照卷記錄以及本邏輯卷和它的交互接口單元305用于記錄本地邏輯卷的快照卷,并提供與快照卷的交互接口。
上述技術方案中,所述的邏輯塊對應表單元302所存放的邏輯塊對應表的表項包括邏輯塊號401及物理存儲塊號402。
本發(fā)明還提供了一種支持多類型快照的方法,包括1)快照創(chuàng)建步驟,為一個邏輯卷創(chuàng)建快照,所創(chuàng)建的快照代表了該基礎卷在快照創(chuàng)建時刻的數(shù)據(jù)狀態(tài);
2)讀快照步驟,讀取快照所在邏輯卷中的數(shù)據(jù);3)寫快照步驟,對快照所在邏輯卷寫入數(shù)據(jù);4)快照刪除步驟,刪除快照,回收該快照所占用的資源。
上述技術方案中,在所述的步驟1)中,快照創(chuàng)建包括1-1、利用已有的存儲資源創(chuàng)建一個新的邏輯卷,為該邏輯卷分配存儲資源和內(nèi)存結(jié)構(gòu),所述的內(nèi)存結(jié)構(gòu)包括讀寫請求處理單元(301)、邏輯塊對應表單元(302)、基礎卷記錄以及本邏輯卷和它的交互接口單元(304)、快照卷記錄以及本邏輯卷和它的交互接口單元(305);1-2、利用邏輯塊對應表單元(302)創(chuàng)建邏輯塊對應表,快照在初始創(chuàng)建時,邏輯塊對應表為空表;1-3、在創(chuàng)建的新邏輯卷中,將基礎卷記錄及交換接口單元(304)中的基礎卷記錄設置為基礎卷的相關信息;1-4、在基礎卷的快照卷記錄及交換接口單元(305)中的快照卷記錄中添加一項快照記錄,將新創(chuàng)建的邏輯卷設置為基礎卷的快照。
上述技術方案中,在所述的步驟2)中,讀快照步驟包括2-1、讀寫請求處理器單元(301)接到對數(shù)據(jù)塊的讀請求后,從讀請求中獲取邏輯塊號;2-2、根據(jù)請求中的邏輯塊號,在邏輯卷的邏輯塊對應表中做查詢,查看讀請求所包含的邏輯塊號是否在邏輯塊對應表中,若查詢到,執(zhí)行步驟24,若沒有,執(zhí)行下一步;2-3、將讀請求轉(zhuǎn)發(fā)到本邏輯卷與其基礎卷的交互接口;基礎卷的快照卷交互接口接收到該讀請求后,將讀請求轉(zhuǎn)發(fā)給基礎卷的讀寫請求處理單元,并執(zhí)行步驟21;2-4、根據(jù)所請求的邏輯塊號在邏輯塊對應表查找實際存儲塊號,根據(jù)實際存儲塊號完成讀操作。
上述技術方案中,在所述的步驟3)中,寫快照步驟包括3-1、讀寫請求處理單元(301)接到對數(shù)據(jù)塊的寫請求后,從寫請求中獲取邏輯卷待寫入的邏輯塊的邏輯塊號,在寫請求中還包括要寫入邏輯卷的數(shù)據(jù);3-2、根據(jù)邏輯塊號,通過讀操作步驟獲取待寫入的邏輯塊的原有數(shù)據(jù);3-3、對要完成寫操作的邏輯卷的每一個快照卷,通過與快照卷的交互接口單元查詢快照卷中是否已存在待寫入邏輯塊的原有數(shù)據(jù),若存在,執(zhí)行步驟35,否則執(zhí)行下一步驟;3-4、將已讀取到的待寫入邏輯塊的原有數(shù)據(jù)通過與快照卷的交互接口單元復制到快照卷中,并添加快照卷中邏輯塊對應表的表項;3-5、判斷是否所有快照都處理完畢,如果是,執(zhí)行下一步驟,如果否,執(zhí)行步驟3-3;3-6、查詢本地邏輯卷中的邏輯塊對應表,判斷是否已存在要寫入的數(shù)據(jù)塊,若是,執(zhí)行步驟3-8,若否,執(zhí)行下一步;3-7、將要寫入的數(shù)據(jù)塊的數(shù)據(jù)寫入該邏輯卷中,并添加邏輯卷中邏輯塊對應表的表項;3-8、根據(jù)寫請求中的數(shù)據(jù)寫入到邏輯塊對應表項中該邏輯塊號對應的物理存儲塊中,完成寫入請求。
上述技術方案中,在所述的步驟4)中,快照刪除步驟包括4-1、將所要刪除的邏輯卷中的所有數(shù)據(jù)塊復制到每一個快照卷中,若某數(shù)據(jù)塊在某個快照卷中已經(jīng)存在,則此數(shù)據(jù)塊不再復制到該快照卷中;若所要刪除的邏輯卷沒有快照卷,則無需保存其數(shù)據(jù)塊;4-2、對所有快照卷,建立這些快照卷與要刪除邏輯卷的基礎卷的快照關系,將這些快照卷的基礎卷改變?yōu)樗袆h除邏輯卷的基礎卷,若所要刪除的邏輯卷保存的是初始數(shù)據(jù),該邏輯卷沒有基礎卷,則將快照卷的基礎卷設為空;4-3、消除所要刪除邏輯卷和基礎卷之間的快照關系;4-4、回收所刪除邏輯卷的內(nèi)存結(jié)構(gòu)和存儲資源。
本發(fā)明的優(yōu)點在于1、本發(fā)明不僅支持對普通邏輯卷創(chuàng)建快照,而且可以對快照自身創(chuàng)建快照,拓展了快照的應用方式和應用范圍。
2、本發(fā)明的快照系統(tǒng)中每一個邏輯卷都能夠支持讀寫應用,與支持只讀應用的邏輯卷相比,有更多的應用方式。
圖1是普通快照的結(jié)構(gòu)圖;圖2是本發(fā)明的快照的結(jié)構(gòu)圖;圖3是邏輯卷的邏輯結(jié)構(gòu)圖;
圖4是邏輯塊對應表的表項的結(jié)構(gòu)圖;圖5是快照創(chuàng)建的流程圖;圖6是讀寫請求處理單元對邏輯卷讀請求的處理流程圖;圖7是讀寫請求處理單元對邏輯卷寫請求的處理流程圖;圖8是對邏輯卷刪除步驟的流程圖。
具體實施例方式
下面結(jié)合附圖和具體實施方式
對本發(fā)明做詳細說明。
本發(fā)明的一種快照系統(tǒng)。圖2是本發(fā)明快照系統(tǒng)的快照邏輯結(jié)構(gòu)的一個例子。邏輯卷200有兩個快照,分別是邏輯卷201和邏輯卷202。作為邏輯卷200的快照的邏輯卷201又存在兩個快照,分別是邏輯卷203和邏輯卷204。相似地,作為邏輯卷201的快照的邏輯卷203又存在一個快照,其是邏輯卷205;作為邏輯卷201的快照的邏輯卷204也存在一個快照,其是邏輯卷206。在本發(fā)明的快照系統(tǒng)中,快照邏輯是可以迭代,也就是說作為快照的邏輯卷也可以創(chuàng)建快照,并且本發(fā)明的快照系統(tǒng)可以多次迭代,如對于邏輯卷206,還可基于其創(chuàng)建新的快照。
本發(fā)明的快照系統(tǒng)中的邏輯卷組成結(jié)構(gòu)是統(tǒng)一的。圖3所示的邏輯卷結(jié)構(gòu)300給出了本發(fā)明的快照系統(tǒng)的邏輯卷的組成結(jié)構(gòu),其中包括讀寫請求處理單元301、邏輯塊對應表單元302、邏輯卷物理存儲資源303、基礎卷記錄以及本邏輯卷和它的交互接口單元304、快照卷記錄以及本邏輯卷和它的交互接口單元305。為了方便說明,將所描述的邏輯卷稱為本地邏輯卷,若本地邏輯卷為第一邏輯卷的快照,第一邏輯卷為本地邏輯卷的基礎卷,簡稱為基礎卷,若第二邏輯卷為本地邏輯卷的快照,則第二邏輯卷為本地邏輯卷的快照卷,簡稱為快照卷。
在本快照系統(tǒng)中,一個邏輯卷無論是快照與否,都能夠支持讀寫,而不僅僅是只讀型邏輯卷。讀寫請求處理單元301用于處理對本地邏輯卷的讀寫操作,可用一個常用的讀寫函數(shù)處理模塊實現(xiàn)。
邏輯塊對應表單元302用于標識外部應用訪問邏輯卷時所使用的邏輯塊號與該邏輯塊在邏輯卷中存儲的實際物理塊號間的對應關系。邏輯塊對應表由圖4所示格式的邏輯塊對應表項400構(gòu)成。邏輯塊對應表項400的結(jié)構(gòu)為邏輯塊號401加上其對應的物理存儲塊號402。
邏輯卷物理存儲資源303是實際存儲數(shù)據(jù)的物理塊。
讀寫請求處理器單元301負責處理對本地邏輯卷數(shù)據(jù)的讀寫請求。讀寫請求到來時,讀寫請求處理器單元301查找邏輯塊對應表單元302中是否存在和此讀寫請求中包含的邏輯塊號一致的邏輯塊對應表項400。查找方式是順序查找輯塊對應表單元302的每一個邏輯塊對應表項,如果某一表項的邏輯塊號401與讀寫請求自帶的邏輯塊號相等,則查找到一致的表項;如果沒有任何表項的邏輯塊號401和讀寫請求自帶的邏輯塊號相等,則對應表單元302中不存在一致的表項。
如果查找到和此讀寫請求中包含的邏輯塊號一致的邏輯塊對應表項400,則根據(jù)表項中的物理存儲塊號402對邏輯卷物理存儲資源303中對應的物理存儲塊進行讀寫,完成讀寫請求。如果沒有查找到一致的表項,則此讀寫請求處理器單元301將結(jié)合基礎卷記錄以及本邏輯卷和它的交互接口單元304、快照卷記錄以及本邏輯卷和它的交互接口單元305來完成讀寫請求。
基礎卷記錄以及本邏輯卷和它的交互接口單元304用于記錄本地邏輯卷的基礎卷是哪一個邏輯卷,并提供本地邏輯卷與基礎卷的交互接口,該接口用于基礎卷對本地邏輯卷中的邏輯塊記錄進行查詢和修改;從基礎卷向本地邏輯卷發(fā)送數(shù)據(jù)塊寫入請求;也用于本地邏輯卷向基礎卷發(fā)送數(shù)據(jù)塊讀取請求。
快照卷記錄以及本邏輯卷和它的交互接口單元305用于記錄本地邏輯卷的快照卷是哪些邏輯卷,并提供與這些快照卷的交互接口,該接口用于本地邏輯卷對快照卷中的邏輯塊記錄進行查詢和修改;從本地邏輯卷向快照卷發(fā)送數(shù)據(jù)塊寫入請求;也用于快照卷向本地邏輯卷發(fā)送數(shù)據(jù)塊讀取請求。
普通邏輯卷的基礎卷記錄為空,即沒有基礎卷;同時邏輯卷的所有邏輯塊都分配了物理存儲塊,即邏輯塊對應表中存放有所有邏輯塊對應的物理塊號。
在本發(fā)明的快照系統(tǒng)中,該快照系統(tǒng)完整的工作流程包括步驟10、創(chuàng)建快照。為快照系統(tǒng)中的一個邏輯卷創(chuàng)建快照,該邏輯卷稱為基礎卷,所創(chuàng)建的快照代表了該基礎卷在快照創(chuàng)建時刻的數(shù)據(jù)狀態(tài)。如圖5所示,創(chuàng)建快照的方法包括步驟11、在快照系統(tǒng)中,利用已有的存儲資源創(chuàng)建一個新的邏輯卷,為該邏輯卷分配存儲資源和內(nèi)存結(jié)構(gòu)。所述的內(nèi)存結(jié)構(gòu)包括讀寫請求處理器單元、邏輯塊對應表單元、基礎卷記錄以及交互接口單元、快照卷記錄及交互接口單元。
步驟12、利用邏輯塊對應表單元創(chuàng)建邏輯塊對應表,快照在初始創(chuàng)建時,邏輯塊對應表為空表。
步驟13、在創(chuàng)建的新邏輯卷中,將基礎卷記錄及交換接口單元中的基礎卷記錄設置為基礎卷的相關信息。
步驟14、在基礎卷的快照卷記錄及交換接口單元中的快照卷記錄中添加一項快照記錄,將新創(chuàng)建的邏輯卷設置為基礎卷的快照。
根據(jù)快照的創(chuàng)建方法,為邏輯卷創(chuàng)建快照,如圖2所示,邏輯卷200為普通邏輯卷A,為該邏輯卷創(chuàng)建的一個快照是編號為201的邏輯卷B。邏輯卷201是邏輯卷200的快照卷,邏輯卷200是邏輯卷201的基礎卷。一個邏輯卷可以創(chuàng)建多個快照,根據(jù)快照創(chuàng)建時間的不同,快照卷代表了基礎卷在不同時刻的數(shù)據(jù)狀態(tài)。如圖2所示,對編號為200的普通邏輯卷A,在創(chuàng)建快照B后,又創(chuàng)建了快照C,快照C是編號為202的邏輯卷。此時,邏輯卷201和邏輯卷202都是邏輯卷100的快照卷,邏輯卷200是邏輯卷201和邏輯卷202的基礎卷,當快照B和快照C所創(chuàng)建的時間不同時,兩者所表示的普通邏輯卷A的數(shù)據(jù)狀態(tài)可能不同,快照B和快照C中所保存的數(shù)據(jù)的內(nèi)容也可能不同。由于基礎卷與快照卷的邏輯卷結(jié)構(gòu)并無不同,因此不僅可對普通邏輯卷創(chuàng)建快照,也可對快照創(chuàng)建快照。如圖2所示,在為普通邏輯卷200創(chuàng)建快照B后,又為快照B創(chuàng)建快照D,快照D是編號為203的邏輯卷D,快照D反映了快照B在快照D創(chuàng)建時刻的數(shù)據(jù)狀態(tài)。同樣的,還可以分別對邏輯卷D和邏輯卷E創(chuàng)建編號為205和編號為206的邏輯卷F和邏輯卷G。
用戶創(chuàng)建快照后,當用戶訪問數(shù)據(jù)時,會受到快照的影響。對快照系統(tǒng)中數(shù)據(jù)塊的訪問是由邏輯卷中的讀寫請求處理單元實現(xiàn),讀寫請求處理單元對讀請求和寫請求的處理流程不同,下面分別進行描述。
步驟20、用戶讀取邏輯卷中的數(shù)據(jù)。如圖6所示,讀寫請求處理單元對邏輯卷讀請求的處理流程包括步驟21、讀寫請求處理器單元接到對數(shù)據(jù)塊的讀請求后,從讀請求中獲取邏輯塊號;步驟22、根據(jù)請求中的邏輯塊號,在邏輯卷的邏輯塊對應表中做查詢,查看讀請求所包含的邏輯塊號是否在邏輯塊對應表中,若查詢到,執(zhí)行步驟24,若沒有,執(zhí)行下一步;步驟23、將讀請求轉(zhuǎn)發(fā)到本邏輯卷與其基礎卷的交互接口;基礎卷的快照卷交互接口接收到該讀請求后,將讀請求轉(zhuǎn)發(fā)給基礎卷的讀寫請求處理單元,并執(zhí)行步驟21;
步驟24、根據(jù)所請求的邏輯塊號在邏輯塊對應表查找實際存儲塊號,根據(jù)實際存儲塊號完成讀操作。
由于一個快照和其基礎卷的邏輯塊號的范圍完全相同,而普通邏輯卷的邏輯塊對應表包含有該邏輯卷的全部邏輯塊號的表項,因此上述讀操作步驟一定會找到邏輯塊號對應的物理塊,最終完成數(shù)據(jù)的讀取。
步驟30、用戶對邏輯卷中的數(shù)據(jù)完成寫操作。如圖7所示,讀寫請求處理單元對邏輯卷寫請求的處理流程包括步驟31、讀寫請求處理單元接到對數(shù)據(jù)塊的寫請求后,從寫請求中獲取邏輯卷待寫入的邏輯塊的邏輯塊號,在寫請求中還包括要寫入邏輯卷的數(shù)據(jù);步驟32、根據(jù)邏輯塊號,通過讀操作步驟獲取待寫入的邏輯塊的原有數(shù)據(jù);步驟33、對要完成寫操作的邏輯卷的每一個快照卷,通過與快照卷的交互接口單元查詢快照卷中是否已存在待寫入邏輯塊的原有數(shù)據(jù),若存在,執(zhí)行步驟35,否則執(zhí)行下一步驟;步驟34、將已讀取到的待寫入邏輯塊的原有數(shù)據(jù)通過與快照卷的交互接口單元復制到快照卷中,并添加快照卷中邏輯塊對應表的表項;步驟35、判斷是否所有快照都處理完畢,如果是,執(zhí)行下一步驟,如果否,執(zhí)行步驟33;步驟36、查詢本地邏輯卷中的邏輯塊對應表,判斷是否已存在要寫入的數(shù)據(jù)塊,若是,執(zhí)行步驟38,若否,執(zhí)行下一步;步驟37、將要寫入的數(shù)據(jù)塊的數(shù)據(jù)寫入該邏輯卷中,并添加邏輯卷中邏輯塊對應表的表項;步驟38、,根據(jù)寫請求中的數(shù)據(jù)寫入到邏輯塊對應表項中該邏輯塊號對應的物理存儲塊中,完成寫入請求。
通過上述步驟,當一個邏輯塊被寫入之后,此邏輯卷的快照卷或者原來已經(jīng)存在該邏輯塊寫入前的數(shù)據(jù),或者已將寫入前的邏輯塊數(shù)據(jù)復制到快照卷中,因此快照卷不會再向此邏輯卷請求修改前的數(shù)據(jù)塊。數(shù)據(jù)塊的改變不會對相關的快照造成影響,從而保證了相關快照的數(shù)據(jù)正確性。
當用戶不再需要快照時,要實現(xiàn)對快照的刪除。由于在快照系統(tǒng)中,快照所在的邏輯卷和初始數(shù)據(jù)所在的邏輯卷在結(jié)構(gòu)上是一樣的,因此對快照的刪除可統(tǒng)一為對邏輯卷的刪除。
步驟40、如圖8所示,刪除一個邏輯卷由以下步驟組成;步驟41、將所要刪除的邏輯卷中的所有數(shù)據(jù)塊復制到每一個快照卷中,若某數(shù)據(jù)塊在某個快照卷中已經(jīng)存在,則此數(shù)據(jù)塊不再復制到該快照卷中;若所要刪除的邏輯卷沒有快照卷,則無需保存其數(shù)據(jù)塊;步驟42、對所有快照卷,建立這些快照卷與要刪除邏輯卷的基礎卷的快照關系,將這些快照卷的基礎卷改變?yōu)樗袆h除邏輯卷的基礎卷,若所要刪除的邏輯卷保存的是初始數(shù)據(jù),該邏輯卷沒有基礎卷,則將快照卷的基礎卷設為空;步驟43、消除所要刪除邏輯卷和基礎卷之間的快照關系;步驟44、回收所刪除邏輯卷的內(nèi)存結(jié)構(gòu)和存儲資源。
在上述刪除步驟中,由于被刪除的邏輯卷中所有可能被其快照卷訪問的數(shù)據(jù)都被復制到了快照卷中,而將快照卷與基礎卷建立快照關系后,快照卷可以直接通過基礎卷中獲取需要讀取的數(shù)據(jù)。因此刪除步驟保證了邏輯卷間的快照邏輯正確性。
綜上所述,本發(fā)明通過相同結(jié)構(gòu)的邏輯卷來表示系統(tǒng)中的所有類型邏輯卷(普通邏輯卷、基于一個邏輯卷的快照邏輯卷),并通過統(tǒng)一的方法實現(xiàn)快照實體(包括快照的創(chuàng)建和刪除、快照的寫入和讀出),從而實現(xiàn)了一種快照機制,使得系統(tǒng)不僅支持對普通邏輯卷創(chuàng)建快照,而且可以對快照自身創(chuàng)建快照;并且快照系統(tǒng)中每一個邏輯卷都能夠支持讀寫應用。系統(tǒng)對各種邏輯卷采用了統(tǒng)一的快照方法,使得這種快照邏輯可迭代(即無論快照邏輯卷是基于何種邏輯卷生成的快照,快照系統(tǒng)都可以基于該快照邏輯卷再創(chuàng)建快照)。本發(fā)明所述的快照系統(tǒng)拓展了快照的應用方式和應用范圍。
權(quán)利要求
1.一種快照系統(tǒng),可為快照創(chuàng)建快照,它由包含初始數(shù)據(jù)的普通邏輯卷和包含快照的快照邏輯卷組成,其特征在于,普通邏輯卷與快照邏輯卷的結(jié)構(gòu)相同,包括讀寫請求處理單元(301)、邏輯塊對應表單元(302)、邏輯卷物理存儲資源(303)、基礎卷記錄以及本邏輯卷和它的交互接口單元(304)、快照卷記錄以及本邏輯卷和它的交互接口單元(305);讀寫請求處理單元(301)用于處理對邏輯卷的讀寫操作;邏輯塊對應表單元(302)用于標識外部應用訪問邏輯卷時所使用的邏輯塊號與該邏輯塊在邏輯卷中存儲的實際物理塊號間的對應關系;基礎卷記錄以及本邏輯卷和它的交互接口單元(304)用于記錄本地邏輯卷的基礎卷,并提供與基礎卷的交互接口;快照卷記錄以及本邏輯卷和它的交互接口單元(305)用于記錄本地邏輯卷的快照卷,并提供與快照卷的交互接口。
2.根據(jù)權(quán)利要求1所述的快照系統(tǒng),其特征在于,所述的邏輯塊對應表單元(302)所存放的邏輯塊對應表的表項包括邏輯塊號(401)及物理存儲塊號(402)。
3.一種支持多類型快照的方法,包括1)快照創(chuàng)建步驟,為一個邏輯卷創(chuàng)建快照,所創(chuàng)建的快照代表了該基礎卷在快照創(chuàng)建時刻的數(shù)據(jù)狀態(tài);2)讀快照步驟,讀取快照所在邏輯卷中的數(shù)據(jù);3)寫快照步驟,對快照所在邏輯卷寫入數(shù)據(jù);4)快照刪除步驟,刪除快照,回收該快照所占用的資源。
4.根據(jù)權(quán)利要求3所述的支持多類型快照的方法,其特征在于,在所述的步驟1)中,快照創(chuàng)建包括1-1、利用已有的存儲資源創(chuàng)建一個新的邏輯卷,為該邏輯卷分配存儲資源和內(nèi)存結(jié)構(gòu),所述的內(nèi)存結(jié)構(gòu)包括讀寫請求處理單元(301)、邏輯塊對應表單元(302)、基礎卷記錄以及本邏輯卷和它的交互接口單元(304)、快照卷記錄以及本邏輯卷和它的交互接口單元(305);1-2、利用邏輯塊對應表單元(302)創(chuàng)建邏輯塊對應表,快照在初始創(chuàng)建時,邏輯塊對應表為空表;1-3、在創(chuàng)建的新邏輯卷中,將基礎卷記錄及交換接口單元(304)中的基礎卷記錄設置為基礎卷的相關信息;1-4、在基礎卷的快照卷記錄及交換接口單元(305)中的快照卷記錄中添加一項快照記錄,將新創(chuàng)建的邏輯卷設置為基礎卷的快照。
5.根據(jù)權(quán)利要求3所述的支持多類型快照的方法,其特征在于,在所述的步驟2)中,讀快照步驟包括2-1、讀寫請求處理器單元(301)接到對數(shù)據(jù)塊的讀請求后,從讀請求中獲取邏輯塊號;2-2、根據(jù)請求中的邏輯塊號,在邏輯卷的邏輯塊對應表中做查詢,查看讀請求所包含的邏輯塊號是否在邏輯塊對應表中,若查詢到,執(zhí)行步驟24,若沒有,執(zhí)行下一步;2-3、將讀請求轉(zhuǎn)發(fā)到本邏輯卷與其基礎卷的交互接口;基礎卷的快照卷交互接口接收到該讀請求后,將讀請求轉(zhuǎn)發(fā)給基礎卷的讀寫請求處理單元,并執(zhí)行步驟21;2-4、根據(jù)所請求的邏輯塊號在邏輯塊對應表查找實際存儲塊號,根據(jù)實際存儲塊號完成讀操作。
6.根據(jù)權(quán)利要求3所述的支持多類型快照的方法,其特征在于,在所述的步驟3)中,寫快照步驟包括3-1、讀寫請求處理單元(301)接到對數(shù)據(jù)塊的寫請求后,從寫請求中獲取邏輯卷待寫入的邏輯塊的邏輯塊號,在寫請求中還包括要寫入邏輯卷的數(shù)據(jù);3-2、根據(jù)邏輯塊號,通過讀操作步驟獲取待寫入的邏輯塊的原有數(shù)據(jù);3-3、對要完成寫操作的邏輯卷的每一個快照卷,通過與快照卷的交互接口單元查詢快照卷中是否已存在待寫入邏輯塊的原有數(shù)據(jù),若存在,執(zhí)行步驟35,否則執(zhí)行下一步驟;3-4、將已讀取到的待寫入邏輯塊的原有數(shù)據(jù)通過與快照卷的交互接口單元復制到快照卷中,并添加快照卷中邏輯塊對應表的表項;3-5、判斷是否所有快照都處理完畢,如果是,執(zhí)行下一步驟,如果否,執(zhí)行步驟3-3;3-6、查詢本地邏輯卷中的邏輯塊對應表,判斷是否已存在要寫入的數(shù)據(jù)塊,若是,執(zhí)行步驟3-8,若否,執(zhí)行下一步;3-7、將要寫入的數(shù)據(jù)塊的數(shù)據(jù)寫入該邏輯卷中,并添加邏輯卷中邏輯塊對應表的表項;3-8、根據(jù)寫請求中的數(shù)據(jù)寫入到邏輯塊對應表項中該邏輯塊號對應的物理存儲塊中,完成寫入請求。
7.根據(jù)權(quán)利要求3所述的支持多類型快照的方法,其特征在于,在所述的步驟4)中,快照刪除步驟包括4-1、將所要刪除的邏輯卷中的所有數(shù)據(jù)塊復制到每一個快照卷中,若某數(shù)據(jù)塊在某個快照卷中已經(jīng)存在,則此數(shù)據(jù)塊不再復制到該快照卷中;若所要刪除的邏輯卷沒有快照卷,則無需保存其數(shù)據(jù)塊;4-2、對所有快照卷,建立這些快照卷與要刪除邏輯卷的基礎卷的快照關系,將這些快照卷的基礎卷改變?yōu)樗袆h除邏輯卷的基礎卷,若所要刪除的邏輯卷保存的是初始數(shù)據(jù),該邏輯卷沒有基礎卷,則將快照卷的基礎卷設為空;4-3、消除所要刪除邏輯卷和基礎卷之間的快照關系;4-4、回收所刪除邏輯卷的內(nèi)存結(jié)構(gòu)和存儲資源。
全文摘要
本發(fā)明公開了一種快照系統(tǒng),由包含初始數(shù)據(jù)的普通邏輯卷和包含快照的快照邏輯卷組成,普通邏輯卷與快照邏輯卷的結(jié)構(gòu)相同,包括讀寫請求處理單元、邏輯塊對應表單元、邏輯卷物理存儲資源、基礎卷記錄以及本邏輯卷和它的交互接口單元、快照卷記錄以及本邏輯卷和它的交互接口單元。本發(fā)明的優(yōu)點在于本發(fā)明不僅支持對普通邏輯卷創(chuàng)建快照,而且可以對快照自身創(chuàng)建快照,拓展了快照的應用方式和應用范圍。
文檔編號G06F11/14GK1896960SQ200510083860
公開日2007年1月17日 申請日期2005年7月12日 優(yōu)先權(quán)日2005年7月12日
發(fā)明者劉振軍, 馮碩, 許魯 申請人:中國科學院計算技術研究所