文件系統(File System)
什麽是文件系統,引用百科解釋:
操作系統中負責管理和存儲文件信息的軟件機構稱為文件管理系統,簡稱文件系統。
文件系統是操作系統核心的組成部分,沒有它我們無法完成對文件的增、刪、改、查等基本操作
概念
在了解文件系統之前我們需要了解一些基本概念
- inode 索引節點 (index node)
我們知道文件都有文件名與數據,這在 Linux 上被分成兩個部分:用戶數據 (user data) 與元數據 (metadata)。用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方;而元數據則是文件的附加屬性,如文件大小、創建時間、所有者等信息。在 Linux 中,元數據中的 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)