檔案系統(File System)

2022-08-21 07:42:09 字數 1689 閱讀 1027

什麼是檔案系統,引用百科解釋:

作業系統中負責管理和儲存檔案資訊的軟體機構稱為檔案管理系統,簡稱檔案系統。

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

概念

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

我們知道檔案都有檔名與資料,這在 linux 上被分成兩個部分:使用者資料 (user data) 與元資料 (metadata)。使用者資料,即檔案資料塊 (data block)

資料塊是記錄檔案真實內容的地方;而元資料則是檔案的附加屬性,如檔案大小、建立時間、所有者等資訊

在 linux 中,元資料中的 inode 號

才是檔案的唯一標識而非檔名,檔名僅是為了方便人們的記憶和使用,系統或程式通過 inode 號尋找正確的檔案資料塊

資料塊即真正儲存使用者資料的地方

每個資料塊大小固定相等(1024或者4096)位元組

資料塊中主要儲存的資料是 檔案、目錄檔案

目錄結構實質也是乙個資料塊,該資料塊類似於乙個**,記錄當前目錄下對應的檔名,和檔名對應的inode

在每個分割槽的資料的儲存區是由乙個又乙個的資料塊(data block)組成,在使用者需要儲存新的資料時需要遍歷整個分割槽的資料塊,這顯然是非常耗時的,所以每個分割槽都存在乙個快位圖,每乙個資料塊在塊點陣圖中都存在乙個識別符號(1個bit),用於表示該塊當前儲存狀態,在存入新資料時只需要遍歷塊點陣圖就能快速找到空閒的資料塊

inode在磁碟格式化完成後就已經完成分配,每個inode都有固定且唯一的id

inode_map中每一位對應乙個inode節點,標識其是否可用,每一位占用乙個位元組

inode_map大小通常與乙個資料塊的大小一樣

檔案系統將乙個分割槽邏輯分成多個塊組,每個塊組都有其獨立的 data block區、block bitmap、inode bitmap、inode區

具體分為多少組取決於分割槽大小,以及每個資料塊大小

檔案可以跨組儲存

每個分割槽都有乙個資料塊來儲存當前分割槽全域性資訊,每個塊組中備份有乙個

超級塊中描述了每個分割槽包含多少塊組、每個塊組包含多少塊、每個塊的大小、空閒磁碟塊、引用磁碟塊、空閒inode、引用inode

儲存著當前分割槽有多少個塊組,每個塊組的起始位置

任何分割槽的第乙個塊是boot block , 不能被使用

如果在當前分割槽裝有作業系統,boot load 需要放在 boot block

開機是由mbr呼叫

那檔案系統又是如何查詢檔案的呢?

例如想要找到 /log/var/log/message 檔案,如下圖

找到根目錄inode(自引用) -- 根目錄資料塊 -- var目錄inode -- var目錄資料塊 -- log目錄inode -- log目錄資料塊 -- message檔案inode -- message檔案

虛擬檔案系統(vfs)

PHP之檔案系統處理 Filesystem

filesystem 函式 basename 返回路徑中的檔名部分 chgrp 改變檔案所屬的組 chmod 改變檔案模式 chown 改變檔案的所有者 clearstatcache 清除檔案狀態快取 copy 拷貝檔案 delete 參見 unlink 或 unset dirname 返回路徑中的...

檔案系統 why檔案系統

為什麼需要檔案系統,可否由作業系統直接寫裸裝置?裸裝置是一種沒有經過格式化的磁碟或分割槽,即讓作業系統直接管理操作磁碟設定,進行資料讀寫等。通過檔案系統的方式組織磁碟儲存和資料管理有很多好處,比如 1.資料讀取 管理等操作變得簡單便捷 檔案系統給使用者提供了乙個簡單的操作介面,只需簡單的操作就能實現...

檔案系統 檔案系統的架構

vfs是具體檔案系統的抽象,依靠超級塊 inode dentry以及檔案這些結構來發揮作用,檔案系統的架構就體現在這些結構的使用方式中。1 超級塊作用分析 1 2 所有的dentry都指向乙個dentry hashtable dentry hashtable是乙個樹組,每乙個樹組成員都是hash鍊錶...