一.基本概念:
1.block:文件系統中存儲數據的最小單元,ext3文件系統中,創建時默認4k,分為存儲文件數據的data block和存儲目錄數據的directory block
2.inode:又稱“索引節點”,每一個inode對應一個文件或目錄,記錄了文件的大小、所占用的block以及目錄的directory block信息。
3.Inode Bitmap:翻譯成中文就是“inode位圖”,用二進制的方式記錄了inode的使用情況。
4.Block Bitmap:翻譯成中文就是“塊位圖”,同Inode Bitmap,用二進制方式記錄了塊的使用情況。
5.super block:超級塊包含了該硬盤或分區上的文件系統的整體信息,如文件系統的大小等。
二.工作原理
這里使用幾個常用的操作來解釋這幾個文件系統組件的工作機制。
1. 讀取文件
以讀取/tmp/test文件為例,流程如下圖:
共分為以下幾步:
(1)啟動系統時,自動加載“/”目錄的inode。
(2)根據該inode,找到“/”目錄的directory block,從而定位到“/”目錄文件。
(3)根據“/”所在的block,定位到“/”目錄文件,該文件中記錄了"/tmp"目錄文件的名稱和inode。
(4)根據(3)中找到的inode,找到"/tmp"目錄文件,其中記錄了“test”的文件名和inode。
(5)同理,根據(4)中找到的inode,定位到“test”的data block,從而可以訪問test文件。
注:所謂一切皆文件,連目錄也是文件,該文件記錄了里面的一級子目錄和文件的名稱和inode,所謂cd進這個目錄,其實就是執行該目錄文件,ls則讀取該目錄文件,創建一個文件或子目錄,則意味著向該文件中寫入有關該文件或目錄所對應的條目。
2.創建文件,刪除文件
(1) 創建文件
創建文件,其實就是根據inode位圖和block位圖,確定哪寫inode和block是空閑的,然后分別向這些block中寫入數據,同時,將整個文件(可能是多個block) 對應一個空閑的inode。 如下圖(這里“1”表示空閑,“0”表示占用,可能不準確~),這樣,訪問inode"E"定位到A塊、C塊、E塊,實現了訪問“test文件”。
(2) 刪除文件
刪除文件,其實就是把block位圖和inode位圖的相關位置成空,相當于不被占用,注意:數據還在,下次創建文件時,覆蓋原已清空block位圖和inode位圖的文件的數據。
原創文章,作者:Abner,如若轉載,請注明出處:http://www.www58058.com/12117
知道寫標簽的朋友都很細心,細節決定成敗