Linux虛擬檔案系統(概述)

2021-06-26 03:31:25 字數 1805 閱讀 4126

vfs與程序關係

程序描述符中與vfs相關的部分:

通用檔案系統模型與程序關係架構

通用檔案系統模型資料結構組成

通用檔案系統模型由下列物件組成:

超級塊物件

存放已安裝檔案系統的有關資訊。對基於磁碟的檔案系統,這類物件通常對應於存放在磁碟上的檔案系統控制塊。

索引節點物件

存放關於具體檔案的一些資訊。對於磁碟檔案系統,這類物件通常對應與存放在磁碟上的檔案控制塊。每個索引節點物件都對應與乙個索引節點號,這個節點號唯一標識了檔案系統上的檔案。

檔案物件

存放開啟檔案與程序之間進行互動的有關資訊。這類資訊僅當程序訪問檔案期間存放於核心記憶體中。

目錄項物件

存放目錄項(也就是檔案的特定名稱)與對應檔案進行鏈結的有關資訊。每個磁碟檔案系統都以自己特有的方式將該類資訊存放在磁碟上。

掛接點結構

每個已經掛裝的檔案系統用掛接點物件結構vfsmout描述,所有的結構vfsmount例項形成了乙個鍊錶,用全域性變數vfsmntlist指向煉表頭,該鍊錶可稱為已掛接檔案系統鍊錶。linux支援乙個檔案系統掛接多次,但他們僅有乙個超級塊,每個掛接點用掛接點結構vfsmount描述。

掛接點物件分類連線成不同的鍊錶。

命名空間結構

每個程序可以擁有屬於自己的已掛接檔案系統樹,稱為命名空間。通常大多數程序共享乙個檔案系統命名空間,即系統的根檔案系統。命名空間被子程序繼承,但如果系統呼叫clone()用標示clone_newns建立乙個新程序時,那麼新程序將獲得乙個新命名空間。

程序掛接或解除安裝檔案系統時,僅修改它的命名空間,在同一命名空間的程序才可見這些修改,修改對其他命名空間沒有影響。

檔案系統型別結構

linux核心支援多種檔案系統,各個檔案系統可以作為核心模組或者作為核心一部分進行編譯,linux核心使用檔案系統型別結構file_system_type對各種檔案系統進行跟蹤。

檔案系統註冊後,不同型別的檔案系統存放在全域性變數的鍊錶file_systems中,同一型別的多個檔案系統將超級塊鍊錶到結構file_system_type的成員fs_supers上,通過全域性變數file_systems,可以找到檔案系統型別結構,從該結構可以找到方法(*get_sb)()獲取檔案系統的超級塊,也就可以訪問該檔案系統了。

vfs資料結構關係

下面給個資料結構之間總的關係:

系統支援的檔案系統型別掛接在檔案系統型別鍊錶file_systems中,已掛接的檔案系統放在掛接點物件鍊錶vfsmntlist中,已掛接的不同型別的檔案系統的超級塊放在超級塊鍊錶super_block中。

虛擬檔案系統除了為所有檔案系統的實現提供乙個通用的介面外,還具有另乙個與系統效能相關的重要作用。最近最常使用的目錄項物件被放在所謂的目錄項快取記憶體的磁碟快取記憶體中,以加速從檔案路徑名到最後乙個路徑分量的索引節點的轉換過程。

一般來說,磁碟快取記憶體屬於軟體機制,他允許核心將原本存在磁碟上的某些資訊儲存在ram中,以便對這些資料的進一步訪問能快速進行。而不必慢速訪問磁碟本身。

磁碟快取記憶體不同於硬體快取記憶體和記憶體快取記憶體,後者都與磁碟和其他裝置無關,硬體快取記憶體是乙個快速靜態ram,他加快了直接對慢速動態ram的請求。記憶體快取記憶體是一種軟體機制,引入他是為了繞過記憶體分配器。

除了目錄項快取記憶體和索引節點快取記憶體以外,linux還使用其他磁碟快取記憶體。其中最重要的乙個是頁面快取記憶體。

Linux虛擬檔案系統

這一周主要學了檔案系統的相關知識,通過學習基本上掌握了 linux 檔案系統的結構,檔案型別,以及讀取模式等等,也學會怎麼用命令簡單的建立乙個檔案系統。linux 的檔案系統主要有 ext2 ext3 ext4 在windows 下乙個分割槽會採用的一棵目錄樹來管理,而 linux 則只有一棵目錄樹...

linux虛擬檔案系統

虛擬檔案系統 virtual filesystem 也可以稱為虛擬檔案系統轉換 virtual filesystem switch vfs 是乙個核心軟體層,用來處理與unix標準檔案系統相關的所有系統呼叫。其健壯性表現在能為各種檔案系統提供乙個通用介面。cp floppy test tmp tes...

Linux虛擬檔案系統

檔案系統是一套實現了資料的儲存 分級組織 訪問和獲取等操作的抽象資料型別 檔案系統是一種用於向使用者提供底層資料訪問的機制。它將裝置中的空間劃分為特定大小的塊,一般每塊512位元組。資料儲存在這些塊中,大小被修正為占用整數個塊。由檔案系統軟體來負責將這些塊組織為檔案和目錄,並記錄哪些塊被分配給了哪個...