Linux 之所以能支持除了Ext2文件系統之外的各種文件系統,是因為Linux提供了一種統一的框架,就是所謂的虛擬文件系統轉換(Virtual FilesystemSwitch),簡稱虛擬文件系統(VFS)。這樣, 用戶程序可以通過同一個文件系統界面,也就是同一組系統調用,能夠對各種不同的文件系統以及文件進行操作。
1. Linux中支持幾十種文件系統,它是怎麼管理的呢,它都管理什麼呢?
首先,VFS 只對掛載到文件系統種的文件系統進行管理,即它時按需管理的。
其次,因為它繼承了Unix的設計思想,所以它也是對文件,目錄項,索引節點和超級塊進行管理。
2.VFS中四個主要對象
(1)超級塊對象:描述已安裝文件系統。
每個文件系統 都對應一個超級對象。文件系統的控制信息存儲在超級塊中。
(2)索引節點對象:描述一個文件。
每個文件 都有一個索引節點對象。每個索引節點對象都有一索引節點號---->正是用這個號來唯一的標識某個文件系統中的指定文件。
(3)目錄項對象:描述一個目錄項,是路徑的組成部分。
VFS把每個目錄看作一個由若干子目錄和文件組成的常規文件。
例如:我們在查找路徑名:/tmp/test時,內核為根目錄“/”創建第一個目錄項對象,為根目錄下tmp項創建第二級目錄項對象,為/tmp目錄下的test項創建第三級目錄項對象。
(4)文件對象:描述由進程打開的文件。
說明:
1.因為 VFS 將目錄作為一個文件來處理,所以不存在目錄對象。雖然目錄項不同於目錄,但目錄卻和文件相同。
2.Linux中將文件的相關信息和文件本身區分開了。在Linux 中文件的相關信息,被存儲在一個單獨的數據結構中,該結構被稱為索引節點。文件(目錄)信息按照索引節點形式存儲在單獨的塊中;控制信息被集中存儲在磁盤的超級塊中。