一種基於對象的溯源存儲系統及方法與流程
2023-04-30 01:51:52 2

本發明屬於計算機數據存儲技術領域,更具體地,涉及一種基於對象的溯源存儲系統及方法。
背景技術:
在計算機存儲領域,如今的存儲系統已經在可靠性、可用性和高效性方面取得了巨大的進步。然而隨著數據量的增大和數據複雜度的提高,利用溯源來管理存儲系統也變得越發重要。溯源是描述一個數據對象的歷史操作的元數據。溯源提高了數據本身所描述的價值,它給出了「對象是如何創建的,對象依賴了哪些其他對象以及這兩個對象的歷史操作有何不同」等問題的答案。在系統領域,一個對象的溯源是所有影響該對象最終狀態的過程和數據。
由於溯源表露了數據的起源和產生過程,讓用戶對數據的理解更加透徹,相關研究機構已經認識到了數據溯源的重要性並且在積極地探索如科學計算、檔案系統和資料庫等多個領域的相關問題。然而,上述研究限定在了特定的領域或者獲取數據溯源時需要對應用程式進行修改,降低了溯源信息的收集效率。
技術實現要素:
針對現有技術的以上缺陷或改進需求,本發明提供了一種基於對象的溯源存儲系統及方法,充分利用對象存儲體系結構,在對象存儲客戶端收集系統內核信息、文件格式信息及普通應用程式信息等溯源信息,並將收集到的溯源信息封裝成對象,存儲到對象存儲設備端的資料庫或日誌文件中,可以使溯源信息得以高效地收集及查詢。由此解決現有技術中對溯源信息的收集效率較低的技術問題。
為實現上述目的,按照本發明的一個方面,提供了一種基於對象的溯源存儲系統,包括:對象存儲客戶端以及對象存儲設備端;
所述對象存儲客戶端,用於收集系統內核、文件格式以及應用程式的溯源信息,將收集得到的溯源信息存入緩衝區,並向所述對象存儲設備端發送對象命令;
所述對象存儲設備端,用於接收並解析所述對象命令,提取出所述對象存儲客戶端緩衝區中的溯源信息,將提取出的溯源信息寫入對象文件以及資料庫中;
所述對象存儲設備端,還用於在接收到用戶輸入的查詢關鍵字時,對資料庫進行檢索,將與查詢關鍵字匹配的查詢結果進行展示。
優選地,所述對象存儲客戶端包括系統狀態溯源收集模塊、文件格式溯源收集模塊、應用程式溯源收集模塊以及第一對象文件系統模塊;
所述系統狀態溯源收集模塊,用於分析系統狀態文件,將系統內核信息轉換為系統狀態溯源信息;
所述文件格式溯源收集模塊,用於調用格式分析程序分析文件,將文件格式信息轉換為文件格式溯源信息;
所述應用程式溯源收集模塊,用於攔截系統調用,將系統調用序列號以及進程信息轉換為應用程式溯源信息;
所述第一對象文件系統模塊,用於將所述系統狀態溯源信息、所述文件格式溯源信息以及所述應用程式溯源信息存入緩衝區,並向所述對象存儲設備端發送對象命令。
優選地,所述對象存儲設備端包括對象命令處理模塊、第二對象文件系統模塊以及溯源查詢模塊;
所述對象命令處理模塊,用於接收並分析所述對象命令,從所述對象存儲客戶端的緩衝區中解析出所述系統狀態溯源信息、所述文件格式溯源信息以及所述應用程式溯源信息,並轉發給所述第二對象文件系統模塊;
所述第二對象文件系統模塊,用於將解析出的所述系統狀態溯源信息、所述文件格式溯源信息以及所述應用程式溯源信息寫入文件和資料庫,並分別把文件和資料庫記錄封裝成對象;
所述第二對象文件系統模塊,還用於通過用戶輸入的關鍵字對資料庫進行搜索得到溯源查詢結果;
所述溯源查詢模塊,用於將所述溯源查詢結果寫入到本地磁碟和/或返回給所述對象存儲客戶端。
按照本發明的另一方面,提供了一種基於對象的溯源存儲方法,包括以下步驟:
(1)對象存儲客戶端收集系統內核、文件格式以及應用程式的溯源信息,將收集得到的溯源信息存入緩衝區,並向對象存儲設備端發送對象命令,其中,所述對象命令中攜帶有收集得到的溯源信息;
(2)對象存儲設備端接收並解析所述對象命令,提取出溯源信息,將溯源信息寫入對象文件和資料庫中;
(3)對象存儲設備端在接收到用戶輸入的查詢關鍵字時,對資料庫進行檢索,將查詢結果寫入到本地磁碟和/或返回給對象存儲客戶端。
總體而言,通過本發明所構思的以上技術方案與現有技術相比,主要有以下的技術優點:通過利用對象存儲體系結構,在對象存儲客戶端收集系統內核信息、文件格式信息及普通應用程式信息等溯源信息,並將收集到的溯源信息封裝成對象,存儲到對象存儲設備端的資料庫或日誌文件中,可以使溯源信息得以高效地收集及查詢。
附圖說明
圖1為本發明實施例公開的一種基於對象的溯源存儲系統的結構示意圖;
圖2為一種用於處理溯源信息的基於對象的主動存儲機制的交互圖;
圖3為本發明實施例公開的一種基於對象的溯源存儲方法的流程示意圖。
具體實施方式
為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不用於限定本發明。此外,下面所描述的本發明各個實施方式中所涉及到的技術特徵只要彼此之間未構成衝突就可以相互組合。
圖1為本發明實施例公開的一種基於對象的溯源存儲系統的結構示意圖,該系統由對象存儲客戶端以及對象存儲設備端組成:上述對象存儲客戶端,用於收集系統內核、文件格式以及應用程式的溯源信息,將收集得到的溯源信息存入緩衝區,並向所述對象存儲設備端發送對象命令,其中,所述對象命令中攜帶有收集得到的溯源信息;上述對象存儲設備端,用於接收並解析對象命令,提取出溯源信息,將溯源信息寫入新創建的對象文件和資料庫中;上述對象存儲設備端,還用於在接收到用戶輸入的查詢關鍵字時,對資料庫進行檢索,將與查詢關鍵字匹配的查詢結果進行展示。
其中,在對象存儲客戶端中,包括系統狀態溯源收集模塊、文件格式溯源收集模塊、應用程式溯源收集模塊以及第一對象文件系統模塊:
系統狀態溯源收集模塊,用於分析系統狀態文件,將系統內核信息轉換為系統狀態溯源信息;
具體地,系統狀態溯源收集模塊利用系統狀態文件收集內核信息,對系統狀態文件中的內容進行逐條分析和篩選即可得到需要的內核信息,當前系統中的重要溯源信息包括作業系統的名稱、網絡節點名、內核發行級別、內核發行版本以及CPU架構等信息。然後將這些信息存儲到數據輸出緩衝區中。
文件格式溯源收集模塊,用於調用格式分析程序分析文件,將文件格式信息轉換為文件格式溯源信息;
具體地,文件格式溯源收集模塊利用文件格式分析的應用程式JHOVE分析得到的文件格式信息,即此文件是利用何種格式建立的,以及能夠得到其中的創建時間以及最近更新時間等溯源信息,並將這些溯源信息存儲到數據輸出緩衝區中。
應用程式溯源收集模塊,用於攔截系統調用,將系統調用序列號以及進程信息轉換為應用程式溯源信息;
具體地,應用程式溯源收集模塊能夠記錄系統調用和文件訪問並生成日誌文件。此功能能夠通過對任何目錄下的註冊文件進行編輯或者通過使用圖像接口。一旦註冊成功,事件的通知便會生成日誌文件存儲在指定目錄下的日誌文件中。
可選地,可以有以下三種應用程式的監測方式。
(1)對創建文件操作進行監測;
對文件進行創建和刪除操作時,利用audit監聽該文件目錄便可得到添加和/或刪除產生的溯源信息。例如,對簡單的Vim操作文本的指令:
#vitest.txt
同時利用auditctl指令對該目錄下的文件進行監測,便可在生成的日誌文件中得到基本文件操作的溯源信息。利用aureport指令對日誌文件的內容進行篩選,便可得到我們編輯文件時產生的溯源信息,得到多個系統用戶與組的ID。同時我們還可得到節點號inode,系統調用退出值exit,系統調用的成功值success,系統調用的處理器體系結構arch等溯源信息。
(2)對postmark應用程式執行文件添加/刪除進行監測;
利用postmark對大量文件的添加或刪除操作,可以通過審計功能audit對postmark所操作的文件區進行監測操作,便可得到一系列文件添加或刪除操作以及讀或寫操作。其中,postmark是一個I/O密集型的應用程式。
將audit監測postmark運行過程中的數據變更輸出日誌文件存儲在/var/log/audit/result.log中。
(3)對內核編譯過程進行監測;
與postmark對文件進行大量添加或刪除不同,編譯內核的過程可視為CPU密集型的應用程式。編譯內核時會對系統下的多個部分均產生影響。因此我們在/usr/src目錄對內核執行編譯指令時,需要利用audit對根目錄進行監控來查看內核編譯所產生的溯源信息。然後在/usr/src目錄中對內核編譯做出操作,執行makebzImage指令生成內核映像進行編譯。編譯完成後,audit功能便在日誌文件中生成內核編譯過程的溯源信息。
第一對象文件系統模塊,用於將系統狀態溯源信息、文件格式溯源信息以及應用程式溯源信息存入緩衝區,並向對象存儲設備端發送對象命令,其中,對象命令中攜帶有系統狀態溯源信息、文件格式溯源信息以及應用程式溯源信息。
可選地,將溯源信息從對象存儲客戶端傳輸到對象存儲設備端,並進行存儲和訪問的對象命令流程如下:
(1)首先在對象存儲客戶端收集溯源信息後,將其讀到對象存儲客戶端緩衝區buffer中。
(2)然後調用osd_create_and_write函數,將溯源信息傳輸到對象存儲設備端,並由對象存儲設備端寫入到新創建的對象文件內。其中,對象文件的路徑由無符號整數的進程身份標識符(Process Identifier,PID)和無符號整數的用戶身份標識符(User Identification,UID)共同標識。例如對對象存儲設備端目錄路徑為/0/64的文件進行操作,則需要令PID=0x0,UID=0x64。
(3)新產生的對象文件ID(即PID和UID)既可以由osd_create_and_write函數中的隨機算法確定,也能由對象存儲設備端中創建對象時進行指定。
(4)在對象存儲客戶端可利用對象讀寫命令對對象存儲設備端的溯源信息進行訪問。
其中,在對象存儲設備端中,包括對象命令處理模塊、第二對象文件系統模塊以及溯源查詢模塊;
對象命令處理模塊,用於接收並分析對象命令,從對象存儲客戶端的緩衝區中解析出系統狀態溯源信息、文件格式溯源信息以及應用程式溯源信息,並轉發給第二對象文件系統模塊;
第二對象文件系統模塊,用於將解析出的系統狀態溯源信息、文件格式溯源信息以及應用程式溯源信息寫入文件和資料庫,並分別把文件和資料庫記錄封裝成對象;
第二對象文件系統模塊,還用於通過用戶輸入的關鍵字對資料庫進行搜索得到溯源查詢結果;
溯源查詢模塊,用於將查詢結果寫入到本地磁碟和/或返回給對象存儲客戶端。
如圖2所示為一種用於處理溯源信息的基於對象的主動存儲機制的交互圖,對象命令處理模塊獲取和分析對象存儲設備端接收到的基於對象的存儲設備(Object-based Storage Device,OSD)命令,從OSD命令的數據輸出緩衝區buffer中解析出數據和溯源信息,並轉發給第二對象文件系統模塊,由第二對象文件系統模塊將溯源信息分別寫入文件和資料庫,並分別把文件和資料庫封裝成OSD對象和功能對象,然後功能調度根據功能對象的ID,負責調度相關的功能對象去執行,功能對象被調度到用戶空間,執行結果寫入本地磁碟或返回給對象存儲客戶端,最後,對象存儲客戶端通過溯源查詢即可以列表的方式得到相關的溯源信息。
在對象存儲客戶端收集內核信息後,調用對象創建命令在對象存儲設備端創建一個文件對象,並將所獲取的系統內核溯源信息傳輸到該文件對象中。然後分析此文件對象中的字符串,將首字符串系統名稱作為資料庫的key,將多項溯源信息作為data存儲到BerkeleyDB所創建的資料庫中。
從圖2可以看出,將溯源處理的工作放到對象存儲設備端,而只將處理後的數據傳給對象存儲客戶端,避免了大量溯源數據在網絡上傳輸,從而節約了網絡帶寬。同時將溯源查詢結果返回給對象存儲客戶端,提高了溯源查詢的效率和性能。
圖3所示為本發明實施例公開的一種基於對象的溯源存儲方法的流程示意圖。在圖3所示的方法中,包括以下步驟:
(1)對象存儲客戶端收集系統內核、文件格式以及應用程式的溯源信息,將收集得到的溯源信息存入緩衝區,並向對象存儲設備端發送對象命令,其中,對象命令中攜帶有收集得到的溯源信息;
(2)對象存儲設備端接收並解析該對象命令,提取出溯源信息,將溯源信息寫入對象文件和資料庫中;
(3)對象存儲設備端在接收到用戶輸入的查詢關鍵字時,對資料庫進行檢索,將查詢結果寫入到本地磁碟和/或返回給對象存儲客戶端。
本領域的技術人員容易理解,以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護範圍之內。