第 1 章 从文件系统是什么说起 . 1
1.1 什么是文件系统 . 1
1.1.1 普通用户角度的文件系统 . 3
1.1.2 操作系统层面的文件系统 . 9
1.1.3 文件系统的基本原理 . 12
1.2 常见文件系统及分类 . 13
1.2.1 本地文件系统 . 14
1.2.2 伪文件系统 . 14
1.2.3 网络文件系统 . 15
1.2.4 集群文件系统 . 16
1.2.5 分布式文件系统 . 16
第 2 章 知其然——如何使用文件系统. 17
2.1 巧妇之炊——准备开发环境 . 17
2.2 文件内容的访问——读/写文件 . 18
2.2.1 文件系统的 API . 18
2.2.2 文件访问的一般流程 . 19
2.2.3 文件内容的读/写实例 . 20
2.2.4 关于 API 函数的进一步解释 . 22
2.3 如何遍历目录中的文件 . 24
2.4 格式化文件系统与挂载 . 27
2.5 文件系统与权限管理 . 29
2.5.1 Linux 权限管理简介 . 30
2.5.2 设置文件的 RWX 权限 . 31
2.5.3 设置文件的 ACL 权限 . 34
2.6 文件系统的锁机制 . 37
2.6.1 文件锁的分类与模式 . 37
2.6.2 Linux 文件锁的使用 . 38
2.7 文件系统的扩展属性 . 41
2.8 文件的零拷贝 . 42
2.8.1 零拷贝的基本原理 . 42
2.8.2 零拷贝的系统 API . 44
第 3 章 知其所以然——本地文件系统原理及核心技术 . 46
3.1 Linux 文件系统整体架构简介 . 46
3.1.1 从 VFS 到具体文件系统 . 48
3.1.2 关键处理流程举例 . 50
3.2 本地文件系统的关键技术与特性 . 61
3.2.1 磁盘空间布局(Layout) . 61
3.2.2 文件的数据管理 . 69
3.2.3 缓存技术 . 77
3.2.4 快照与克隆技术 . 82
3.2.5 日志技术 . 84
3.2.6 权限管理 . 85
3.2.7 配额管理 . 89
3.2.8 文件锁的原理 . 91
3.2.9 扩展属性与 ADS . 92
3.2.10 其他技术简介 . 94
3.3 常见本地文件系统简介 . 95
3.3.1 ExtX 文件系统 . 95
3.3.2 XFS 文件系统 . 95
3.3.3 ZFS 文件系统 . 96
3.3.4 Btrfs 文件系统 . 97
3.3.5 FAT 文件系统 . 98
3.3.6 NTFS 文件系统 . 98
第 4 章 从理论到实战——Ext2 文件系统代码详解 . 99
4.1 本地文件系统的分析方法与工具 . 99
4.1.1 基于文件构建文件系统 . 100
4.1.2 了解函数调用流程的利器 . 100
4.2 从 Ext2 文件系统磁盘布局说起 . 102
4.2.1 Ext2 文件系统整体布局概述 . 102
4.2.2 超级块(SuperBlock) . 103
4.2.3 块组描述符(Block Group Descriptor) . 106
4.2.4 块位图(Block Bitmap) . 108
4.2.5 inode 位图(inode Bitmap) . 109
4.2.6 inode 与 inode 表 . 109
4.3 Ext2 文件系统的根目录与目录数据布局 . 113
4.4 Ext2 文件系统的挂载 . 116
4.5 如何创建一个文件 . 117
4.5.1 创建普通文件 . 118
4.5.2 创建软硬链接 . 121
4.5.3 创建目录 . 125
4.6 Ext2 文件系统删除文件的流程 . 125
4.7 Ext2 文件系统中文件的数据管理与写数据流程 . 129
4.7.1 Ext2 文件系统中的文件数据是如何管理的 . 129
4.7.2 从 VFS 到 Ext2 文件系统的写流程. 130
4.7.3 不同写模式的流程分析 . 134
4.7.4 缓存数据刷写及流程 . 138
4.8 读数据的流程分析 . 140
4.8.1 缓存命中场景 . 141
4.8.2 非缓存命中场景 . 142
4.8.3 数据预读逻辑 . 143
4.9 如何分配磁盘空间 . 148
4.9.1 计算存储路径 . 150
4.9.2 获取存储路径 . 152
4.9.3 分配磁盘空间 . 153
4.10 Ext2 文件系统的扩展属性 . 154
4.10.1 Ext2 文件系统扩展属性是怎么在磁盘存储的 . 154
4.10.2 设置扩展属性的 VFS 流程 . 157
4.10.3 Ext2 文件系统扩展属性接口实现 . 159
4.11 权限管理代码解析 . 163
4.11.1 ACL 的设置与获取 . 163
4.11.2 ACL 权限检查 . 164
4.12 文件锁代码解析 . 165
4.12.1 flock()函数的内核实现 . 165
4.12.2 fcntl()函数的内核实现 . 167
第 5 章 基于网络共享的网络文件系统 . 172
5.1 什么是网络文件系统 . 172
5.2 网络文件系统与本地文件系统的异同 . 174
5.3 常见的网络文件系统简析 . 174
5.3.1 NFS 文件系统 . 174
5.3.2 SMB 协议与 CIFS 协议 . 175
5.4 网络文件系统关键技术 . 175
5.4.1 远程过程调用(RPC 协议) . 176
5.4.2 客户端与服务端的语言——文件系统协议 . 177
5.4.3 文件锁的网络实现 . 178
5.5 准备学习环境与工具 . 179
5.5.1 搭建一个 NFS 服务 . 179
5.5.2 学习网络文件系统的利器 . 180
5.6 网络文件系统实例 . 181
5.6.1 NFS 文件系统架构及流程简析 . 181
5.6.2 RPC 协议简析 . 185
5.6.3 NFS 协议简析 . 186
5.6.4 NFS 协议的具体实现 . 191
5.7 NFS 服务端及实例解析 . 203
5.7.1 NFSD . 203
5.7.2 NFS-Ganesha . 210
第 6 章 提供横向扩展的分布式文件系统 . 216
6.1 什么是分布式文件系统 . 216
6.2 分布式文件系统与网络文件系统的异同 . 217
6.3 常见分布式文件系统 . 217
6.3.1 GFS . 218
6.3.2 CephFS . 219
6.3.3 GlusterFS . 219
6.4 分布式文件系统的横向扩展架构 . 220
6.4.1 中心架构 . 220
6.4.2 对等架构 . 221
6.5 分布式文件系统的关键技术 . 222
6.5.1 分布式数据布局 . 222
6.5.2 分布式数据可靠性(Reliability). 224
6.5.3 分布式数据一致性(Consistency) . 228
6.5.4 设备故障与容错(Fault Tolerance) . 229
6.6 分布式文件系统实例之 CephFS . 230
6.6.1 搭建一个 CephFS 分布式文件系统 . 230
6.6.2 CephFS 分布式文件系统架构简析 . 231
6.6.3 CephFS 客户端架构 . 234
6.6.4 CephFS 集群端架构 . 236
6.6.5 CephFS 数据组织简析 . 239
6.6.6 CephFS 文件创建流程解析 . 244
6.6.7 CephFS 写数据流程解析 . 251
6.7 分布式系统实例之 GlusterFS . 253
6.7.1 GlusterFS 的安装与使用 . 253
6.7.2 GlusterFS 整体架构简析 . 257
6.7.3 转换器与转换器树 . 259
6.7.4 GlusterFS 数据分布与可靠性 . 263
6.7.5 GlusterFS 客户端架构与 I/O 流程 . 268
6.7.6 GlusterFS 服务端架构与 I/O 流程 . 270
第 7 章 百花争艳——文件系统的其他形态 . 272
7.1 用户态文件系统框架 . 272
7.1.1 Linux 中的用户态文件系统框架 Fuse . 272
7.1.2 Windows 中的用户态文件系统框架 Dokany . 279
7.2 对象存储与常见实现简析 . 282
7.2.1 从文件系统到对象存储 . 282
7.2.2 S3 对象存储简析 . 287
7.2.3 Haystack 对象存储简析 . 288
参考文献 . 295
· · · · · · (
收起)
30 有用 古都 2022-04-08 11:11:50
不说别的 一堆三无小号在这里刷五星 有这精力还是建议您多花点时间打磨下
2 有用 hezhonchen 2022-02-16 11:14:19
很有深度,值得学习
5 有用 曹麦穗 2022-07-23 19:35:37
什么时候,技术圈也成饭圈了???
4 有用 豆友254094562 2022-02-16 11:18:23
关于文件系统的书籍比较少,这本书内容不错,图文并茂,比较系统,而且具有深度,适合文件系统相关工作人员学习。
1 有用 数据存储张 2024-01-16 13:44:48 美国
大家好,我是《文件系统技术内幕》的作者张书宁。很高兴能够通过《文件系统技术内幕》这本书给大家提供一些相关的知识。希望相关内容能够在工作中帮到大家。如果大家有什么意见和建议,也欢迎留言。另外,我后续会在这里继续写一些内容,用于弥补书中的不足。
0 有用 abby 2024-05-15 11:27:23 四川
花了11小时读完,感觉还行
1 有用 数据存储张 2024-01-16 13:44:48 美国
大家好,我是《文件系统技术内幕》的作者张书宁。很高兴能够通过《文件系统技术内幕》这本书给大家提供一些相关的知识。希望相关内容能够在工作中帮到大家。如果大家有什么意见和建议,也欢迎留言。另外,我后续会在这里继续写一些内容,用于弥补书中的不足。
1 有用 张叔 2023-12-24 17:03:30 北京
本人读过这一本书,虽然说到不了5星,但4星绝对有。有些人没看书直接1星。这是对读者和作者的极度不负责。很多想学习的人可能因此失去机会。庸俗点,几十块学这么多内容,还不值!
2 有用 TAKA 2023-11-21 09:57:10 北京
在 2 🌟和 3🌟之间,我还是选择 2🌟。最早是在知乎专栏上看到作者的一篇文章,关于文件系统讲的还有点内容,后来发现作者出了这本书,读到一半真的是忍不住过来评分了。 你知道自己在写书吗?许多内容都是“不赘述了”“读者自己查”“读者自己查 man 手册”,那你还写什么??东西讲的笼统,内容都是浅浅说一点就没了,最多就是个博客专栏内容的水平。 这本书 8 分真不配。
1 有用 Jack Chu 2023-02-04 12:21:26 北京
文件系统讲的很全面,基础理论稍弱,是一本注重应用之“术”的书。