新四季網

在數據存儲器中保持臨時數據的系統和方法

2023-05-23 22:25:16 2

專利名稱:在數據存儲器中保持臨時數據的系統和方法
技術領域:
本發明涉及計算機系統領域,尤其涉及數據存儲系統。
背景技術:
在典型的現有技術的數據卷(data volume)中,只要數據改變,相應的塊也改變。這就現今的應用程式如關係資料庫和文件系統而言是適當的。然而,常規的數據卷管理技術不提供保持和處理臨時或隨時間變化的信息。應用程式-諸如數據挖掘、數據倉庫、媒體庫、醫療記錄等等-可能需要保持和/或處理臨時或隨時間變化的信息。在現有技術中沒有一種基礎設施(infrastructure)能夠允許這些領域中的應用程式管理臨時數據。由於在存儲器中缺少基礎設施,所以現有技術的應用程式典型地使用對支持臨時範型無效的蠻力(brute force)方法。因此,需要提供一種邏輯設備級基礎設施,用於一般地管理跨越多種應用程式的臨時數據。

發明內容
本發明描述了用於在邏輯設備級在數據存儲器中保存臨時數據的系統和方法的實施例。實施例可以提供用於在邏輯設備(卷)級時間標記(timestamping)數據以提供內容保存的一般機制。實施例可以提供管理和存取臨時卷的機制。一些實施例可以與卷管理器集成。用於管理和存取臨時卷的機制可以被稱作臨時卷管理器。臨時卷管理器的實施例可以提供允許應用程式和/或應用程式代理與臨時卷管理器通信的接口,以管理和跟蹤一個或多個臨時卷上的臨時信息。實施例可以提供用於作用於數據歷史記錄-諸如臨時資料庫、版本管理(versioning)文件系統/存儲庫、數據檔案和流媒體-的應用程式的基礎設施,以管理臨時數據。
臨時卷可以是除了當前數據以外還保存非當前數據的卷。臨時卷可以保持存儲在其上的數據的歷史記錄,因而為應用程式提供檢索過去任何時間的數據拷貝的方法。在臨時卷中,只要一塊數據要被改變,則首先保存現有塊,然後覆寫新的數據。即使應用程式從數據中刪除該塊,也保持塊的舊版本。這實現了保持數據過去的一個或多個狀態的數據拷貝的作用。臨時卷可以被用於例如基於主機的、基於網絡的(開關或器具)以及陣列存儲器的環境中。此外,應當注意,臨時卷可以被用於帶內和帶外虛擬化。
在一個實施例中,如果應用程式不希望直接使用臨時卷(作為設備),則可以使用應用程式代理(如下所述)以幫助它們利用卷的臨時特徵。這消除了應用程式的臨時數據管理的負擔,使得它們能夠集中於如何消耗數據,而不是如果存儲數據。
在實施例中,可以以多種方式保持臨時卷中數據的歷史記錄,包括但不限於I/O控制的檢查點設置、應用程式控制的檢查點設置以及周期檢查點設置。在I/O控制的檢查點設置中,使用臨時卷的應用程式可以在向臨時卷寫入和/或從臨時卷讀取時提供時間戳。作為對於每次寫入都提供時間戳的替代方案,應用程式可以發出I/O請求或命令,諸如UNIX環境中的IOCTL(I/O控制命令),在需要或者希望時為區域(或整個卷)指定時間戳。這種方法可以被稱作應用程式控制的檢查點設置。另一種可選方案是對於臨時卷管理器周期地進行自動檢查點設置,例如每10秒鐘或每10分鐘。這可以被稱作周期檢查點設置。
臨時卷具有作為維度(dimension)的時間。在一個實施例中,臨時卷管理器可以提供允許用戶在臨時卷內遍歷時間維度(歷史記錄)的接口。一個實施例可以提供產生臨時卷的臨時圖像的機制,其中臨時圖像具有它們自己獨立的歷史記錄。一個實施例可以提供生成兩個時間戳之間臨時卷的時間片(slice-in-time)圖像的機制。一個實施例可以提供生成臨時卷的時間點(point-in-time)臨時圖像的機制。時間點圖像是卷在一個時間點時的圖像,並且可以被認為是臨時卷的一維圖像。可以使用時間片和時間點圖像作為臨時圖像的基礎。


