當前位置:首頁 » 存儲配置 » inode表的存儲位置

inode表的存儲位置

發布時間: 2023-07-10 03:11:06

linux文件管理中VFS使用的inode是什麼

在 Linux 系統中,VFS(Virtual File System)是一個抽象層,它使得檔缺 Linux 內核能夠與多種文件系拿碧統進行交互行敏辯。VFS 使用 inode(Index Node)來管理文件系統中的文件和目錄。
inode 是一個數據結構,它存儲著文件或目錄的元數據信息,如文件大小、創建時間、許可權等。每個文件或目錄在文件系統中都對應一個 inode,而 inode 又與一個編號相關聯,這個編號就是 inode 的編號。
當文件或目錄被創建時,VFS 會為它分配一個 inode 編號,並且創建一個 inode 數據結構來存儲元數據信息。當文件或目錄被訪問時,VFS 會根據 inode 編號來查找對應的 inode 數據結構,從而獲取文件或目錄的信息。
因此,inode 是 VFS 在 Linux 系統中管理文件和目錄的一種重要方式。它能夠幫助 VFS 快速查找文件或目錄的信息,從而提高文件系統的性能。

Ⅱ 文件系統

文件系統的目的就是通過目錄查找文件,尋找空閑位置存放文件。

組成:超級塊、目錄結構、描述文件屬性的結構,文件系統相關操作

sysfs:超級塊,目錄sys_dirent,,屬性kset、kobject

vfs:超級塊,目錄dentry,屬性inode

bdevfs:超級塊,目錄dentry,屬性bdevfs_inode(嵌在block_device中)

超級塊、空閑表、目錄文件(文件控制塊FCB)、普通文件、與文件系統有關的操作(查找、讀寫等)

超級塊——文件系統中第一個塊被稱為超級塊。描述文件系統塊大小、空閑表相關的屬性(比如地址、每一項大小等)、根目錄地址

空閑表——磁碟上空閑磁碟塊

目錄文件——存放文件名、文件屬性、文件地址等信息

把目錄文件拆分為兩部分:與文件查找有關的部分(文件名、文件類型)、文件屬性部分(inode、FAT)

順序存儲——把文件存放在連續的扇區上

鏈式存儲——把文件存放在不連續的文件塊上,每個文件快的結束端有存放有下一個文件塊的地址

索引存儲——把存放文件的所有塊號集中放在一個索引結構上

優劣:順序存儲,讀取速度更快,但容易浪費大量磁碟存儲空間;鏈式存儲,可以充分利用內存空間,但是不能隨機訪問文件內的任意部分,訪問速度慢;索引存儲,可以隨機訪問文件的任意部分,可以看作鏈式存儲的優化方案。

linux磁碟文件系統採用ext2

組織方式:超級塊、空閑塊點陣圖、只有目錄名的目錄文件、inode點陣圖、inode(含文件屬性、文件磁碟地址)、索引存儲方式、ext_fIle_operations表、ext_file_inode_operations表

文件存儲方式:索引存儲。

硬鏈接目錄共享一個inode。由於硬鏈接是直接將文件名與索引節點號(即inode號)鏈接,因此硬鏈接存在以下幾個特點: 1、文件有相同的inode號及data block,這使得修改其中一個硬鏈接文件屬性或文件數據時,其他硬鏈接文件都會發生相應修改;2、只能對已存在的文件進行創建;3、不能跨文件系統(即分區)進行創建;4、不能對目錄文件進行創建;5、刪除其中一個硬鏈接文件時,不會對其他硬鏈接文件產生影響。

軟鏈接則是一個文件,文件內存儲有目標文件的路徑。創建軟鏈接時,目標文件inode中的鏈接計數 i_nlink 不會增加。由於軟鏈接有著自己的索引節點號(即inode號)以及用戶數據塊(data block),因此沒有硬鏈接的諸多限制,它的特性如下:1、軟鏈接有自己的文件屬性、inode號和data block,但是編輯文件其實就是編輯源文件;2、可以對不存在的文件或目錄進行創建;3、可以跨文件系統(即分區)進行創建,使用ln命令跨文件系統創建時,源文件必須是絕對路徑,否則為死鏈接;4、可以對文件或目錄文件進行創建;5、刪除軟鏈接並不影響源文件,但源文件被刪除,則相關軟鏈接文件變為死鏈接(dangling link),若源文件(原地址原文件名)重新被創建,則死鏈接恢復為正常軟鏈接。

