Cache
為什麼需要 inode 記憶體?
我很困惑,因為所有的dentries 都有指向inode 對象的指針。據我所知,您總是通過牙籤找到您的 inode。那麼,為什麼會有 inode 記憶體呢?
您在詢問作為 Linux 虛擬文件系統 (VFS) 的一部分實現的 inode 記憶體。記憶體(包括 inode 記憶體)不僅用於提供功能,例如訪問 inode 條目,正如您指出的那樣,還有其他機制。
記憶體可用於提高性能,在這種情況下,從 io 設備(如磁碟)查找 inode 數據非常慢,因此將先前訪問的 inode 數據儲存在記憶體中可以使文件系統訪問更快。
目錄條目和 inode 是不同的對象,因此它們得到單獨的記憶體:dentry 記憶體 in
dcache.c
,inode 記憶體inode_hashtable
ininode.c
。但是 inode 記憶體是 dcache 的奴隸:dcache 是 icache 的主人——只要存在 dcache 條目,inode 就會一直存在。
毫無疑問,您已經知道,這些記憶體的目的是提高性能並避免持續的磁碟訪問,特別是對於在文件打開時可以多次更新的 inode。