以下的詳細描述參考附圖,現在簡要地介紹附圖。
附圖1表示根據一個實施例的、管理臨時卷中臨時操作的臨時卷管理器。
附圖2表示根據一個實施例的、使用應用程式代理來與臨時卷管理器相互作用的應用程式。
附圖3是根據一個實施例的、使用I/O控制的檢查點設置來在邏輯設備級管理臨時卷的方法的流程圖。
附圖4是根據一個實施例、使用應用程式控制的檢查點設置來在邏輯設備級管理臨時卷的方法的流程圖。
附圖5是根據一個實施例、使用周期檢查點設置來在邏輯設備級管理臨時卷的方法的流程圖。
附圖6是根據一個實施例、生成臨時卷的時間片圖像的方法的流程圖。
附圖7是根據一個實施例、生成臨時卷的時間點圖像的方法的流程圖。
附圖8表示根據一個實施例的示範性高速緩存對象。
附圖9表示根據一個實施例的臨時卷TVOL的構造。
附圖10表示根據一個實施例處理臨時卷上數據塊的變化,並且進一步表示在給定時間高速緩存對象下面的結構。
附圖11表示根據一個實施例的非臨時快照。
附圖12表示根據一個實施例從臨時卷導出空間優化的臨時快照。
雖然在此通過對幾個實施例和說明性附圖的舉例描述了本發明,但是本領域的技術人員應當認識到本發明不限於所描述的實施例或附圖。應當理解,附圖及其詳細描述不是為了將本發明限制到所公開的特定形式,相反,本發明覆蓋所有落入後面所附權利要求書所限定的本發明的精神和範圍內的修改、等價物以及可選方案。在此使用的標題僅是為了編排目的,而不是用於限制說明書或權利要求的範圍。如本申請全文中所使用的那樣,詞語「可以」是用於容許的意思(即,表示具有這種可能),而不是強制性的意思(即表示必須)。同樣,詞語「包括」表示包括但不限於。
具體實施例方式
描述了在邏輯設備級保持數據存儲器中的臨時數據的系統和方法的實施例。實施例可以提供一般機制,用於在邏輯設備(卷)級對數據進行時間標記,以提供內容保存。在實施例中,也可以被稱作臨時卷的臨時數據卷可以提供用於管理、I/O操作、複製的接口,以及對包括但不限於備份、恢復和分層存儲管理(HSM)操作的支持。實施例可以提供管理和存取臨時卷的機制。一些實施例可以與卷管理器-諸如Veritas VERITAS卷管理器-結合。在本文獻中,用於管理和存取臨時卷的機制可以被稱作臨時卷管理器。臨時卷管理器的實施例可以提供允許應用程式與臨時卷管理器通信的接口,以管理和跟蹤一個或多個臨時卷上的臨時信息。
應當注意,在本文獻的末尾提供了術語表,該術語表定義了在本文獻中所使用的多個術語。
實施例可以提供用於作用於數據歷史記錄-包括但不限於臨時資料庫(不管它們使用的臨時模型)、版本管理文件系統/存儲庫、數據檔案和流媒體-的應用程式的基礎設施,以管理臨時數據。實施例也可以被用作需要臨時數據管理的進一步應用程式的構建模塊。
臨時卷可以是除了當前數據以外也保持非當前數據的卷。臨時卷可以保持在其上存儲的數據的歷史記錄,因而為應用程式提供一種檢索過去任何時候數據的拷貝的方法。在正常卷中,只要數據改變,相應的數據塊也就地改變。在臨時卷中,只要一塊數據將被改變,首先保存現有的塊,然後覆寫新的數據。保持塊的舊版本,即使該塊被應用程式從數據中刪除。這實現了保持過去數據的一個或多個狀態的拷貝的作用。該過程也可以被認為是在卷上進行數據的連續版本管理,並且進行卷的快照,只要其改變。在另一實施例中,可以將新數據寫到單獨的位置,並且可以操縱臨時卷中的元數據(諸如到數據區的指針)。
臨時卷可以被用於存儲環境中,包括但不限於基於主機的、基於網絡的(開關或器具)和陣列存儲環境。同樣,應當注意到,臨時卷可以被用於帶內以及帶外虛擬化。
附圖1表示根據一個實施例的臨時卷管理器,臨時卷管理器管理臨時卷中的臨時操作。臨時卷管理器100可以為應用程式106和/或操作/文件系統104管理臨時卷102上的臨時數據操作。應用程式106可以是對保持數據的歷史記錄-諸如臨時資料庫、版本管理文件系統/存儲庫、數據檔案和流媒體-以管理臨時數據感興趣的任何類型的應用程式。臨時卷管理器100可以為應用程式106和/或操作/文件系統104提供一個或多個API,以在臨時卷102上執行各種讀取、寫入或其它操作。
臨時卷可以被認為是任何對時間維度感興趣的應用程式可以使用的一般臨時數據基礎設施。在一個實施例中,如果應用程式不希望直接使用臨時卷(作為設備),則可以使用應用程式代理(如下所述)來幫助它們利用卷的臨時特徵。應用程式代理去除了應用程式的臨時數據管理的負擔,以便它們可以專心於如何消耗數據,而不是如何存儲數據。例如,資料庫可以專心於有效的查詢處理,而不是擔心如何存儲表格的拷貝,文件系統可以專心於文件操作,而不是擔心如何版本管理文件,存儲庫可以專心於更快的索引,而不是存檔數據歷史記錄。
附圖2表示根據一個實施例的、使用應用程式代理來與臨時卷管理器相互作用的應用程式。臨時卷管理器200可以為應用程式206管理臨時卷202上的臨時數據操作。應用程式206可以是對保持數據歷史記錄-諸如臨時資料庫、版本管理文件系統/存儲庫、數據檔案和流媒體-以管理臨時數據感興趣的任何類型的應用程式。臨時卷管理器200可以提供一個或多個API,用於在臨時卷202上執行各種讀取、寫入或其它操作。應用程式代理204是代表應用程式206與臨時管理器200交互作用、並且支持應用程式206的(一些或全部)語義的中介器。應用程式代理204優選地使應用程式206更容易與臨時卷202交互作用。此外,應用程式代理204可以允許應用程式206以需要的格式提取數據,而不僅是原始數據。
在存儲器(邏輯設備)級存儲數據歷史記錄也可以使管理更簡單。在應用程式級,這暫時推掉了管理存儲器的努力。例如,資料庫不必複製其元數據的分支,諸如B樹,文件系統不必保持其i節點的拷貝,存儲庫不必複製其索引。對於系統管理員來說,這意味著僅管理一個數據臨時源,而不是管理不同的臨時資料庫、不同版本的FS以及不同存檔的存儲庫。
臨時卷提供用於保持和存取臨時信息的基礎設施。臨時卷可以在所有級中被應用程式使用,包括文件系統和資料庫。此外,通過與文件系統和備份產品(例如VERITAS的文件系統和網絡備份產品)結合,臨時卷也可以被用作數據檔案、版本管理、複製、備份和HSM的構建模塊。臨時卷保存臨時內容,以便在稍後的時間點,該內容可以被用於快照、增量備份、複製、恢復破壞的卷或刪除的文件。
通過利用諸如HSM的處理自動地將數據遷移到離線存儲器/從離線存儲器取回數據,臨時卷可以為應用程式提供虛擬無限的存儲容量。臨時卷也可以與備份實用程序-諸如VERITAS NetBackup-結合,以提供自動備份,包括增量備份。可以利用臨時窗口和/或周期檢查點設置為臨時卷提供周期複製。
臨時卷可以被用於包括但不限於以下中一個或多個的領域中的應用程式商業智能/數據挖掘-這是關於從客戶數據中找出模式和行為。找到這種結果典型地需要臨時數據。例如,通過使用臨時數據,零售商可以進行數據挖掘,以找出其客戶的使用模式,銀行可以分析客戶數據,以找出信用歷史記錄、欺詐等等。
數據倉庫-數據倉庫是企業資料庫,通常用於存儲關於特定公司的所有信息。數據倉庫是通過數據挖掘工具收集並且用於知識發現的有價值信息的存儲庫。它們也可以用作不同企業的後端程序(backends)。是在數據倉庫中,時間維度可以被存儲和用於查詢數據,並且每個數據倉庫具有使數據倉庫成為臨時資料庫的時間維度,並因此適於這裡所述的臨時卷。
多媒體和成像-流式音頻/視頻、圖像、電子書以及醫療數據-諸如X射線和MRI-是可以具有某種與其相關的版本管理或流式(隨時間變化的分量)的數據的例子。媒體庫以臨時形式存儲媒體文件,並且基於因素-諸如連接速度-使它們流動,圖像資料庫-諸如衛星成像和環境成像-保持相同位置的多個版本的圖像,醫療或臨床資料庫保持具有X射線、身體掃描等等的患者歷史記錄。這些是可以以某種形式使用隨時間變化的媒體、並因此適於這裡所述的臨時卷的應用程式的幾個例子。
固定內容,也被稱作一次寫入多次讀取(Write-Once-Read-ManyWORM)存儲器。通過使用這裡所述的臨時卷,可以跟蹤WORM存儲器上的數據到過去的點。
科學計算和實驗室-臨時卷可以解決存儲遺傳資料庫、數據分析、模式查找、預測、強計算、簡單實驗室試驗、數據監控、信號處理、數學、生物信息學等的問題,所有這些可能具有隨時間變化的數據。
數據歸檔和審計-由於臨時卷保存其存儲的數據的歷史記錄,因而該歷史記錄可以被用於歸檔,例如通過使歷史記錄離線,並且將其存儲在磁帶或其它介質上。隨後,可以將該歸檔用於分析或審計。例子包括但不限於老職工資料庫、舊銷售數據、普查數據、日誌以及伺服器歷史記錄。另一例子是不同法律和法規所需要的調整歸檔。
數據版本管理-可以在臨時卷上實現文檔版本管理。
在一個實施例中,在臨時卷管理級,可以使用索引系統或結構(例如高速緩存對象、陣列等)保存臨時卷的內容。可以將高速緩存對象定義為在使用有限存儲器空間時向其用戶表達無限存儲器假象的對象。通過在高速緩存對象上分配存儲器,高速緩存對象可以被用於產生空間優化的快照。高速緩存對象從被稱作高速緩存卷的基礎卷得到其存儲器。高速緩存卷可以增長,只要需要跟上基於策略的無限容量約定。
在一個實施例中,卷可以被分成一個或多個區域。區域可以是從磁碟的一個物理塊到千字節、兆字節、千兆字節區域等等的任何地方。卷可以被分成區域,每個區域可以具有與其相關聯的時間戳。在一個實施例中,應用程式(文件系統、資料庫等)可以指定什麼時間戳將與區域相關聯。在一個實施例中,時間戳可以在數據被寫入到臨時卷時由應用程式指定。應該注意,現有技術的系統不允許應用程式在寫入時指定時間戳。
在實施例中,臨時卷中的數據歷史記錄可以以多種方式被保存,方式包括但不限於I/O控制的檢查點設置、應用程式控制的檢查點設置、以及周期檢查點設置。
在I/O控制的檢查點設置中,使用臨時卷的應用程式可以在向臨時卷寫入和/或從臨時卷讀取時提供時間戳。在I/O控制的檢查點設置中,應用程式可以通過每個I/O請求或者可選地僅通過要處理臨時數據的I/O請求而為臨時卷管理器提供時間戳。在本文中,術語I/O請求被用於表示任何I/O請求、命令、I/O控制請求、IOCTL、或者應用程式或其它實體用於與卷相互作用-例如讀取數據和將數據寫入到卷中-的其他機制。在一個實施例中,通過任何I/O請求(例如讀取或寫入),應用程式可以指定被寫入的區域將通過所提供的時間戳而被時間標記。在一個實施例中,在I/O控制的檢查點設置中,臨時卷管理器可以提供I/O請求接口,其允許應用程式發出指定時間戳的I/O請求(I/O控制命令或請求,諸如UNIX IOCTL)。在一個實施例中,可以通過使用到臨時卷管理器的臨時讀取和臨時寫入接口而實現I/O控制的檢查點設置。例如,臨時資料庫可以使用I/O控制的檢查點設置來通過每次寫入而指定時間戳。
附圖3是根據一個實施例、通過使用I/O控制的檢查點設置而在邏輯設備級管理臨時卷的方法的流程圖。如300所示,可以首先生成臨時卷,以存儲應用程式的臨時數據。如302所示,臨時卷管理器可以從應用程式(或如果使用代理,則從應用程式的代理)接收I/O請求。如果I/O請求是臨時請求,則I/O請求可以為臨時卷上的臨時數據指定一個或多個時間戳。臨時卷管理器可以為應用程式(或應用程式代理)提供API,用於存取和請求臨時卷上的臨時操作。如果I/O請求是臨時讀取請求,則臨時卷管理器可以將由I/O請求所指定的一個或多個時間戳指示的臨時數據返回到應用程式,如306所示。如果I/O請求是臨時寫入請求,則可以根據I/O請求所指定的時間戳生成臨時卷的區域的檢查點,如308所示,並且臨時卷管理器可以將I/O請求所指定的數據寫入臨時卷,如310所示。
作為通過每次寫入而提供時間戳的替代,應用程式可以發出在要求或希望時為區域或者整個卷指定時間戳的I/O請求。該方法可以被稱作應用程式控制的檢查點設置。在應用程式控制的檢查點設置中,可以發出在臨時卷內指定新的檢查點(時間點拷貝)的I/O請求,而不是通過每次寫入而提供時間戳。在應用程式控制的檢查點設置中,應用程式告訴臨時卷何時創建檢查點/版本(臨時卷的時間點拷貝)。在一個實施例中,這可以通過使用I/O請求-諸如I/O控制(IOCTL)操作-而完成。通過每個應用程式控制的I/O請求來對一個或多個區域進行時間標記。在一個實施例中,可以自動地在多於一個臨時卷上完成應用程式控制的檢查點設置。
附圖4是根據一個實施例、通過使用應用程式控制的檢查點設置來在邏輯設備級管理臨時卷的方法的流程圖。如400所示,可以首先生成臨時卷,以存儲應用程式的臨時數據。然後,應用程式可以對臨時卷進行一個或多個「標準」讀取和/或寫入,這可以不指定時間戳,並因而不生成臨時卷的檢查點。如402所示,臨時卷管理器可以從應用程式接收對於臨時卷的指定要產生新檢查點的I/O請求。然後,臨時卷管理器可以根據由I/O請求所指定的時間戳而產生臨時卷的檢查點,如404所示。
另一種方法是周期地進行自動檢查點設置,例如每10秒鐘或每10分鐘。這可以被稱作周期檢查點設置。在周期檢查點設置中,臨時卷管理器可以提供接口,以允許在邏輯設備(卷)級通過臨時卷管理器的周期檢查點設置的配置。在周期檢查點設置中,臨時卷基礎設施(例如臨時卷管理器)周期地創建數據的新檢查點。這優選地節省了通過存儲對數據的每個變化而可能已經浪費的存儲空間。注意,在現有技術中,每次寫入典型地被保存。
附圖5是根據一個實施例、通過使用周期檢查點設置而在邏輯設備級管理臨時卷的方法的流程圖。如500所示,可以首先產生臨時卷,以存儲應用程式的臨時數據。如502所示,臨時卷管理器然後可以從應用程式接收可以不指定時間戳、並因而不產生臨時卷的檢查點的I/O請求。在一個實施例中,I/O請求可以指定應該獲取檢查點的時間間隔(或周期)。如504所示,臨時卷管理器可以周期地產生臨時卷的檢查點(例如每n分鐘、小時或天)。注意,在一個實施例中,臨時卷管理器可以從應用程式接收指定時間戳並且指定在正使用周期檢查點設置時將產生檢查點的I/O請求。
如果應用程式正使用臨時寫入接口,則應用程式可以隨寫入數據指定時間戳,並且卷管理器執行臨時寫入。在一個實施例中,時間戳應用於特定寫入,被存儲在卷上的其他數據可以具有或不具有與其一起存儲的臨時信息。換句話說,在一個實施例中,卷上的一些數據可以是臨時的,而卷上的其它數據可以不是臨時的。如果數據不是臨時的,則其不被時間標記。在一個實施例中,數據將只在應用程式發出I/O請求以對數據進行時間標記的情況下、或者在執行周期檢查點設置的情況下才被時間標記。這可以應用於一個或多個區域或整個卷。
臨時卷具有作為維度的時間。在一個實施例中,臨時卷管理器可以提供接口,以允許用戶遍歷臨時卷內的時間維度(歷史記錄)。例如,用戶可以通過使用接口而遍歷臨時卷的時間維度,以對臨時卷歷史記錄的先前時間點上臨時卷的數據執行一個或多個操作。這種操作的例子可以包括以下一個或多個,但不限於以下為臨時卷上數據的特定版本或值搜索時間維度;將臨時卷恢復到臨時卷歷史記錄中特定時間點的狀態;產生臨時卷的時間片或時間點圖像等等。一個實施例可以提供產生臨時卷的臨時圖像的機制,其中臨時圖像具有其自己獨立的歷史記錄。
一個實施例可以提供產生臨時卷的時間片圖像的機制。在一個實施例中,臨時卷管理器可以提供允許用戶/應用程式請求區域-例如時間戳T1和T2之間-的內容的接口(時間片圖像)。時間片圖像本身是臨時卷,但是其範圍被最初限制在時間戳T1和T2之間。時間片圖像是臨時卷在兩個時間戳之間的片段。臨時卷的時間片圖像表示臨時卷上數據的歷史記錄的片段。時間片圖像可以被看作是也可以保存其自己的歷史記錄的單獨臨時卷。在一個實施例中,可以在時間片圖像上執行讀取和寫入。可以在時間片圖像上執行其它操作,例如數據挖掘。例如,可以在一個周期上收集數據,可以取該周期內一個月(例如八月)的時間片圖像,並且可以對時間片圖像執行數據挖掘或其它操作。
附圖6是根據一個實施例、產生臨時卷的時間片圖像的方法的流程圖。如600所示,可以首先產生臨時卷,以存儲應用程式的臨時數據。如602所示,然後臨時卷管理器可以從應用程式接收臨時和/或非臨時的I/O請求,至少一些這些I/O請求可以產生臨時卷的檢查點。注意,如果正在使用周期檢查點設置,則臨時卷管理器周期地產生臨時卷內的檢查點。如604所示,臨時卷管理器可以從應用程式接收對於臨時卷的請求創建臨時卷的時間片圖像的I/O請求。響應於I/O請求,臨時卷管理器可以根據I/O請求所指定的兩個時間戳產生臨時卷的時間片圖像,如606所示。
一個實施例可以提供產生臨時卷的時間點臨時圖像的機制。時間點圖像是卷在單個時間處的圖像,並且可以被認為是臨時卷的一維圖像。時間點圖像可以被用作臨時圖像的基礎。於是,時間點圖像可以被認為是被初始化到圖像所基於的那個時間點的臨時卷。如果通過每個I/O(寫入)提供時間戳,則存在卷的有限數量的時間點圖像。臨時卷可以被認為是包括兩個或多個時間點圖像的數據卷。兩個或多個時間點圖像可以被組合。臨時卷的時間片圖像可以包括兩個或多個時間點圖像。
附圖7是根據一個實施例、產生臨時卷的時間點圖像的方法的流程圖。如700所示,可以首先產生臨時卷,以存儲應用程式的臨時數據。如702所示,然後臨時卷管理器可以從應用程式接收臨時和/或非臨時的I/O請求,至少一些這些I/O請求可以產生臨時卷的檢查點。注意,如果正在使用周期檢查點設置,則臨時卷管理器周期地在臨時卷內產生檢查點。如704所示,臨時卷管理器可以從應用程式接收對於臨時卷的、請求創建臨時卷的時間點圖像的I/O請求。響應於I/O請求,臨時卷管理器可以根據I/O請求所指定的時間戳產生臨時卷的時間點圖像,如706所示。
一個實施例可以提供確定臨時卷上數據的兩個版本之間的增量變化的機制。確定增量變化可以被用於應用程式,諸如增量備份、複製等等。在一個實施例中,臨時卷管理器可以提供接口,用於確定臨時卷在任意兩個時間點之間的變化是什麼。例如,可以在一段時間周期上執行時間標記。用戶可能希望備份或者歸檔兩個時間之間的數據。可以創建增量圖像。增量圖像是差別圖像。增量圖像可以被用於產生從時間T1到時間T2(例如從一個時間點到前一備份時間)的備份或複製。臨時卷內容可以被用於識別差異。這種機制優選地使得更容易實現增量備份或複製應用程式或實用程序;代替必須計算出變化並且管理快照的應用程式或實用程序,臨時卷管理器管理快照。備份或複製應用程式只想臨時卷管理器請求臨時卷在時間T1和T2之間的內容(或內容的差異或變量增加)。
在一個實施例中,可以截取保持在臨時卷內的數據的歷史記錄,例如使用I/O請求,諸如IOCTL。可能要求或希望截取,因為空間不足或者因為不再需要該歷史記錄。在一個實施例中,基礎設施可以允許臨時卷的用戶設定確定保持多少歷史記錄的臨時窗口。可以自動截取落入到臨時窗口之外的變化。在一個實施例中,臨時卷管理器可以提供截取臨時卷以釋放空間的接口。例如,接口可以允許應用程式指定信息將被臨時卷保持三個月。三個月以前的信息可以被臨時卷管理器刪除。周期地,例如每天或每周,可以刪除三個月以前的數據。
一個實施例可以提供從其一個時間點圖像和/或從兩個特定時間戳之間的時間片圖像中快速恢復卷的機制。例如,如果應用程式每十分鐘對其數據進行時間標記,並且卷由於某種原因被破壞,則可以通過利用臨時數據(例如,最近未被破壞的時間標記的臨時數據)而進行卷的恢復。
臨時卷和臨時卷管理器下面描述通過使用卷管理器和高速緩存對象而在邏輯設備級保持數據存儲器中的臨時數據的系統和方法的示範性實施例。注意,這些實施例是示範性的,並且可以使用能夠實現臨時卷的其它機制。這些實施例提供用於從應用程式接收對於臨時卷的I/O請求的裝置,以及用於響應於I/O請求而對臨時卷執行邏輯設備級臨時操作的裝置,。
實施例可以提供創建和使用臨時卷的機制,例如通過使用卷管理器-例如VERITAS的卷管理器(VxVM)。一個實施例可以使用高速緩存對象,用於歸檔數據的歷史記錄。一個實施例可以提供允許臨時卷的應用程式或用戶除了正常卷操作之外還執行基於時間的操作的一個或多個接口。
在卷管理器-例如VxVm-內,可以通過使用索引系統或結構(例如,高速緩存對象、陣列,B+樹等等)實現臨時卷。在一個實施例中,高速緩存對象可以被用於實現臨時卷。附圖8表示根據一個實施例的示範性高速緩存對象。如圖8所示,高速緩存對象是在使用有限存儲器空間時向其用戶表現「無限的」存儲器的對象。高速緩存對象也可以被認為是空間優化的永久存儲。在一個實施例中,高速緩存對象可以允許用戶創建空間優化的快照。在高速緩存對象上被創建,空間優化的快照優選地不使用與其原始卷一樣多的存儲器。僅當實際數據在原始卷上改變時,實際數據才被寫到空間優化的快照上(被稱作根據寫入進行拷貝(copy-on-write))。基礎高速緩存對象提供空間優化的快照所需要的任何存儲器空間。高速緩存對象又從高速緩存卷中導出其存儲器。根據某些用戶定義的策略,高速緩存對象通過在需要時增加高速緩存卷而保持無限存儲器的假象。
在一個實施例中,支持高速緩存對象中空間優化的基礎技術是I/O塊的重新定向。高速緩存對象通過使用永久轉換映射完成重新定向。這些轉換映射可以被存儲在相同的物理存儲器(高速緩存卷),該物理存儲器將存儲在根據寫入進行拷貝時寫入空間優化快照的數據。此外,高速緩存對象允許通過允許在其頂部劃出(carve out)多個存儲單元而在其頂部創建多個空間優化的快照。
高速緩存對象可以允許在其頂部創建多個存儲單元。這意味著,高速緩存對象可以為不同卷提供多個虛擬可尋址範圍。這樣,每個轉換由包括存儲單元標識符的搜索關鍵字和映射到高速緩存卷上數據的物理偏移的卷偏移組成。根據檢索關鍵字的大小,可檢索的地址空間可以非常大,並且如果提供巨大的存儲器空間(如果不是無限的),則可以更大。這意味著,將用於重新定向或轉換到實際數據塊的結構應該是高度可檢索和有效的。B+樹是適於這種要求的一種結構,並且為了示範性目的而在這裡被用於實施例中,但是應當注意,在其它實施例中可以使用其它結構。
在一個實施例中,高速緩存對象的B+樹可以與其它元數據-諸如超塊、恢復日誌區域、自由塊列表等等-一起被存儲在高速緩存卷上。元數據之後的區域被用於存儲數據區域。高速緩存對象中每個B+樹節點是頁面大小的(例如由卷管理器確定)。該樹中的葉節點指向高速緩存卷上的實際物理數據塊。
在一個實施例中,高速緩存對象上的每個I/O被重新定向。可以通過使用B+樹完成重新定向,並且I/O執行B+樹路徑(walk),以首先定位高速緩存卷上數據的物理偏移。對「有效」區域的所有讀取和寫入可能都需要被重新定向。如果應用程式想區域寫入一次或多次,則認為該區域是「有效的」,否則認為其是「無效的」。在向卷的無效區域寫入的情況下,高速緩存對象可以為新的偏移分配B+樹中的新入口;這可以被稱作為分配寫入。
進一步的寫入可以覆寫先前的內容。在一個實施例中,所有寫入被作為獨立的分配寫入處理,以便保存早期的內容。
附圖9表示根據一個實施例的臨時卷TVOL的構造。TVOL可以具有正常的數據叢P1、P2等等。叢在下面的術語表中定義。還有被稱作Pt的特定叢,其保持臨時數據。Pt具有一個存儲單元SDt,其可以在高速緩存對象上被創建。該高速緩存對象又從高速緩存卷中導出其存儲器。在一個實施例中,高速緩存對象可以通過使用前面所述的B+樹而重新定向寫入。在另一實施例中,可以僅存在Pt,而沒有到臨時卷的正常數據叢。
只要通過使用正常的寫入對卷進行改變,改變就可以被反映到所有叢,包括Pt。雖然正常的叢-如P1或P2-可以只用新數據覆寫現有數據,但是Pt可以在還未被時間標記的最新數據上寫入。如果該最新數據已經被時間標記,則新數據可以被寫入在新位置,而不需要向其分配任何時間戳。
在一個實施例中,對於臨時操作來說,將對所有的叢-包括Pt-進行寫入。臨時操作要求指定時間戳。在一個實施例中,可以處理臨時寫入,如圖10所示。
附圖10表示根據一個實施例、對臨時卷上數據塊的變化的處理,並且還表示在給定的時間高速緩存對象下的結構。高速緩存對象下面的高速緩存卷可以包括樹狀結構,其葉子保持指向磁碟上實際數據塊的指針。對還不在高速緩存對象中的區域B的寫入(分配寫入)可以通過時間戳T0分配入口B0。如果B的內容改變,則可以在高速緩存卷(B1)上分配新的區域,而不是通過時間戳T1覆寫B0。高速緩存對象可以將B1添加到列表。B1包含塊的最新拷貝,而B0是先前的拷貝。在對塊B進行更多改變時,這種連結可以繼續。如果進行n個改變,則可以通過時間戳Tn至T0按順序Bn...B2,B1,B0連結塊。這種連結可能導致非常長的鏈。在一個實施例中,在這種情況下,鏈本身可以被轉換成樹,以更快索引。在一個實施例中,如稍後所述的時間戳可以通過拷貝列表中的每個節點而被保持,以便識別內容。
在一個實施例中,當塊改變時,可以在高速緩存對象下連結舊版本。實際上,高速緩存對象正保持卷下面所有數據塊的歷史記錄。在一個實施例中,雖然可以在正常叢P1、P2等等中找到最新拷貝,但是只有更舊的版本可以被存儲在Pt下(參照附圖9)。這樣,在當前數據和歷史記錄數據之間存在簡單的描繪。這還允許直接在Pt上進行新的臨時操作,而不是操作所有叢或叢的子集。
在一個實施例中,臨時卷可以使用時間戳,以實現版本管理。臨時卷上的正常寫入不實現臨時性。在一個實施例中,為了保持改變的數據的歷史記錄,用戶或應用程式可以使用臨時寫入接口(以下進一步描述)。當使用正常寫入時,新的數據簡單地覆寫舊的數據。在臨時寫入時,新數據被連結到舊數據,並且被標記以給定的時間戳。在一個實施例中,可以通過應用程式提供時間戳。
在一個實施例中,時間戳是可彼此比較的,並且可以被設置,使得它們可以以臨時順序排列。這對臨時讀取操作和對於獲得關於數據歷史記錄的信息可能是希望的或者要求的。可以被用於時間戳的數據類型可以包括但不限於整數數據類型。在實施例中,時間戳可以是實際系統時間、版本號、增量計數器、或任何其它適當的形式。在一個實施例中,可以不需要時間戳可被卷管理器解釋。不必解釋時間戳的卷管理器也可以允許用戶具有有效的數據時間,其可以是將來的時間。然而,不必解釋時間戳的卷管理器也意味著,臨時卷不能保證時間戳所示時間的相干性。因此,在一個實施例中,由應用程式或用戶保持相干的時間戳。在一個實施例中,用戶可以使用稍後所述的應用程式代理框架,以便推掉時間戳維護。
在一個實施例中,雖然臨時卷可以保持「無限的」歷史記錄(由於高速緩存對象所提供「無限的」存儲器),但是用戶可能希望只保留歷史記錄的一部分或窗口。例如,一些應用程式可能僅對當前的和前一版本的數據感興趣,從而需要一個改變/版本的臨時窗口。可選地,一些應用程式可能希望保持僅一段時間的歷史記錄,例如最近n分鐘、小時、天等等,在這種情況下,臨時窗口是n分鐘、小時、天等等。
在一個實施例中,臨時窗口可以在臨時卷創建期間被設置,並且如果希望或要求可以在隨後被改變。臨時窗口外臨時數據的任何改變不被存儲,並因此被丟失。因此,如果臨時窗口例如是5分鐘,則5分鐘前的任何改變是不可獲得的。在一個實施例中,預設地,臨時窗口被認為是「無限的」。增加臨時窗口就增加了歷史記錄的量,而減少臨時窗口則可以要求臨時卷截取歷史記錄。
臨時窗口的使用通過上面給出的例子是顯而易見的。對於1-變化的臨時窗口來說,僅保持數據的當前和上一版本。例如,這可能對於使用兩個版本之間差異的增量備份或複製是有用的。由於僅差異正被使用,因而可以優選地優化帶寬使用。在第二例子中,臨時窗口是5分鐘。這可能對於例如周期增量備份或周期複製是有用的。如果用戶希望每n分鐘、小時、天等等遞增地備份數據,則可以使用略大於n的臨時窗口,並且版本之間的差異可以被用於增量備份。
卷的臨時窗口可以被表示為一對時間戳Ta,Tb,其中Ta是最早的時間戳,Tb是最晚的時間戳。當創建臨時卷時,可以不定義臨時窗口,直到對卷的第一臨時寫入。在具有時間戳TX的第一寫入上,臨時窗口被初始化為TX,TX。進一步的臨時寫入(例如具有時間戳Ti)將臨時窗口改變為TX,Ti。當從TX到Ty截取歷史記錄時(稍後詳細描述),臨時窗口變成Ty,Ti。
一個實施例可以提供允許臨時卷上臨時I/O操作的一個或多個接口。在一個實施例中,正常卷上允許的操作在臨時卷中可以被類似地或相同地處理。在一個實施例中,臨時卷上的正常(非臨時)讀取可以與其在正常卷中所進行的那樣類似或相同地進行。如果沒有正常叢(但是僅有臨時叢Pt),則可以返回沒有時間戳的數據。如果不存在任何沒有時間戳的數據,則可以返回具有最後的時間戳的數據。在一個實施例中,臨時卷上的正常寫入可以與在正常卷上類似或者相同地進行,除了創建沒有數據的空間優化的快照(在本文中稍後描述)。在一個實施例中,雖然在臨時卷上可以如在正常卷中那樣進行正常讀取,但是對於檢索數據的過去拷貝,可以定義一個或多個I/O請求。
一個實施例可以提供允許用戶讀取過去特定時間範圍的內容的接口。在一個實施例中,可以通過卷上的偏移(offset)及其長度(length)指定範圍。在一個實施例中,可以通過使用時間戳來指定需要內容的時間,並且時間戳的解釋可以留給用戶。在一個實施例中,時間戳類型優選地是由卷管理器(例如VxVM)指定的類型,使得可以在其上進行整數比較。時間戳的例子可以包括但不限於對資料庫,時間戳可以表示被表示為與紀元相距的秒鐘數量的事務時間;對於版本管理系統,時間戳可以表示版本號;對於文件系統,時間戳可以是系統時鐘所表示的時間;以及對於一些其它應用程式,時間戳可以是整數計數器。
在一個實施例中,如果時間戳是0,則可以返回數據的當前拷貝。這等價於正常讀取。如果時間戳是負的,如-n,則返回數據的前面第n個拷貝。這可能對於例如對實際時間不感興趣而僅對變化或版本感興趣的應用程式是有用的。
下面是示範性的API,其中實施例可以提供設備級的臨時卷上的多種臨時操作。注意,這些API是示範性的,而不是限制性的。
一個實施例可以提供可以被用於返回作為未解釋字節緩衝器的範圍的內容。可以通過使用其設備號(裝置)來指定卷。下面是UNIX環境中API的示範性形式void*vol_temporal_read(voldevno_t device,timestamp_t timestamp,voff_t offset,size_t length);
在一個實施例中,vol_temporal_read可以使用設備上的IOCTL(例如VOL_TEMPORAL_READ)。VOL_TEMPORAL_READ是示範性的IOCTL,用於將[offset,length]對所指定的數據讀取到用戶所提供的緩衝器中。可以通過時間戳指定要讀取的拷貝。VOL_TEMPORAL_READ返回與所指定的時間戳匹配(或者最接近時間戳)的區域。下面是被返回的結構的示範性形式struct vol_temporal_io{int flags;/*Flags*/timestamp_t timestamp;/*Timestamp*/caddr_t buf; /*Buffer*/size_t buf_len; /*Length of the buffer*/voff_t offset; /*Offset*/}一個實施例可以提供可以用於從一段時間讀取的API。這種接口可以允許用戶讀取兩個時間點之間範圍的所有版本。可以通過使用偏移和長度來指定範圍。在該接口中,可以提供兩個時間戳,第一個對應於時間周期的開始,第二個對應於結束。在一個實施例中,包括二者。在一個實施例中,如果這兩個時間戳(例如period_start和period_end)相等,則返回周期開始時的拷貝。如果這兩個時間戳都是0,則返回當前拷貝。如果兩個時間戳是負的,比如說分別是-m和-n(m>n),則返回前面第m個和第n個拷貝之間的所有拷貝(在一個實施例中,包括二者)。下面是API的示範性形式void*vol_temporal_period_read(voldevno_tdevice,timestamp_tperiod_start,timestamp_tperiod_end,voff_t offset,size_t length);
在一個實施例中,vol_temporal_period_read可以使用設備上的IOCTL(例如VOL_TEMPORAL_PERIOD_READ)。IOCTL返回兩個時間點之間範圍[offset,len](周期)的所有拷貝。通過使用開始和結束時間戳來指定周期。在返回實際數據之前,IOCTL可以被用於找出緩衝器的大小。對此,可以提交空緩衝器,並且IOCTL僅返回其可以找到的區域的數量(reg_num)。一旦用戶已經找出區域的數量,可以在緩衝器中內存,並且可以再次調用IOCTL。用戶優選地為將描述緩衝器內區域拷貝布局的結構(例如period_reg_t)分配足夠的內存。第二時間,IOCTL將返回兩個指針第一個是用戶緩衝器本身(buf),其可以被區域內容的拷貝相繼地填充。每個拷貝可以具有不同的大小,因為可以從區域中刪除塊。第二個指針(reg_ptr)是指向描述用戶緩衝器內區域布局及其拷貝的結構。該結構可以被認為是矩陣,其中每行描述範圍的單個拷貝,列描述一個拷貝內的區域。下面是被返回的結構vol_temporal_region_period_io的示範性形式typedef struct period_reg{voff_t vtbr_offset;/*Region offset*/timestamp_t vtbr_timestamp; /*Copy timestamp*/struct period_reg*vtbr_next_region; /*Next region*/struct period_reg*vtbr_prev_region; /*Previous region*/struct period_reg*vtbr_next_copy;/*Next copy*/struct period_reg*vtbr_prev_copy;/*previous copy*/}*period_reg_t;
struct vol_temporal_region_period_io{int flags; /*Flags*/timestamp_t start_timestamp;/*Period start*/timestamp_t end_timestamp; /*Period end*/caddr_t buf;/*Buffer*/period_reg_t reg_ptr;/*Data layout*/size_t buf_len;/*Buffer length*/caddr_t reg_num;/*Number of register*/voff_t offset; /*Extent offset*/size_t len;/*Extent length*/}在一個實施例中,臨時寫入與正常寫入一樣,但是包含用戶定義的時間戳。臨時寫入的示範性接口是size_t vol_temporal_write(voldevno_tdevice,timestamp_ttimestamp,void *buffer,voff_t offset,size_t length);
可以通過使用其設備號(設備)來指定該卷,並且可以在緩衝器中提供要寫入的數據。要寫入的時間與範圍一起被提供在時間戳中,並且優選地不小於範圍的當前時間戳(如果存在的話)。可以如通常的那樣通過使用[offset,length]對來指定範圍。用於該函數的內核IOCTL(例如VOL_TEMPORAL_WRITE)通過使用給定的時間戳而想臨時卷上的區域寫入。
struct vol_temporal_region_io{intflags;/*Flags*/timestamp_ttimestamp;/*Timestamp*/caddr_tbuf; /*Buffer*/size_t buf_len; /*Length of the buffer*/voff_t offset; /*Offset*/}下面是可以用於在時間戳所指定的時間之前截取臨時卷(設備)的歷史記錄的示例性接口int_vol_temporal_truncate_history(voldevno_t device,timestamp_t timestamp);
返回值是狀態指示。該函數又使用IOCTL(例如VOL_TEMPORAL_TRUNCATE);該IOCTL截取臨時卷的歷史記錄。用戶可以指定這樣的時間,即在該時間之前應當通過使用時間戳而刪除歷史記錄。
struct vol_temporal_truncate{int flags; /*Flags*/timestamp_t timestamp; /*Timestamp*/}下面是改變臨時窗口的示範性接口int vol_temporal_change_window(voldevno_t device,timestamp_t new_window,twindow_twindow_type);
可以通過使用時間戳類型來指定新的臨時窗口(new_window)。其解釋取決於窗口類型。例如,其可以是基於時間的、基於改變數量的,或者基於當前和最老時間戳之間差異的(由於不解釋時間戳)。該函數可以使用IOCTL(例如VOL_TEMPORAL_CHANGE_WINDOW)來改變臨時卷的臨時窗口。如果新窗口小於舊窗口,則該IOCTL可以執行必要的歷史記錄截取動作。下面是IOCTL的示範性結構形式
struct vol_emporal_change_window{intflags; /*Flags*/timestamp_twindow;/*New Window*/twindow_t type; /*Window type*/}為了中止臨時卷(設備)內改變或版本管理的保持,可以使用下面的示範性接口int vol_temporal_pause_history(voldevno_t device);
int vol_temporal_resume_history(voldevno_t device);
這兩個函數返回相應操作的狀態。它們使用內核IOCTL(例如VOL_TEMPORAL_PAUSE,VOL_TEMPORAL_RESUME);這些IOCTL分別使歷史記錄保持中止或恢復。該操作可以是有用的,例如對於為了歸檔目的使整個歷史記錄離線。在卷中止期間,通過落入被中止間隔中的時間戳對卷進行的任何改變可能被丟失。可選方案是使那些I/O失效。
為了在臨時卷內得到關於數據歷史記錄的信息,可以使用下面的示範性接口int vol_temporal_info( voldevno_t device,voff_t offset,unsigned int *copy_num,timestamp_t *min_timestamp,timestamp_t *max_timestamp,timestamp_t **change_timestamps,voff_t **changed_regions);
可以通過使用其設備號(設備)來指定臨時卷。如果特定區域需要歷史記錄,則可以通過使用其偏移來指定。如果該偏移是負的,則可以為整個卷返回信息。返回的第一片信息是區域的拷貝數量(copy_num)。區域上的最小和最大時間戳分別是min_timestamp和max_timestamp。change_timestamps是區域上所有時間戳的列表。如果整個卷需要信息,則可以返回所有被改變區域的列表(changed_regions)。上面的接口可以使用IOCTL(例如VOL_TEMPORAL_INFO),以得到關於歷史記錄的信息,諸如拷貝數量、時間戳、被改變塊列表等等。下面是VOL_TEMPORAL_INFO的示範性結構struct vol_temporal_info{voff_t offset; /*Offset of region*/caddr_t copy_num; /*Number of copies*/caddr_t start_timestamp; /*First modification*/caddr_t end_timestamp;/*Last modification*/caddr_t change_timestamps;/*List of timestamps*/caddr_t changed_regions; /*List of changed region offsets*/}由於臨時卷保持過去所有卷拷貝,因而一個實施例可以提供獲取特定時間點處卷的完整圖像的機制。該圖像可以是表示特定瞬間卷內容的單獨卷。該圖像可以是全數據的(data-full),在這種情況下,所有塊被拷貝到新存儲器上,或者是無數據的,在這種情況下,不存在實際數據拷貝,而僅存在指向原始臨時卷的一些跟蹤結構。
附圖11表示根據一個實施例的非臨時快照。如果原始卷是臨時卷,則可以避免在覆寫快照原始卷上的數據時所進行的數據的根據寫入進行拷貝。如圖11所示,TVOL是其上出現正常I/O的臨時卷。在不存在臨時卷的臨時應用程式的情況下,在叢Pt下不保持歷史記錄,並且區域在其上不具有時間戳。當在T0獲取快照時,Pt下的所有區域被標以時間戳T0,因此避免了在這些區域上的任何進一步的寫入。如果如果對TVOL進行任何新的寫入,例如在T1時,則其將發現被用T0時間標記的區域,並且不將覆寫。作為代替,其將與舊數據連結(在T0)。
如果TVOL是正常卷,則當在T1發生寫入時,其將已經將區域的舊內容(在T0的那些)推到STVOL(快照臨時卷,或者臨時快照),這是因為根據寫入進行拷貝的策略。這可能是需要的,因為STVOL表示T0的TVOL圖像。然而,由於TVOL是臨時卷,因而不需要根據寫入進行拷貝。當在T1發生寫入時,TVOL可以自動地對區域進行版本管理(version),因為其已經被時間標記以T0,並且因此T0時的區域內容仍然可以在Pt下得到。在正常情況下,只有在區域是無效的情況下,才從TVOL滿足讀取。因此,在STVOL的情況下,所有區域最初都被標記為無效的。只要從STVOL讀取區域,其就與時間標記T0一起被重定向到TVOL。這將讀取T0時的區域內容,而不是當前內容(在T1)。
如果在STVOL上發生寫入,則首先從TVOL中取出相應的塊(具有時間戳T0),然後將其寫入。然後,該區域被標記為有效的,因為其拷貝在STVOL內,並且起不需要被重定向到TVOL。如果整個區域被寫入,則這可以被進一步優化。在這種情況下,可以跳過提取部分。
附圖12表示根據一個實施例從臨時卷中導出空間優化的臨時快照。原始臨時卷是具有臨時窗口Ta,Tb的TVOL。當在Tn創建臨時快照STVOL時,其臨時窗口變成Tn,Tn,其中Ta<=Tn<=Tb。快照創建操作首先創建叢(p2,Px等等),然後是高速緩存對象和快照卷STVOL。然後,其將STVOL的所有區域設置成「無效的」。在一個實施例中,STVOL上的I/O可以如下地進行對時間Tx時STVOL的臨時讀取,如果區域是-無效的,則執行對Tn時TVOL的臨時讀取,並且返回數據。Tn是產生快照的時間。
-有效的,則如果Tx>Tn,就執行Tx時STVOL的臨時讀取,其中Tx是在STVOL上修改區域的時間;這將是區域的最新拷貝。否則,執行從TVOL的臨時讀取。
對時間Tx時STVOL的臨時寫入,如果區域是-無效的,則通過使用Tn時的臨時讀取而從TVOL得到區域的舊數據,將新數據覆蓋在舊數據上,通過通過使用臨時寫入和時間戳Tx(Tx>Tn)來向STVOL寫入。在映射中將該區域設置成有效的,並且將STVOL的臨時窗口變成Tn,Tx。
-有效的,則通過時間戳Tx在STVOL自身上進行臨時寫入,並且將STVOL的臨時窗口改變成Tn,Tn。
片是原始臨時卷在一個時間段上的切割,而與快照不同,快照是時間點圖像。因此,具有臨時窗口Ta,Tb的臨時卷的片保持從Ti到Tj的歷史記錄子集,其中Ti>=Ta,Tj<=Tb。
在一個實施例中,創建臨時卷的一個片可以與創建快照相似。首先進行分配,包括創建叢、高速緩存對象,並最後創建卷STVOL(快照臨時卷,或臨時快照)。然後,映射中的所有區域被標記為無效的,並且片的臨時窗口被設置成Ti,Tj。在一個實施例中,STVOL上的I/O可以如下地進行對時間Tx時STVOL的臨時讀取。如果區域被標記為-無效的,則通過時間戳Tx執行TVOL上的臨時讀取-MODIFLED,則如果Tx>Ti,就執行對Tx時STVOL的臨時讀取,其中Tx是在STVOL上修改區域的時間;這將是區域的最新拷貝。否則,執行從TVOL的臨時讀取。
對時間Tx時STVOL的臨時寫入。如果區域被標記為-無效的,則通過使用Ti時的臨時讀取而從TVOL得到區域的舊數據,將新數據覆蓋在舊數據上,通過使用臨時寫入和時間戳Tx(Tx>Tj)而向STVOL寫入。在映射中將區域設置成有效的,並且將STVOL的臨時窗口改變成Ti,Tx。
-有效的,通過時間戳Tx執行STVOL自身上的臨時寫入,並且將STVOL的臨時窗口改變成Ti,Tx。
在一個實施例中,由於臨時卷上的數據歷史記錄被保存在卷自身中,因而可以將卷返回到其過去的狀態。如果臨時卷(TVOL)具有臨時窗口Ta,Tb,並且用戶希望將卷恢復到其在時間Tk的狀態,其中Ta<=Tk<=Tb,則在一個實施例中可以以下面的方式進行該過程如果用戶希望刪除歷史記錄-參考TVOL的映射,並且對於每個有效區域,刪除時間戳>Tk的所有區域拷貝(這基本上意味著將數據塊返回到空閒池)。
如果用戶希望保留歷史記錄-參考TVOL的映射,並且對於每個有效區域,找到在時間Tk時的區域拷貝的偏移(在高速緩存對象上);例如,如果其是Bx,則將時間Tr時區域拷貝的偏移設置成Bx,其中Tr是開始恢復的時間。
一個實施例可以提供從其時間點圖像之一恢復臨時卷的機制。該過程可以與前面部分中所描述的類似。代替使用TVOL的映射,可以使用快照的映射。然而,這種類型的恢復可以包括數據移動,因為可能已經獨立地修改了快照。一個實施例可以提供從其片之一恢復臨時卷的機制。片可以已經被修改或未修改。恢復可以改變一部分或全部歷史記錄,並且可能要求複雜的數據移動。
前面已經描述了用於在臨時卷上進行I/O和相關操作的接口的示例性實施例。下面描述示範性的用戶級接口,其從應用程式的觀點看是可以有用的,而不是先前所描述的一般接口,並且其不是限制性的。
如果應用程式希望連續地跟蹤卷的區域的變化,則應用程式必須提供時間戳,並且使用臨時寫入接口,以向卷寫入。對僅對保持歷史記錄感興趣的應用程式來說,這可能產生大的開銷。下面描述的示範性接口不要求用戶在向臨時卷(dev name)寫入時指定時間戳。下面是不需要時間戳的、用於向臨時卷寫入的示範性APIint temporal_sys_write(char*dev_name,void*buffer,unsigned intoffset,unsigned intlength);
當讀取時,用戶可以通過使用時間串來指定時間戳(例如「Jan 202003,2:10pm」),如下面用於從臨時卷讀取的示範性API中所示void temporal_sys_read(char *dev_name,char*time_string,unsigned intoffset,unsigned intlength);
對於資料庫來說,可能希望在塊上進行I/O。一個實施例可以為臨時卷提供塊級APIs,以由資料庫(或其它應用程式)使用。在一個實施例中,可以提供下面的示範性接口作為塊級APIs
void temporal_block_read(char *dev_name,unsigned int block_offset);
void temporal_block_period_read( char *dev name,timestamp_t period_start,timestamp_t period_end,unsigned intblock_offset,unsigned int*copy_num);
int temporal block write(char*dev_name,void *buffer,timestamp_t timestamp,unsigned int block_offset);
int temporal_block_info(char *dev_name,unsigned intblock_offset,imestamp_t *min_timestamp,timestamp_t *max_timestamp,timestamp_t **change_timestamps);
雖然應用程式可以通過使用前述接口來存取臨時特徵,並且在一個實施例中,使用一個或多個卷管理器庫(例如VxVM庫),但是可能發生以下情況,即所提供的接口或API不足夠,並且應用程式希望調整接口以滿足他們的需要。例如,資料庫可能對查詢處理的塊提取更感興趣,文件系統可能根據範圍進行它們的業務,存儲庫可能提取整個對象。一個實施例可以提供基於代理的框架,其可以允許應用程式寫入代理,其中代理更特定於應用程式的特殊請求。
在本文中,代理是代表應用程式與臨時卷交互作用、並且支持應用程式的(一些或全部)語義的中介器。代理優選地使應用程式更易於與臨時卷交互作用。此外,代理可以允許應用程式以所需的形式提取數據,而不僅是作為原始數據。對臨時捲來說,這可以沒有任何差異,但對應用程式來說,這可以是有利的。
在一個實施例中,在應用程式側,代理可以輸出任何適於應用程式需要的接口。在卷側,代理可以使用由臨時卷基礎設施已經提供的接口,例如前述接口。代理的形式可以是庫、實用程序或者甚至腳本。代理可以作為異常分支點(hooks)而被寫入應用程式中(如俘獲特定調用),或者可選擇地,代理可以被緊密地集成到應用程式中。在一個實施例中,臨時卷可以提供標準庫和命令集,可以通過使用該標準庫和命令組寫代理。
代理可以被用於例如不支持臨時操作、但是希望通過使用在此描述的臨時卷而支持臨時操作的現有系統。下面是可以使用代理的一些示範性情況。
在第一種示範性的情況中,一些資料庫可能不支持臨時操作或數據,但是希望使用臨時卷。對這些資料庫來說,可以創建資料庫,並且資料庫代理可以被用於重新定向具有與其關聯的時間維度的操作。這樣,現有的不是臨時的資料庫可以添加資料庫代理層,該資料庫代理層用作臨時卷的接口,以支持臨時操作。
在第二種示範性的情況,存儲庫可以使用代理作為臨時卷的接口,以臨時地存儲和檢索它們的數據對象。只要對象改變,就可以將改變要求重新路由到對象代理,該對象代理將對象寫到與舊對象所位於的位置完全相同的位置。由於在臨時卷上創建存儲庫,因而僅版本管理已經改變的塊。在提取特定時間戳的對象版本時,對象代理將適當的時間戳添加到卷讀取,因此返回對象的舊版本,而沒有降低索引或提取性能。
在一個實施例中,前面所描述的、臨時卷的臨時窗口參數和/或周期檢查點設置工具可以被用於執行周期複製。周期複製周期地複製一組卷,而不是在改變發生時在改變上傳送。這種方式具有的優點包括但不限於減少的I/O等待時間(與同步複製比較),以及日誌不是必需的(與異步複製相反)。可以將臨時窗口設置成略大於複製周期;這樣,僅保存周期內發生的變化。僅將變化發送到區域,而不是整個區域拷貝,這可以進一步優化複製。可以通過使用數據的最新拷貝以及上上次複製時(上一周期的末尾)的數據拷貝來計算這些改變。
臨時應用程式可以生成過量數據,該數據可能被要求在臨時卷內保留延長的周期。使較老的歷史記錄離線同時保持最近的歷史記錄在線可以是有用的,例如,如果用戶不希望失去變化,但是希望使用最近的歷史記錄。在這種情況下,臨時窗口是「無限的」。這導致在臨時卷內具有過去數據的全部狀態,這可能需要大量存儲器。在一個實施例中,可以將HSM(分層存儲器管理)用於在應用程式在線時將偶爾存取的數據和/或歷史記錄透明地移動到其它介質(例如磁帶或光碟)。
在一個實施例中,臨時卷可以與備份實用程序集成。備份實用程序可以使用增量備份技術,以便僅存儲對文件所進行的變化,由此優化進行備份所需的寬帶。網絡備份實用程序可以在中心(沒必是單一的)備份伺服器存儲備份,這允許許多應用程式客戶端僅分享備份的一個實例。通過使用臨時卷,可以在邏輯設備級自動地進行增量保存,並且因而不需要顯式地計算和存儲文件的增量。臨時卷也可以被用於版本管理多客戶端的變增量。如果多個用戶獨立地改變一個文件,則可以將多個版本存儲在相同臨時卷內,這有助於隨後提取文件版本。
在一個實施例中,臨時窗口可以允許備份實用程序跟蹤客戶端側上文件的變化。一個變化的臨時窗口可以被用於連續地跟蹤變化。可以優化獲取增量,因為原始內容無需(不必)被從伺服器中取出,但是代替地可以通過使用數據先前狀態的臨時讀取而被檢索。在一個實施例中,可以在客戶端側上創建增量。
術語表分層存儲器管理(Hierarchical Stroge ManagementHSM)-一組提供企業範圍存儲器管理服務-諸如自動的基於策略的數據遷移、自動備份、壓縮、安全以及歸檔的軟體和/或硬體。所有HSM解決方案所共有的特徵是數據遷移、基於數據存取模式將數據卸載到較廉價或近線性的存儲器-諸如磁帶、CD或WORM驅動器-的能力。HSM當其被存取時透明地重新調用這種數據。
鏡像,叢(Mirror,Plex)-卷數據的邏輯映射或拷貝。在卷中可以存在一個或多個叢。每個單獨的鏡像不必具有完整的拷貝,但是可以具有由於物理介質上的某種誤差或者由於鏡像幾何的特性而其中不映射數據的孔。這可以被稱作稀疏叢。然而,在卷中必須存在完整叢。
原始卷(Original Volume)-由於快照或分離操作而正從中分離一個或多個鏡像的卷。
複製(Replication)-保持原始位置上數據卷與其在地理上間隔的第二位置上的圖像之間一致性的處理。具有三種模式或複製同步、異步和周期。同步複製僅當第二位置也已經被更新時才返回寫入。異步複製將變化記入日誌中,立即返回寫入,並且隨後更新第二位置(在後臺)。周期複製將增量變化傳送到第二位置,以便保持一致性。
恢復(Restore)-卷管理器操作,其中邏輯破壞之後的原始卷返回其先前時間點圖像中的一個。
再同步(Resvnc,Resvnchronization)-卷管理器操作,其與卷內容同步地放置失效叢或(通過瞬時快照)與另一卷同步地放置卷。
快照卷(Snapshot Volume)-原始卷的時間點圖像。
快照(Snapshot)-創建快照卷的卷管理器操作。
卷(Volume)-卷管理器偽設備,其工作類似於物理塊存儲設備(磁碟),但是具有任意複雜的、並且可能冗餘的內部幾何。卷最終將其邏輯空間映射到實際磁碟驅動器上的物理空間(雖然卷管理器看作是物理磁碟的東西又可能是由另一設備或由存儲器陣列所創建的偽設備)。
VxFS-VERITAS文件系統,日誌式文件系統通過允許回退和重做而保存文件的目的或對其的操作。VxFS還允許克隆,這等價於得到文件系統的時間點圖像。
檢查點設置(Checkpointing)-獲取數據卷的邏輯時間點圖像的處理。
無效區域(Invalid region)-還沒有被應用程式寫入、並因而不包含任何有效應用程式數據的的數據卷區域。
有效區域(Valid region)-包含對應用程式有效的數據的數據卷區域。
結論各種實施例可以進一步包括根據前面的描述在承載介質上實現的接收、發送或存儲指令和/或數據。一般而言,承載介質可以包括存儲介質或內存介質,諸如磁或光介質,例如磁碟或CD-ROM,易失性或非易失性介質,諸如RAM(例如SDRAM,DDR SDRAM,RDRAM,SRAM等等),ROM等等,以及傳送介質或信號,諸如經由通信介質-諸如網絡和/或無線鏈路傳送的電、電磁、或數位訊號。
附圖中所示出並且在此描述的各種方法表示方法的示範性實施例。這些方法可以在軟體、硬體或其組合中實現。可以改變方法的順序,並且可以各個元件可以被添加、記錄、組合、省略、修改等等。
可以進行各種修改和改變,如本領域技術人員了解本說明書的情況下所顯而易見的。這意味著本發明包括所有這樣的修改和改變,並且相應地,以上描述被看作是說明性的,而不是限制性的。
權利要求
1.一種系統,包括應用程式;用於存儲臨時數據的臨時卷;以及臨時卷管理器,所述臨時卷管理器被配置為從所述應用程式接收I/O請求,其中所述I/O請求為所述臨時卷上的臨時數據指定一個或多個時間戳;以及響應於所述I/O請求,在所述臨時卷上執行邏輯設備級臨時操作。
2.如權利要求1所述的系統,其中所述I/O請求是寫入請求,並且在所述臨時操作中,所述臨時卷管理器被進一步配置為將由所述I/O請求所指定的臨時數據寫入到所述臨時卷。
3.如權利要求2所述的系統,其中在所述臨時操作中,所述臨時卷管理器被進一步配置為對應於由所述I/O請求所指定的時間戳生成所述臨時卷上臨時數據的檢查點。
4.如權利要求1所述的系統,其中所述I/O請求是讀取請求,並且在所述臨時操作中,所述臨時卷管理器被進一步配置為將由所述I/O請求所指定的臨時數據返回到所述應用程式。
5.如權利要求1所述的系統,其中所述I/O請求指定要對應於由所述I/O請求所指定的時間戳而創建所述臨時卷的檢查點,並且其中在所述臨時操作中,所述臨時卷管理器被進一步配置為對應於所述指定的時間戳而生成所述臨時卷的檢查點。
6.如權利要求1所述的系統,其中所述臨時卷管理器被進一步配置為以由I/O請求所指定的時間間隔生成所述臨時卷的檢查點。
7.如權利要求1所述的系統,其中所述I/O請求指定要對應於由所述I/O請求所指定的時間戳而生成所述臨時卷的時間點圖像,並且其中在所述臨時操作中,所述臨時卷管理器被進一步配置為對應於所述指定的時間戳而生成所述臨時卷的時間點圖像。
8.如權利要求1所述的系統,其中所述I/O請求指定要創建由所述I/O請求中兩個時間戳所指定的臨時卷時間片圖像,並且其中在所述臨時操作中,所述臨時卷管理器被進一步配置為生成由所述兩個時間戳所指定的臨時卷時間片圖像。
9.如權利要求1所述的系統,其中所述I/O請求指定要在由所述I/O請求所指定的時間點截取所述臨時卷的歷史記錄,並且其中在所述臨時操作,所述臨時卷管理器被進一步配置為在由所述I/O請求所指定的時間點截取所述臨時卷的歷史記錄。
10.如權利要求1所述的系統,其中所述I/O請求指定要遍歷所述臨時卷的歷史記錄直到由所述I/O請求所指定的時間點,並且其中所述臨時卷管理器被進一步配置為在所述臨時卷的歷史記錄中由所述I/O請求所指定的所述時間點執行所述臨時操作。
11.如權利要求1所述的系統,其中所述I/O請求指示所述臨時卷的一個或多個區域,其中在所述區域上要執行所述臨時操作。
12.一種系統,包括用於從應用程式為臨時卷接收I/O請求的裝置,其中所述I/O請求為臨時卷上的臨時數據指定一個或多個時間戳;以及用於響應於所述I/O請求而在所述臨時卷上執行邏輯設備級操作的裝置。
13.一種方法,包括臨時卷管理器從應用程式接收I/O請求,其中所述I/O請求為臨時卷上的臨時數據指定一個或多個時間戳;以及所述臨時卷管理器響應於所述I/O請求而在所述臨時卷上執行邏輯設備級臨時操作。
14.如權利要求13所述的方法,其中所述I/O請求是寫入請求,並且所述在臨時卷上執行邏輯設備級臨時操作的步驟包括所述臨時卷管理器將由所述I/O請求所指定的臨時數據寫入到所述臨時卷。
15.如權利要求14所述的方法,其中所述在臨時卷上執行邏輯設備級臨時操作的步驟進一步包括對應於由所述I/O請求所指定的時間戳而生成所述臨時卷上臨時數據的檢查點。
16.如權利要求13所述的方法,其中所述I/O請求是讀取請求,並且所述在臨時卷上執行邏輯設備級臨時操作的步驟包括將由所述I/O請求所指定的臨時數據返回到所述應用程式。
17.如權利要求13所述的方法,其中所述I/O請求指定將對應於由所述I/O請求所指定的時間戳而創建所述臨時卷的檢查點,並且其中所述在臨時卷上執行邏輯設備級臨時操作的步驟包括對應於所述指定的時間戳而生成所述臨時卷的檢查點。
18.如權利要求13所述的方法,進一步包括所述臨時卷管理器以由I/O請求所指定的時間間隔生成所述臨時卷的檢查點。
19.如權利要求13所述的方法,其中所述I/O請求指定將對應於由所述I/O請求所指定的時間戳而生成所述臨時卷的時間點圖像,並且其中所述在臨時卷上執行邏輯設備級臨時操作的步驟包括對應於所述指定的時間戳而生成所述臨時卷的時間點圖像。
20.如權利要求13所述的方法,其中所述I/O請求指定將創建由所述I/O請求中兩個時間戳所指定的臨時卷時間片圖像,並且其中所述在臨時卷上執行邏輯設備級臨時操作的步驟包括生成由所述兩個時間戳所指定的臨時卷時間片圖像。
21.如權利要求13所述的方法,其中所述I/O請求指定要在由所述I/O請求所指定的時間點截取所述臨時卷的歷史記錄,並且其中所述在臨時卷上執行邏輯設備級臨時操作的步驟包括在由所述I/O請求所指定的時間點截取所述臨時卷的歷史記錄。
22.如權利要求13所述的方法,其中所述I/O請求指定要遍歷所述臨時卷的歷史記錄直到由所述I/O請求所指定的時間點,並且其中所述在臨時卷上執行邏輯設備級臨時操作的步驟包括在所述臨時卷的歷史記錄中由所述I/O請求所指定的所述時間點執行所述臨時操作。
23.如權利要求13的方法,進一步包括在由所述I/O請求所指示的所述臨時卷的一個或多個區域上執行所述邏輯設備級臨時操作。
24.一種包括程序指令的計算機可存取介質,其中所述程序指令被配置為執行臨時卷管理器從應用程式接收I/O請求,其中所述I/O請求為臨時卷上的臨時數據指定一個或多個時間戳;以及所述臨時卷管理器響應於所述I/O請求而在所述臨時卷上執行邏輯設備級臨時操作。
25.如權利要求24所述的計算機可存取介質,其中所述I/O請求是寫入請求,並且在所述在臨時卷上執行邏輯設備級臨時操作的步驟中,所述程序指令被進一步配置為實現所述臨時卷管理器將由所述I/O請求所指定的臨時數據寫入到所述臨時卷。
26.如權利要求25所述的計算機可存取介質,其中在所述在臨時卷上執行邏輯設備級臨時操作的步驟中,所述程序指令被進一步配置為實現對應於由所述I/O請求所指定的時間戳而生成所述臨時卷上臨時數據的檢查點。
27.如權利要求24所述的計算機可存取介質,其中所述I/O請求是讀取請求,並且在所述在臨時卷上執行邏輯設備級臨時操作的步驟中,所述程序指令被進一步配置為實現將由所述I/O請求所指定的臨時數據返回到所述應用程式。
28.如權利要求24所述的計算機可存取介質,其中所述I/O請求指定將對應於由所述I/O請求所指定的時間戳而創建所述臨時卷的檢查點,並且其中在所述在臨時卷上執行邏輯設備級臨時操作的步驟中,所述程序指令被進一步配置為實現對應於所述指定的時間戳而生成所述臨時卷的檢查點。
29.如權利要求24所述的計算機可存取介質,其中所述程序指令被進一步配置為實現所述臨時卷管理器以由I/O請求所指定的時間間隔生成所述臨時卷的檢查點。
30.如權利要求24所述的計算機可存取介質,其中所述I/O請求指定將對應於由所述I/O請求所指定的時間戳而創建所述臨時卷的時間點圖像,並且其中在所述在臨時卷上執行邏輯設備級操作的步驟中,所述程序指令被進一步配置為實現對應於所述指定的時間戳而生成所述臨時卷的時間點圖像。
31.如權利要求24所述的計算機可存取介質,其中所述I/O請求指定將創建由所述I/O請求中兩個時間戳所指定的臨時卷時間片圖像,並且其中在所述在臨時卷上執行邏輯設備級臨時操作的步驟中,所述程序指令被進一步配置為實現生成由所述兩個時間戳所指定的臨時卷時間片圖像。
32.如權利要求24所述的計算機可存取介質,其中所述I/O請求指定將在由所述I/O請求所指定的時間點截取所述臨時卷的歷史記錄,並且其中在所述在臨時卷上執行邏輯設備級操作的步驟中,所述程序指令被進一步配置為實現在由所述I/O請求所指定的時間點截取所述臨時卷的歷史記錄。
33.如權利要求24所述的計算機可存取介質,其中所述I/O請求指定將遍歷所述臨時卷的歷史記錄直到由所述I/O請求所指定的時間點,並且其中在所述在臨時卷上執行邏輯設備級臨時操作的步驟中,所述程序指令被進一步配置為在所述臨時卷的歷史記錄中由所述I/O請求所指定的時間點執行所述臨時操作。
34.如權利要求24所述的計算機可存取介質,其中所述程序指令被進一步配置為實現在由所述I/O請求所指示的所述臨時卷的一個或多個區域上執行所述邏輯設備級臨時操作。
全文摘要
在邏輯設備級保持數據存儲器中臨時數據的系統和方法。臨時卷管理器的實施例可以提供允許應用程式和/或應用程式代理與臨時卷管理器交互作用的接口,以便在一個或多個臨時卷上管理和跟蹤臨時信息。實施例可以為提供用於作用於數據歷史數據-諸如臨時資料庫、版本管理文件系統/存儲庫、數據存檔和流媒體-的應用程式的基礎設施,以管理臨時數據。在一個實施例中,如果應用程式不希望直接使用臨時卷,則可以使用應用程式代理來存取臨時卷。實施例可以提供臨時卷上臨時數據的I/O控制的、應用程式控制的和/或周期的檢查點設置。一個實施例可以提供用於生成臨時卷的臨時圖像(例如時間點和時間片圖像)的機制,該臨時圖像可以具有其自己獨立的歷史記錄。
文檔編號G06F11/14GK1882906SQ200480033583
公開日2006年12月20日 申請日期2004年9月30日 優先權日2003年9月30日
發明者安安德·A·凱克雷, 安庫爾·潘克布德赫 申請人:維瑞泰斯操作公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