linu下的虛擬檔案系統究竟起到什麼作用

時間 2022-04-07 06:29:26

1樓:百元新

linux

允許眾多不同的檔案系統共存,並支援跨檔案系統的檔案操作,這是因為有虛擬檔案系統的存在。虛擬檔案系統,即vfs(virtual file

system)是 linux 核心中的乙個軟體抽象層。它通過一些資料結構及其方法向實際的檔案系統如 ext2,vfat

提供介面機制。本文在簡要介紹 vfs 的相關資料結構後,以檔案 i/o 為切入點深入 linux 核心源**,追蹤了 sys_open 和

sys_read 兩個系統呼叫的**結構,並在追蹤的過程中理清了跨檔案系統的檔案操作的基本原理和「一切皆是檔案」的口號得以實現的根本。

vfs是一套**框架(framework),它處於檔案系統的使用者與具體的檔案系統之間,將兩者隔離開來。這種引入乙個抽象層次的設計思想,即「上層不依賴

於具體實現,而依賴於介面;下層不依賴於具體實現,而依賴於介面」,就是著名的「依賴反轉」,它在 linux核心中隨處可見。

vfs框架的設計,需要滿足如下需求:

1、  為上層的使用者提供統一的檔案和目錄的操作介面,如  open, read, write

2、  為下層的具體的檔案系統,定義一系列統一的操作「介面」, 如 file_operations, inode_operations, dentry_operation,而具體的檔案系統必須實現這些介面,才能融入vfs框架中。

為此,vfs 需要:

1、 定義一套檔案系統的統一概念

2、 在這套概念基礎上,實現提供給上層使用者的操作介面,如 open, read, write 等

3、 提供一套機制,讓下層的具體的檔案系統可融入 vfs 框架中,如檔案系統的「註冊」和「安裝」

。vfs核心概念

1、 vfs 通過樹狀結構來管理檔案系統,樹狀結構的任何乙個節點都是「目錄節點」

2、 樹狀結構具有乙個「根節點」

3、 vfs 通過「超級塊」來了解乙個具體檔案系統的所有需要的資訊。具體檔案系統必須先向vfs註冊,註冊後,vfs就可以獲得該檔案系統的「超級塊」。

4、 具體檔案系統可被安裝到某個「目錄節點」上,安裝後,具體檔案系統才可以被使用

5、 使用者對檔案的操作,就是通過vfs 的介面,找到對應檔案的「目錄節點」,然後呼叫該「目錄節點」對應的操作介面。

2樓:匿名使用者

vfs的功能包括:紀錄可用的檔案系統的型別;將裝置同對應的檔案系統聯絡起來;處理一些面向檔案的通用操作;涉及到針對檔案系統的操作時,vfs把它們影射到與控制檔案、目錄以及inode相關的物理檔案系統。 當某個程序發布了乙個面向檔案的系統呼叫時,核心將呼叫vfs中相應的函式,這個函式處理一些與物理結構無關的操作,並且把它重定向為真實檔案系統中相應的函式呼叫,後者則用來處理那些與物理結構相關的操作。

vfs與實際檔案系統的封裝關係如下圖所示: vfs minix fs vfsinode快取 vfs目錄快取 ext fs ext2 fs msds fs 緩衝儲存 i/o裝置驅動 vfs與實際檔案系統的封裝關係 vfs的源**集中在/usr/src/linux/fs目錄下,關於它的資料結構的描述在檔案/usr/src/lunux/include/linux/fs.h中。

什麼是虛擬檔案系統,linux系統檔案系統

3樓:

1 引言

linux 中允許眾多不同的檔案系統共存,如 ext2, ext3, vfat 等。通過使用同一套檔案 i/o 系統 呼叫即可對 linux 中的任意檔案進行操作而無需考慮其所在的具體檔案系統格式;更進一步,對檔案的 操作可以跨檔案系統而執行。如圖 1 所示,我們可以使用 cp 命令從 vfat 檔案系統格式的硬碟拷貝資料到 ext3 檔案系統格式的硬碟;而這樣的操作涉及到兩個不同的檔案系統。

圖 1. 跨檔案系統的檔案操作

