Cache

為什麼需要 inode 記憶體?

  • January 2, 2017

我很困惑,因為所有的dentries 都有指向inode 對象的指針。據我所知,您總是通過牙籤找到您的 inode。那麼,為什麼會有 inode 記憶體呢?

您在詢問作為 Linux 虛擬文件系統 (VFS) 的一部分實現的 inode 記憶體。記憶體(包括 inode 記憶體)不僅用於提供功能,例如訪問 inode 條目,正如您指出的那樣,還有其他機制。

記憶體可用於提高性能,在這種情況下,從 io 設備(如磁碟)查找 inode 數據非常慢,因此將先前訪問的 inode 數據儲存在記憶體中可以使文件系統訪問更快。

目錄條目和 inode 是不同的對象,因此它們得到單獨的記憶體:dentry 記憶體 in dcache.c,inode 記憶體inode_hashtableininode.c。但是 inode 記憶體是 dcache 的奴隸:

dcache 是 icache 的主人——只要存在 dcache 條目,inode 就會一直存在。

毫無疑問,您已經知道,這些記憶體的目的是提高性能並避免持續的磁碟訪問,特別是對於在文件打開時可以多次更新的 inode。

引用自:https://unix.stackexchange.com/questions/334252