文件系统分析基础与BPF观测能力实践

发布时间:2026/7/15 10:26:53
文件系统分析基础与BPF观测能力实践 文件系统I/O栈应用程序的I/O请求在到达磁盘设备前会经过多个层次。逻辑I/O指对文件系统的请求,这些请求可能直接由缓存满足而无需下到物理层;若必须从存储设备读取,则成为物理I/O。虚拟文件系统(VFS)是通用内核接口,支持多种文件系统通过相同调用操作,并提供read、write、open、close等操作。VFS之下是具体文件系统、卷管理器(可选)以及块I/O子系统(包含队列、合并能力等)。理解这一栈结构是进行性能分析的基础,因为不同层次引入的延迟和缓存行为会显著影响应用感知。文件系统缓存机制Linux使用多级缓存加速存储I/O,主要包括:页缓存(Page cache):包含虚拟内存页(文件内容及I/O缓冲区),提高文件和目录I/O性能。页缓存是最大的缓存,不仅缓存已读内容,还包含尚未写入磁盘的“脏页”。inode缓存:inode(索引节点)是文件系统描述存储对象的数据结构。VFS维护通用inode缓存,因权限检查等操作频繁读取。目录缓存(dcache):缓存目录项名称到VFS inode的映射,加速路径名查找。这些缓存命中与否直接决定I/O的延迟:缓存命中时为纳秒级,未命中则需物理I/O(毫秒级)。页缓存页缓存是提升性能的关键,它不仅缓存文件内容,还暂存写入的脏页。脏页的写回由多种情况触发:固定间隔(如30秒)、显式sync()调用、或页面回收守护进程(kswap