1. 程式人生 > >文件系統(File System)

文件系統(File System)

當前目錄 表格 只需要 基本操作 nbsp 文件管理系統 pan 存儲文件 內容

什麽是文件系統,引用百科解釋:

  操作系統中負責管理和存儲文件信息的軟件機構稱為文件管理系統,簡稱文件系統。

文件系統是操作系統核心的組成部分,沒有它我們無法完成對文件的增、刪、改、查等基本操作

概念

  在了解文件系統之前我們需要了解一些基本概念

  • inode 索引節點 (index node)

  我們知道文件都有文件名與數據,這在 Linux 上被分成兩個部分:用戶數據 (user data) 與元數據 (metadata)。用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方;而元數據則是文件的附加屬性,如文件大小、創建時間、所有者等信息。在 Linux 中,元數據中的 inode 號(

inode 是文件元數據的一部分但其並不包含文件名,inode 號即索引節點號,inode中保存著文件創建時間(ctime)、修改時間(mtime) 、文件大小、屬主、歸屬的用戶組、讀寫權限、數據所在block號等信息)才是文件的唯一標識而非文件名。文件名僅是為了方便人們的記憶和使用,系統或程序通過 inode 號尋找正確的文件數據塊。

  • block data(數據塊)

    數據塊即真正存儲用戶數據的地方,每個數據塊大小固定相等(1024或者4096)字節

  • dir_entry(目錄結構 / 目錄條目)  

    目錄結構實質也是一個數據塊,該數據塊類似於一個表格,記錄當前目錄下對應的文件名,和文件名對應的inode

  • bitmap(塊位圖)

  在每個分區的數據的儲存區是由一個又一個的數據塊(data block)組成,在用戶需要存儲新的數據時需要遍歷整個分區的數據塊,這顯然是非常耗時的,所以每個分區都存在一個快位圖,每一個數據塊在塊位圖中都存在一個標識符(1個bit),用於表示該塊當前儲存狀態,在存入新數據時只需要遍歷塊位圖就能快速找到空閑的數據塊

  • inode_map(inode位圖)

    inode在磁盤格式化完成後就已經完成分配,每個inode都有固定且唯一的ID,為了知道哪個inode是可用的,所以我們又需要inode_map來標識每個inode狀態

那文件系統又是如何查找文件的呢?

例如想要找到 /log/var/log/message 文件,如下圖

技術分享圖片

找到根目錄inode(自引用) -- 根目錄數據塊 -- var目錄inode -- var目錄數據塊 -- log目錄inode -- log目錄數據塊 -- message文件inode -- message文件

文件系統(File System)