「一切皆是檔案」是 unix/linux 的基本哲學之一。不僅普通的檔案,目錄、字元裝置、塊裝置、 套接字等在 unix/linux 中都是以檔案被對待;它們雖然型別不同,但是對其提供的卻是同一套操作介面。

圖 2. 一切皆是檔案

而虛擬檔案系統正是實現上述兩點 linux 特性的關鍵所在。虛擬檔案系統(virtual file system, 簡稱 vfs), 是 linux 核心中的乙個軟體層,用於給使用者空間的程式提供檔案系統介面;同時,它也提供了核心中的乙個 抽象功能,允許不同的檔案系統共存。系統中所有的檔案系統不但依賴 vfs 共存,而且也依靠 vfs 協同工作。

為了能夠支援各種實際檔案系統,vfs 定義了所有檔案系統都支援的基本的、概念上的介面和資料 結構;同時實際檔案系統也提供 vfs 所期望的抽象介面和資料結構,將自身的諸如檔案、目錄等概念在形式 上與vfs的定義保持一致。換句話說,乙個實際的檔案系統想要被 linux 支援,就必須提供乙個符合vfs標準 的介面,才能與 vfs 協同工作。實際檔案系統在統一的介面和資料結構下隱藏了具體的實現細節,所以在vfs 層和核心的其他部分看來,所有檔案系統都是相同的。

圖3顯示了vfs在核心中與實際的檔案系統的協同關係。

圖3. vfs在核心中與其他的核心模組的協同關係

我們已經知道,正是由於在核心中引入了vfs,跨檔案系統的檔案操作才能實現,「一切皆是檔案」 的口號才能承諾。而為什麼引入了vfs,就能實現這兩個特性呢?在接下來,我們將以這樣的乙個思路來切入 文章的正題:

我們將先簡要介紹下用以描述vfs模型的一些資料結構,總結出這些資料結構相互間的關係;然後 選擇兩個具有代表性的檔案i/o操作sys_open()和sys_read()來詳細說明核心是如何借助vfs和具體的檔案系統打 交道以實現跨檔案系統的檔案操作和承諾「一切皆是檔案」的口號。

linux中重要資料夾介紹?各個資料夾各有什麼作用?

虛擬機器linu下如何開啟文字,虛擬機器linux下如何開啟文字文件

兩種情況第一種是在文字介面 第二種是在x介面 1 文字介面下使用 vi 123.txt 命令開啟。具體vi操作命令網上查詢。2 x介面下可直接雙擊使用vim或者其他edit開啟。txt是最基本的文字文件,當然可以 預設就可以 1.linux本身以命令列出現的方式,利用vim,cat more,tai...

求高手虛擬機器linu下怎麼安裝samba伺服器

進入存放壓縮包的目錄 解壓tar壓縮包 tar zxvf samba 4.0.3.tar.gz c usr local src 進入解壓的目錄 cd usr local src samab 4.0.3 執行.configure prefix 你想安裝的目錄 看系統提示是否有錯誤,沒有錯誤可以進行下一...

linu虛擬機器系統的vmwaretools如何安裝

當我入夢伊瑟拉 1 使用控制台登入系統,開啟命令列工具,解壓光碟映象中的tools安裝檔案vmwaretools tar.gz 2 進入解壓資料夾,執行.vmware install.pl,按預設設定安裝即可 3 安裝過程中未發現報錯資訊即表示安裝成功,切換至虛擬機器摘要面板可檢視到tools已安裝...

如何在linu下製作一張可啟動的虛擬軟盤映象

linux 下製作軟盤映象製作流程 1.先生成乙個空白軟盤映象 dd if dev zero of data.img bs 512 count 2880 2.使用losetup命令,把data.img作為loop device使用 sudo losetup dev loop0 data.img 3....

如何用xshell連線虛擬機器上的linux

如何使用xshell連線linux伺服器,怎麼使用xshell連線centos系統 如何使用xshell連線linux虛擬機器 如何用xshell連線虛擬機器上的linux 首先在linux虛擬機器裡面設定好ssh服務,一般虛擬機器可以設定成允許root使用者通過ssh登入,然後記下root密碼。接...