Linux檔案系統

2021-06-11 17:27:20 字數 1477 閱讀 2249

之前對磁碟分割槽已經有了詳細的描述,這篇主要介紹檔案系統.linux的檔案系統是出了名的.下面就

大概介紹下.

可以把檔案系統大概分成 superblock inodeblock datablock 三部分

superblock

superblock記錄檔案系統的基本資訊比如每塊資料塊的大小,空閒磁碟的塊數資訊.

inodblock

inodblock上面主要是 inode 表,每個項都是乙個 inode 結構,每個 inode 記錄的是檔案的基本

資訊和屬性.每個inode 結構都對應乙個檔案或者目錄,目錄也是特殊的檔案.只是目錄裡面記

錄的是 inode 節點和檔名對應關係.另外 inode 結構還記錄了每個檔案對應資料塊在磁碟上的

位置,從而索引到所有的檔案資料.

datablock

datablock 就是檔案實際內容的存放地方.

舉個例子,比如 ls > dir.txt,linux 做了以下工作

在 inode 表裡面找乙個空閒的節點,並且申請

在 datablock 裡面找到足夠的空閒塊來裝載檔案,從而os從核心緩衝區寫到空閒塊裡

在 inode 結構裡面填充 datablock 所在位置以及其他資訊

在目錄項裡面新增 inode 和檔名對應關係

目錄也是一種特殊的檔案,只是它記錄的是檔名和 inode 編號的對應關係,凡是對檔案的操作

都先根據 inode 節點編號,在 inodeblock 裡面找到對應的 inode 結構,再讀取到相應的檔案資料.

檔案在目錄,也就是在目錄檔案裡面有檔案對應的 inode 編號.

每個目錄在 mkdir 的時候肯定會有對應兩個 inode 編號,乙個是 「.」,另乙個是 「..」,分別代表當前

目錄和父目錄,根據對應的 inode 編號來指定(根檔案兩者是一樣的!).現在假設 a 目錄下有乙個

b目錄[firefoxbug@firefoxbug a]$ ls -ia

1312717 . 1312861 .. 1312857 a

[firefoxbug@firefoxbug a]$ cd a/

[firefoxbug@firefoxbug a]$ ls -ia

1312857 . 1312717 .. 1313177 b

a目錄"."inode 編號就是 b 目錄 「..」的節點編號,這也是連線目錄和目錄之間的關係.

看上面的實驗,總結

硬鏈結建立之後,是和原檔案共享乙個 inode 節點,系統會對原檔案的硬鏈結增加乙個.

有點類似建立了乙個映象一樣,此時 inode 節點對應了"兩個"檔案,刪除乙個檔案之後,

對於原來的檔案並不影響,因為系統檢測到 inode 節點依然是存在的,只是計數變成了1.

對於軟鏈結建立之後,則是新建乙個 inode 節點,對於目錄項裡多了一條指示"到那個檔案

怎麼走".一旦原檔案刪除了,這時候就找不到了原檔案了.這和 windows 的快捷方式是一樣的.

linux 檔案系統 Linux 檔案系統結構介紹

ubuntu 像所有類unix系統一樣 在分層樹中組織檔案,其中的關係就像父母和孩子一樣。目錄可以包含其他目錄以及常規檔案,它們是樹的 葉子 樹的任何元素都可以通過路徑名引用 絕對路徑以字元 標識根目錄,其中包含所有其他目錄和檔案 開頭,然後列出必須遍歷以到達該元素的每個子目錄,每個子目錄用 符號分...

Linux檔案系統

linux目錄結構 根目錄 bin 可執行檔案目錄 boot 核心引導檔案 vmlinuz,initrd.img等 dev 裝置檔案儲存目錄,應用程式對這些檔案讀寫和控制可訪問實際裝置 etc 系統配置和一些伺服器配置檔案的位置,如帳號及密碼配置檔案。home 普通使用者目錄 lib 庫檔案目錄 l...

Linux 檔案系統

一 作業系統通過檔案系統進行管理檔案及資料,磁碟或者分割槽需要建立檔案系統之後才能夠為作業系統使用,建立檔案系統的過程又稱之為格式化。1,沒有檔案系統的裝置又稱之為裸 raw 裝置 2,常見的檔案系統有fat32 ntfs ext2 ext3 ext4 xfs hfs等 3,檔案系統之間的區別 是否...