歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux虛擬文件系統與物理文件系統

Linux虛擬文件系統與物理文件系統

日期:2017/2/28 15:29:35   编辑:Linux教程

文件系統是文件的管理者,決定文件如何被操作,比如存放、打開、關閉、寫入、查找。文件可以是任何格式的數據,比如音頻、視頻、文檔、代碼、圖片、應用程序、快捷方式等等。因為文件各種各樣,所以文件系統的存在就很必要了。比如支持新建目錄,新建空白文件,顯示文件大小,顯示文件創建日期,這些都是文件系統提供的服務。

文件系統結合圖形操作界面,就造成了我們看到了雙擊就可以打開,單擊就可以選中這些直觀上的東西。除掉圖形界面,文件系統依然可見。在linux命令行中,ls一下,會顯示目錄下的文件,ls -l一下,會顯示文件的權限,文件的大小等等,這些都是文件系統提供支持的,如果沒有文件系統,那麼就沒法創建文件,沒法打開一個文件,我們保存在磁盤上的東西,就根本讀不出來,磁盤對我們來講就是一個謎。但是有了文件系統,我們就可以讀出裡面的數據。文件系統與其說是管理文件的,不如叫做磁盤驅動或者flash驅動、RAM驅動等等。沒有文件系統,磁盤就是廢品,沒法使用。

Linux不像windows,僅僅只支持NTFS、FAT32等幾個文件系統,linux支持的文件系統特別多,比如minix文件系統,iso9660(光盤用的),ext2,ext3,ext4(目前默認文件系統),resierfs,resier4,btrfs等等。不同的設備可以使用不同的文件系統,不同的文件系統側重點不一樣,在不同方面性能不一樣。但是對於用戶來講,區別這些文件系統是很困難的,於是linux內核中引入了一層虛擬文件系統。虛擬文件系統負責統一各種不同種類的文件系統對用戶提供的接口,使得可以使用同樣的系統調用來操作不同文件系統上的文件。

如果我們調用open打開一個文檔,那麼不管這個文檔存放於哪種設備上,也不管這種設備上運行的是哪種物理文件系統,都可以打開這個文件。事實上,我們沒法站在用戶層上區分是目前我們看到的文件是被哪種文件系統所支持的,因為linux內核的虛擬文件系統屏蔽了這些底層細節,使得不同的物理文件系統盡管管理文件的方式不同,但是用戶看起來一模一樣。如果想看具體究竟用得哪種文件系統,那麼打開/proc/filesystems文件就可以看到目前系統中加載了多少種文件系統。

Linux與windows除了支持的文件系統數量不一樣外,還有一個明顯的組織結構的區別,這使得很多人用Linux相當不習慣。Windows操作系統支持多個分區,而且這幾個分區是並列關系,比如可以將磁盤分為C、D、E、F等等很多個盤,而且每個盤可以進行不同的格式化(即安裝不同的文件系統)。有幾個文件系統,就有幾個根目錄,C:是一個,D:是一個,等等。但是linux不一樣,linux不管分成多少個區,都只有一個根目錄。

虛擬文件系統不存在於磁盤上,只存在於內存中。它本質上只是一種轉換機制,將用戶空間的請求映射到具體的物理文件系統上。物理文件系統則是實實在在的存在於磁盤中,並且占據一定的存儲空間。每個文件系統都有且僅有一個超級塊,該文件系統中的每個文件都有且僅有一個一個inode。超級塊和inode都填好了數據。當你格式化一個磁盤的時候,該文件系統的超級塊就已經填好了相關數據,並且占據了磁盤上的一定空間。當你新建一個文件的時候,該文件的inode中就已經記錄了該文件的一切信息,比如存在磁盤哪裡,建立時間,是否只讀等等。

虛擬文件系統也有自己的數據結構,典型的有四個,超級塊、inode、目錄項、file。但是和物理文件系統中的結構不太一樣。虛擬文件系統中這些結構沒有自己的數據,其數據來源於物理文件系統。系統啟動的時候,根據加載了哪些文件系統,內核會用實際的物理文件系統的超級塊填充內存中虛擬文件系統的超級塊;inode也是根據物理文件系統中的數據填充的;目錄項結構體是根據路徑名現場建立的;file是打開一個文件的時候現場分配並填充的。虛擬文件系統中結構體的一切數據都來源於物理文件系統,當系統關閉的時候,物理文件系統依然待在磁盤上,虛擬文件系統則會消失。

Copyright © Linux教程網 All Rights Reserved