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)
  • 操作系统概述
  • 计算机基础

    • 计算机系统全景
    • 数制编码与数据表示
    • CPU架构与指令执行
    • 内存层次与缓存
    • 总线IO与设备模型
    • 文件存储与磁盘
      • 1. 学习目标
      • 2. 知识框架
      • 3. 核心概念
      • 4. 机制与实践
      • 5. 常用命令与工具
      • 6. 常见误区
      • 7. 进阶研究方向
      • 8. Tips 快问快答
      • 9. 总结
    • 网络基础与协议栈
    • 虚拟化容器与云基础
  • 操作系统原理

  • Linux

  • MacOS

  • Windows

  • 系统工程与研究专题

目录

文件存储与磁盘

文件是操作系统给应用提供的核心抽象之一。应用看到的是路径和字节流,系统内部则涉及文件系统、块设备、缓存、日志、权限和一致性。

# 1. 学习目标

  • 理解文件、目录、inode、块设备和挂载的基本关系。
  • 能区分 HDD、SSD、网络存储和对象存储的性能特征。
  • 能分析空间不足、IO 慢、文件句柄泄漏和数据一致性问题。

# 2. 知识框架

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

文件存储的核心链路是:路径解析 -> 文件系统元数据 -> Page Cache -> 块层队列 -> 存储设备。每一层都可能成为性能或一致性问题的来源。

# 3. 核心概念

主题 说明 工程关注
文件系统 组织文件、目录、元数据和空间分配的规则 ext4、XFS、APFS、NTFS 差异
inode/元数据 描述文件权限、大小、块位置等信息 小文件过多、inode 耗尽
日志机制 记录元数据或数据变更以便崩溃恢复 一致性、写入放大、fsync
挂载点 把文件系统接入目录树的位置 容器卷、网络盘、权限边界

# 4. 机制与实践

  1. 生产系统要监控磁盘容量、inode、IO 延迟、文件句柄和错误日志。
  2. 数据库、消息队列等关键组件要理解 fsync、刷盘策略和文件系统选型。
  3. 不要把本地磁盘、网络盘、对象存储当成同一种文件系统使用。

# 5. 常用命令与工具

命令或工具 作用 使用建议
df -h 查看文件系统容量 排查磁盘满
df -i 查看 inode 使用 小文件过多时尤其重要
du -sh * 统计当前目录各项大小 定位空间占用来源

# 6. 常见误区

  • 只看磁盘容量不看 inode:大量小文件可能先耗尽 inode,即使容量还有剩余也无法创建文件。
  • 认为写入返回就等于落盘:很多写入会先进入缓存,真正持久化与 fsync、挂载参数和硬件缓存有关。
  • 滥用网络文件系统:网络盘延迟和一致性语义不同,不能无脑替代本地盘。

# 7. 进阶研究方向

  • 阅读 ext4、XFS、APFS、NTFS 的设计差异。
  • 研究数据库为什么重视顺序写、预写日志和 fsync。
  • 用 fio 对不同块大小、队列深度、读写模式做基准测试。

# 8. Tips 快问快答

Q:文件和目录本质有什么区别?

A:目录也是特殊文件,保存名称到文件元数据的映射。

Q:为什么删除大文件后空间没有释放?

A:文件可能仍被进程打开,目录项删除了但文件句柄还在,空间要等句柄关闭后释放。

Q:什么是 inode 耗尽?

A:文件系统可用元数据节点用完,常见于海量小文件场景。

# 9. 总结

文件系统把复杂存储设备抽象成路径和文件,但容量、元数据、缓存、一致性和设备性能依然会影响应用。成熟工程师要能从文件路径一路追到块设备。

上次更新: 2026/06/25, 10:02:19
总线IO与设备模型
网络基础与协议栈

← 总线IO与设备模型 网络基础与协议栈→

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