나는 이 페이지를 읽고 있었는데,http://www.tldp.org/LDP/tlk/fs/filesystem.html, 그리고 여기에 언급된 다양한 캐시를 모두 정리하는 데 어려움을 겪고 있습니다. 특히 각각을 사용할 때의 다양한 시나리오를 이해하지 못합니다.
내 이해로는 다음과 같습니다.
버퍼 캐시: VFS에서 사용됩니다. 데이터 버퍼가 캐시에 위치함을 나타냅니다. 버퍼 캐시에 데이터 버퍼만 있는지는 모르겠습니다. 또한 VFS에서만 사용되는지 확실하지 않습니다.
VFS inode 캐시: 파일에 액세스한 후 더 빠른 조회를 위해 해당 inode가 캐시에 배치됩니다. inode 정보가 있다는 것이 시스템이 해당 위치에 도달하기 위해 더 이상 파일 시스템 트리를 따라 내려갈 필요가 없다는 것을 의미하는지 확실하지 않습니다. 예를 들어, 파일이 문서 아래에 있는 경우 더 이상 다음에서 문서에 액세스할 필요가 없습니다. 뿌리).
EXT2(또는 inode를 사용하는 다른 파일 시스템) inode 캐시: 존재합니까? 언급된 적은 없지만 존재한다고 가정합니다.
VFS 디렉토리 캐시: "디렉터리 이름과 inode"의 매핑을 저장합니다. 링크의 다음 인용문에 명시된 대로 VFS 캐시만 사용하여 VFS inode를 얻을 수 있습니다.
디렉토리 캐시에 항목이 없으면 실제 파일 시스템은 기본 파일 시스템 또는 inode 캐시에서 VFS inode를 얻습니다.
그렇다면 디렉토리 캐싱이 여전히 필요한 이유는 무엇입니까? 이것은 Dentry 캐싱과 관련이 있습니까?
Dentry Caching: 위의 기사에서는 왜 이에 대해 언급하지 않습니까? 상관없나요?
답변1
그렇다면 디렉토리 캐싱이 여전히 필요한 이유는 무엇입니까?
이것은 캐싱의 또 다른 수준입니다. 모든 경로 구성 요소를 다른 캐시에서 찾을 수 있더라도 이를 모두 살펴보는 데는 여전히 시간이 걸립니다. 따라서 디렉터리 캐싱은 전체 경로를 캐시하는 방법을 제공하므로 매번 루트 디렉터리의 경로 요소별로 콘텐츠 경로 요소를 조회할 필요가 없습니다.