Wrayの知识库 Wrayの知识库
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
  • 操作系统概述
  • 计算机基础

  • 操作系统原理

    • 操作系统职责与内核架构
    • 进程线程与调度
    • 内存管理与虚拟内存
    • 文件系统与VFS
      • 1. 学习目标
      • 2. 知识框架
      • 3. 核心概念
      • 4. 机制与实践
      • 5. 常用命令与工具
      • 6. 常见误区
      • 7. 进阶研究方向
      • 8. Tips 快问快答
      • 9. 总结
    • IO模型与中断
    • 权限安全与隔离
    • 启动流程与系统服务
    • 性能观测与故障定位
  • Linux

  • MacOS

  • Windows

  • 系统工程与研究专题

目录

文件系统与VFS

文件系统不仅负责存储文件,还负责路径解析、权限、元数据、缓存、一致性和设备差异。VFS 让不同文件系统呈现统一接口。

# 1. 学习目标

  • 理解 VFS、inode、dentry、文件描述符和挂载。
  • 能解释打开文件、读写文件、删除文件的内核路径。
  • 能排查文件句柄泄漏、权限异常、磁盘满和删除不释放空间。

# 2. 知识框架

文件系统与VFS
├─ 入门:建立术语、对象和日常操作的直觉
├─ 进阶:理解机制、边界和跨平台差异
└─ 专家:能排障、能设计、能阅读实现和研究材料

文件访问路径可以拆成:路径字符串 -> dentry 缓存 -> inode 元数据 -> file 对象 -> Page Cache -> 文件系统 -> 块设备。

# 3. 核心概念

主题 说明 工程关注
VFS 虚拟文件系统层,屏蔽具体文件系统差异 统一 open/read/write 接口
文件描述符 进程打开文件后的整数句柄 句柄泄漏、连接也是文件
dentry 目录项缓存,保存路径名称关系 路径查找性能
挂载 把文件系统接入统一目录树 容器卷、网络文件系统、只读挂载

# 4. 机制与实践

  1. 排查 too many open files 时查看进程句柄数量、ulimit 和连接泄漏。
  2. 删除日志前确认是否被进程持有,必要时重启或重新打开日志文件。
  3. 生产关键数据目录要明确文件系统、挂载参数、备份和恢复策略。

# 5. 常用命令与工具

命令或工具 作用 使用建议
lsof -p pid 查看进程打开的文件 排查句柄泄漏
mount 查看挂载信息 确认文件系统类型和挂载参数
find . -xdev -type f -size +1G 查找当前文件系统内大文件 避免跨挂载点误扫

# 6. 常见误区

  • 以为删除文件一定释放空间:打开句柄未关闭时,目录项没了但数据块仍被占用。
  • 忽略文件描述符限制:高并发网络服务连接数也会消耗文件描述符。
  • 把所有文件系统能力视为一致:本地盘、网络盘、容器 overlay 的语义和性能不同。

# 7. 进阶研究方向

  • 阅读 VFS 中 inode、dentry、file 的关系。
  • 研究 Page Cache、脏页和 fsync 的一致性语义。
  • 观察容器 overlayfs 对文件写放大的影响。

# 8. Tips 快问快答

Q:Socket 为什么也算文件?

A:类 Unix 系统把很多资源抽象成文件描述符,Socket 也通过类似 read/write 的接口操作。

Q:什么是 VFS?

A:VFS 是内核中的统一抽象层,让不同文件系统对应用呈现相似接口。

Q:如何排查文件句柄泄漏?

A:用 lsof 或系统指标查看进程打开文件增长,再结合应用连接池、日志和资源关闭路径定位。

# 9. 总结

文件系统是应用最常用的系统抽象之一。理解 VFS、文件描述符和缓存之后,空间、权限、句柄和一致性问题都会更容易定位。

上次更新: 2026/06/25, 10:02:19
内存管理与虚拟内存
IO模型与中断

← 内存管理与虚拟内存 IO模型与中断→

Copyright © 2023-2026 Wray | 鄂ICP备2024050235号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式