傳統檔案系統結構對於檔案間的關聯以及基於內容的元資料支援度不足,通常都是將面向檔案的元資料資訊儲存在單獨的資料庫或者磁碟上,要受到結構上固有的限制,並且無法支援使用者自定義的檔案關聯資訊。為了解決這個問題,提出了一種新型檔案系統linking file system(lifs),能夠支援使用者定義或者應用程式定義的屬性,以及檔案間的屬性連線。為了保證訪問連線及屬性時的效能,將元資料儲存在非易失性記憶體中。
當前,利用web在數十億檔案中查詢乙個 目標文件遠比在本地檔案系統中來的容易,這是由於在web端的文件都是被嵌入在超連結結構中。例如google就利用web文件間的連線,使用pagerank演算法來傳遞查詢結果的排序資訊等等。然而,傳統檔案系統的查詢工具能夠利用的資訊僅包括層次目錄結構和檔案許可權,遠遠無法滿足需求。
傳統檔案系統的元資料管理開銷很大,這是由於記憶體的易失性導致大量的外存互動。然而,新型的非易失性記憶體能夠有效的保證資料的永續性,儘管它並不能明顯的加速一般操作的效率,但是它使得檔案系統的設計者可以不必考慮磁碟訪問速率,而只需專注使用者的需求。
lifs能夠分派屬性,並建立檔案間的屬性連線。有效的優化了查詢效率,並擴充套件了層次目錄結構,支援更加友好的、個性化的檔案組織結構。檔案連線的權重還可以用來記錄訪問模型,優化後面的預取,索引和查詢結果排序等功能。
lifs的設計模型概要
lifs的特點在於支援檔案間的連線以及這些檔案和連線的屬性。為了保證lifs的效能和可靠性,使用非易失性和低延遲的mram。在檔案系統的最底層,查詢請求需要遍歷一系列的元資料連線,即使利用快取,對磁碟上inode的隨機訪問都顯得過於緩慢。然後低延遲的mram可以保證近似於實時的元資料操作和查詢效率。
連線特性
lifs中的每乙個連線都包括乙個原始檔,乙個目標檔案以及乙個包含鍵值對的非空屬性集。lifs連線與posix連線的區別在於它包含對檔案間關係的描述,而不僅僅是對檔案的引用。連線的屬性表示了檔案間關係的特性。
每乙個檔案都潛在的包含了與其他任意檔案的連線,因此,每乙個檔案都像是乙個目錄,檔案與目錄間的差異被消除了。連線最大的優勢在於能夠為檔案關係提供原生支援,而現有的檔案系統只能通過額外的應用程式或者作業系統來提供。除了包含關係,連線還能傳遞其他一些有效的資訊,如父目錄,建立者等等。連線根據型別不同,還能夠支援動態可定製的檔案系統檢視。
屬性特性
在我們最初的設計中,所有的檔案和連線都包含許多屬性,每乙個鍵值對的大小都是不受限制的。然而我們在最終的實現中,對鍵值對的大小提前設定乙個合理的上限值,以避免過長的鍵值對對效能的影響。
屬性的鍵值成員都可以包含任意格式的資料,包括二進位制資料,這使得上層應用可以利用豐富的元資料型別。通過檔案和連線屬性實現元資料的共享,為應用程式的整合提供了強有力的基礎支撐。
屬性最大的作用在於允許使用者、應用程式和系統本身對檔案和連線進行注釋,從而支援快速而有效的檔案搜尋、分類、分割槽、處理和為其他模組提供基礎支撐。它還能提供使用者和應用程式需要使用的,豐富的屬性資訊,例如:資料**,預期用途,建立者,修改歷史等等。
我們允許屬性能夠被執行,乙個可執行檔案屬性的特例就是檔案觸發。檔案觸發指定了乙個模式/行動對,模式指定了檔案上某個操作關聯的可執行屬性,而行動則指定了關聯操作被觸發後的**。檔案觸發能夠有效的簡化各類檔案操作的執行,例如版本控制,映象等等。
介面
lifs提供了一種增強版的posix介面,在這裡我們列舉一些重要的api介面。
連線建立:我們設計了一種新的系統呼叫——rellink,可以建立關係型連線。建立鏈結需要原始檔、目標檔案和乙個或多個屬性。rellink 呼叫需要包含屬性,否則標準的posix就足以勝任了。例如,建立資料夾mkdir,只需原始檔和目標檔案,不需要屬性,這就無法使用我們的rellink。當然,rellink 也可以通過隱含原始檔,將其預設值作為屬性值來呼叫mkdir。rellink 建立了乙個從原始檔的inode 到目標檔案的硬鏈結(hard link)。從原始檔到目標檔案路徑的每乙個物件都必須識別,而不能直接使用inode號。我們也提供了一種類似的呼叫relsyslink,它建立的是一種類似posix介面的軟鏈結(soft link),但是新增了對屬性的賦值,這就允許使用者建立物件和名字間的關係,此外還可以直接建立物件間的關係型連線。
多重連線和認證:
元資料管理檔案系統
接下來看一些具體的東西。從形式上講,元資料可分為記憶體元資料和元資料檔案兩種。其中namenode在記憶體中維護整個檔案系統的元資料映象,用於hdfs的管理 元資料檔案則用於持久化儲存。namenode將檔案系統的元資料以不同的檔案儲存在本地磁碟中,其中最重要的兩個檔案是fsimage 和edits...
檔案系統 軟連線和硬鏈結
先,來看一下檔案的各個屬性。圖1 ls li檢視檔案屬性 輸入命令是ls li 第一行 inode 下面會將述inode 第二行 檔案的種類和許可權 第四行 屬組 第五行 所歸屬的組 第六行 檔案的大小 第七行 檔案最後修改的時間 第八行 檔案或者目錄的名稱 其次,讓我們來看一下inode。inod...
基於檔案系統實現可追加的資料集市
絕大多數的應用系統中,一開始資料的儲存和計算基本都是由資料庫來完成的,同時服務於業務交易和報表查詢 不過在經過幾年資訊化建設和資料積累後,常常都會遇到資料庫壓力變大,從而導致效能瓶頸的問題。究其原因,往往發現針對歷史資料查詢的報表在其中佔了很大比重。進一步分析會發現,這類報表通常都有如下特徵 1 資...