vfs是具體檔案系統的抽象,依靠超級塊、inode、dentry以及檔案這些結構來發揮作用,檔案系統的架構就體現在這些結構的使用方式中。
1、超級塊作用分析
1)2)所有的dentry都指向乙個dentry_hashtable
dentry_hashtable是乙個樹組,每乙個樹組成員都是hash鍊錶資料結構。
這裡是指記憶體中的dentry;---如果某個檔案已經被開啟過,記憶體中就有該檔案的dentry結構,且該dentry鏈結到dentry_hashtable樹組的某個hash煉表頭。 後續再訪問該檔案,直接從hash鍊錶裡面找到,避免再次讀取硬碟。這是dentry的 cache 概念。
3)/home/mnt目錄指向乙個掛載檔案的系統
dentry的d_mounted成員判斷目錄不是乙個普通的目錄,而是乙個檔案系統。不為0:該dentry是個掛載點,有檔案系統掛載,需要特殊處理。
如圖所示,掛載過來的檔案系統本身是乙個dentry樹,有自己的根目錄,兩個dentry樹之間沒有鏈結關係
如何找到掛載的檔案系統在**?
新的資料結構vfsmount, 當檔案系統被掛載的時候,它的vfsmount結構就被鏈結到核心的乙個全域性鍊錶------mount_hashtable資料鏈表。
mount_hashtable是乙個樹組,每個成員是乙個hash鍊錶。 上文的例子有兩個vfsmount,cj檔案所在的檔案系統vfsmount被鏈結到mount_hashtable。當發現mnt是乙個特殊的目錄時,從mount_hashtable樹組找到hash煉表頭,再遍歷整個hash鍊錶,就能找到cj檔案所在檔案系統的vfsmount,然後mnt目錄的dentry被替換,
2、dentry作用分析
3、inode作用分析
核心提供hash鍊錶樹組inode_hashtable,所有的inode結構都需要鏈結到樹組裡面的某個hash鍊錶。【與hash鍊錶樹組dentry_hashtable類似】
4、檔案作用分析
檔案系統 why檔案系統
為什麼需要檔案系統,可否由作業系統直接寫裸裝置?裸裝置是一種沒有經過格式化的磁碟或分割槽,即讓作業系統直接管理操作磁碟設定,進行資料讀寫等。通過檔案系統的方式組織磁碟儲存和資料管理有很多好處,比如 1.資料讀取 管理等操作變得簡單便捷 檔案系統給使用者提供了乙個簡單的操作介面,只需簡單的操作就能實現...
當前Linux檔案系統架構下的檔案系統新需求
這裡討論一下在不改變當前linux檔案系統架構下,對linux檔案系統的新需求。第一需求,緩解檔案系統修復極度緩慢的問題。通過標記部分元資料為unused或者clean有助於減少修復檔案系統時需要檢查的資料總量。fsck的多種實現已經高度優化,但是仍然可能有更多的提公升空間。簡單來說,對檔案系統修復...
檔案系統 編寫檔案系統
8.5 編寫乙個檔案系統 如果寫乙個實際檔案系統,但是涉及的東西太多,不容易簡明扼要的理解檔案系統的實現。linux核心中提供的romfs檔案系統是個非常理想的例子,既有實際應用架構,也清晰明了,故以romfs為例項分析檔案系統的實現。一 linux檔案系統的實現要素 編寫新檔案系統涉及一些基本物件...