最近挂載了N多的檔案系統,大緻了不同檔案系統的相應特性及挂載方式,卻還是對Linux的檔案系統沒有從源碼方面去了解。不求甚解确實不好不好。
于是借鑒一些大牛的部落格及自己的了解,總結了部落格系列:
一、VFS是什麼:
VFS是Linux中的一個虛拟檔案檔案系統,也稱為虛拟檔案系統交換層(Virtual Filesystem Switch),是一種軟體機制。它為應用程式員提供一層抽象,屏蔽底層各種檔案系統的差異。如下圖所示:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SM0YTMwkTMyQTMtkTN0cTMxMTNxkTM4AzNxAjMtYDMwETM48CX4AzNxAjMvwlNwATMxgzLcd2bsJ2Lc12bj5ycn9Gbi52YucTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
引入檔案系統的目的是:為了屏蔽各種檔案系統的差異
(1)VFS對實際檔案系統進行抽象,采用統一的檔案系統向使用者提供相應的一組統一的标準的檔案操作接口(open,read,close,select,poll等);
(2)通過系統調用到VFS到實際檔案系統的操作。
二、檔案系統種類:
(1)基于磁盤的檔案系統;
(2)網絡檔案系統(NFS);
(3)僞檔案系統(sysfs、proc);
VFS 目錄樹結構:
Reference:
https://www.ibm.com/developerworks/cn/linux/l-vfs/
在連結中,文章選用的是Linux2.4.20,我選擇Linux3.4.2來分析源碼。
分析過程如上文連結所講:
這篇文章不拘泥于細節,是一篇極好的文章。我将詳細的講解代碼,并從代碼細節處理。