歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Inode構建的Ext3文件樹

Inode構建的Ext3文件樹

日期:2017/2/28 14:55:03   编辑:Linux教程

如何入手才能更好的理解一個文件系統呢?個人認為首先應該從文件系統在磁盤上的元數據分布入手,其次再看文件系統的軟件實現,例如內存中的結構以及元數據操作方式等等。這裡我想通過ext3在磁盤上的元數據信息來認識一下ext3文件樹。

考慮一下,如果想要實現一個文件系統,我們需要在磁盤上存儲哪些基本要素?通過何種方式組織起文件與目錄之間的關系?如何管理實際的物理資源塊?在ext3文件系統中,inode這個數據結構承擔了重要角色,組織起了整個ext3文件系統框架。另外,在ext3文件系統中采用物理資源分組管理的辦法,並采用bitmap位圖信息描述物理塊被使用情況。

文件系統在磁盤上的數據分布如下圖所示:

Ext3采用塊組的方式組織所有的物理磁盤空間,superblock和block set description信息可以采用稀疏存儲的方式在塊組中保存。每個塊組中有兩個最重要的成員:

1,inode塊及其bitmap。Inode Bitmap用於描述這個塊組中inode資源塊的使用情況,blk for inodes是用來存儲inode的資源塊。需要分配一個inode時,文件系統需要將對應的bitmap置位。

2,blks塊及其bitmap。在每個塊組中絕大部分的空間被數據資源塊占有,並且采用block bitmap對其使用情況進行描述。需要分配一個資源塊時,文件系統需要將對應的bitmap置位。

Inode是ext3文件系統的紐帶,其采用何種方式將文件系統表述出來的呢? 下圖說明了采用inode建立的文件系統樹。

在ext3文件系統中,必須有一個root inode,該inode在磁盤上的位置是固定的,在文件系統啟動的時候,root inode是文件系統的入口。Root inode描述的是一個目錄項,即其指向的數據塊中存儲著目錄項。每個目錄項會指向下一個inode,如果目錄項描述的是一個普通文件,那麼下一個inode會分配物理塊,並且將文件數據存儲到物理塊中;如果目錄項描述的是下一級目錄,那麼,下一個inode分配的block中會存儲下一級目錄的目錄項。通過inode和目錄項,ext3構建起了一顆龐大的文件樹。

一旦腦海中擁有以inode為基礎的文件樹之後,閱讀分析ext3的軟件實現代碼就相對容易了。另外,如果我們想要做ext3的文件系統數據恢復,那麼我們也需要理解這樣一顆文件樹,以及數據結構的詳細定義。

Copyright © Linux教程網 All Rights Reserved