目的:封裝好不同文件系統,向上提供統一的介面

組成:超級塊superblock、目錄項dentry、文件屬性inode;文件系統類型file_system_type、描述文件系統安裝在哪個父文件系統下vfsmount

如圖在vfs中安裝ext2和fat文件系統:即置i_ops、i_fops、d_ops為各個文件系統獨有的操作,超級塊中的s_fs_info指向具體文件系統的超級塊;vfsmount中描述有文件系統的安裝點。

先把安裝點記錄在vfsmount中。根據file_system_type中的讀超級塊方法,讀取super_block,再根據super_block中的構造inode方法,構造一inode並初始化;然後根據inode->i_ops構造dentry

Ⅲ Linux文件存儲和刪除的過程

我們在Linux上創建或刪除一個文件或文件夾,都習以為常,但這背後的實現原理是什麼呢?

imap:inode map映射表

bmap:block map映射表

假如要存儲a.txt到/tmp目錄下。

當a.txt文件要存儲到/tmp下時:

1) 元數據區分配node id :從元數據區的inode table中找一個空閑的inode號分配給a.txt,如2222。再將imap表中2222這個inode號標記為已使用。

2) 數據區添加記錄 :在/tmp的data block中添加一條a.txt文件的記錄。該記錄中包括一個指向inode號的指針,例如"0x2222"。

3) 元數據區分配data block(每段空間)並寫數據到數據區data block :從元數據區bmap中找出空閑的data block,並開始將a.txt中的數據寫入到data block中。每寫一段空間( ext4每次分配一段空間 )就從bmap中找一次空閑的data block,直到存完所有數據。

4) 元數據區設置inode id的data block point :元數據區在inode table中設置關於2222這條記錄的data block point指針,通過該指針可以找到a.txt使用了哪些data block。

當要刪除a.txt文件時:

1) 元數據區取消inode id的data block  point :在inode table中刪除指向a.txt的data block指針。這里只要一刪除,外界就找不到a.txt的數據了。但是這個文件還存在,只是它是被"損壞"的文件,因為沒有任何指針指向數據塊。

2) 元數據區釋放node id :在imap中將2222的inode號標記為未使用。這個inode號就被釋放,可以被後續的文件重用。

3) 數據區刪除記錄 :刪除父目錄/tmp的data block中關於a.txt的記錄。這里只要一刪除,外界就看不到也找不到這個文件了。

4) 元數據區釋放data block :在bmap中將a.txt佔用的block標記為未使用。這里被標記為未使用後,這些data block就可以被後續文件覆蓋重用。

考慮一種情況,當一個文件被刪除時,但此時還有進程在使用這個文件,這時是怎樣的情況呢?外界是看不到也找不到這個文件的,所以刪除的過程已經進行到了第(3)步。但進程還在使用這個文件的數據,也能找到這個文件的數據,是因為進程在載入這個文件的時候就已經獲取到了該文件佔用哪些data block,雖然刪除了文件,但bmap中這些data block還沒有標記為未使用。

詳細分析和df的統計結果為什麼不一樣

熱點內容
導航演算法招聘 發布:2025-03-17 18:08:57 瀏覽:971
4glte配置名怎麼 發布:2025-03-17 18:04:41 瀏覽:900
和平精英如何查詢游戲賬號密碼 發布:2025-03-17 18:03:07 瀏覽:372
數控pmc編程 發布:2025-03-17 18:02:21 瀏覽:151
irst固態硬碟做緩存檔 發布:2025-03-17 18:02:20 瀏覽:237
艾諾存儲卡 發布:2025-03-17 18:01:44 瀏覽:889
麗姬傳在哪裡可以緩存 發布:2025-03-17 17:48:06 瀏覽:285
php培訓周期 發布:2025-03-17 17:47:53 瀏覽:674
python中文發音 發布:2025-03-17 17:32:00 瀏覽:9
c語言程序編譯運行慢 發布:2025-03-17 17:29:44 瀏覽:308