모든 dentries에는 inode 객체에 대한 포인터가 있기 때문에 혼란스럽습니다. 내가 아는 한, 항상 디렉토리 항목을 통해 inode를 찾습니다. 그렇다면 왜 inode 캐시가 있습니까?
답변1
디렉토리 항목과 inode는 서로 다른 개체이므로 별도의 캐시를 갖습니다. dentry 캐시가 위치합니다.dcache.c
, inode는 다음에 캐시됩니다.inode_hashtable
존재하다inode.c
. 그러나 inode 캐시는 dcache에 종속됩니다.
dcache는 icache의 마스터입니다. inode는 dcache 항목이 존재하는 한 항상 존재합니다.
이미 알고 있듯이 이러한 캐시의 목적은 성능을 향상시키고 지속적인 디스크 액세스를 방지하는 것입니다. 특히 파일이 열려 있는 동안 여러 번 업데이트될 수 있는 inode의 경우 더욱 그렇습니다.
답변2
Linux 가상 파일 시스템(VFS)의 일부로 구현된 inode 캐시에 대해 문의하셨습니다. 캐시(inode 캐시 포함)는 단순히 기능(예: inode 항목 액세스)을 제공하는 것이 아니라 이를 달성하기 위한 다른 메커니즘이 있다는 점을 지적한 것입니다.
캐싱을 사용하면 디스크와 같은 IO 장치에서 inode 데이터를 검색하는 속도가 매우 느려지므로 이전에 액세스한 inode 데이터를 메모리에 저장하면 파일 시스템 액세스가 더 빨라질 수 있습니다.