更新时间:2022-05-05 20:31:19
封面
版权信息
作者简介
内容简介
推荐序
前言
第1章 从文件系统是什么说起
1.1 什么是文件系统
1.1.1 普通用户角度的文件系统
1.1.2 操作系统层面的文件系统
1.1.3 文件系统的基本原理
1.2 常见文件系统及分类
1.2.1 本地文件系统
1.2.2 伪文件系统
1.2.3 网络文件系统
1.2.4 集群文件系统
1.2.5 分布式文件系统
第2章 知其然——如何使用文件系统
2.1 巧妇之炊——准备开发环境
2.2 文件内容的访问——读/写文件
2.2.1 文件系统的API
2.2.2 文件访问的一般流程
2.2.3 文件内容的读/写实例
2.2.4 关于API函数的进一步解释
2.3 如何遍历目录中的文件
2.4 格式化文件系统与挂载
2.5 文件系统与权限管理
2.5.1 Linux权限管理简介
2.5.2 设置文件的RWX权限
2.5.3 设置文件的ACL权限
2.6 文件系统的锁机制
2.6.1 文件锁的分类与模式
2.6.2 Linux文件锁的使用
2.7 文件系统的扩展属性
2.8 文件的零拷贝
2.8.1 零拷贝的基本原理
2.8.2 零拷贝的系统API
第3章 知其所以然——本地文件系统原理及核心技术
3.1 Linux文件系统整体架构简介
3.1.1 从VFS到具体文件系统
3.1.2 关键处理流程举例
3.2 本地文件系统的关键技术与特性
3.2.1 磁盘空间布局(Layout)
3.2.2 文件的数据管理
3.2.3 缓存技术
3.2.4 快照与克隆技术
3.2.5 日志技术
3.2.6 权限管理
3.2.7 配额管理
3.2.8 文件锁的原理
3.2.9 扩展属性与ADS
3.2.10 其他技术简介
3.3 常见本地文件系统简介
3.3.1 ExtX文件系统
3.3.2 XFS文件系统
3.3.3 ZFS文件系统
3.3.4 Btrfs文件系统
3.3.5 FAT文件系统
3.3.6 NTFS文件系统
第4章 从理论到实战——Ext2文件系统代码详解
4.1 本地文件系统的分析方法与工具
4.1.1 基于文件构建文件系统
4.1.2 了解函数调用流程的利器
4.2 从Ext2文件系统磁盘布局说起
4.2.1 Ext2文件系统整体布局概述
4.2.2 超级块(SuperBlock)
4.2.3 块组描述符(Block Group Descriptor)
4.2.4 块位图(Block Bitmap)
4.2.5 inode位图(inode Bitmap)
4.2.6 inode与inode表
4.3 Ext2文件系统的根目录与目录数据布局
4.4 Ext2文件系统的挂载
4.5 如何创建一个文件
4.5.1 创建普通文件
4.5.2 创建软硬链接
4.5.3 创建目录
4.6 Ext2文件系统删除文件的流程
4.7 Ext2文件系统中文件的数据管理与写数据流程
4.7.1 Ext2文件系统中的文件数据是如何管理的
4.7.2 从VFS到Ext2文件系统的写流程
4.7.3 不同写模式的流程分析
4.7.4 缓存数据刷写及流程
4.8 读数据的流程分析
4.8.1 缓存命中场景
4.8.2 非缓存命中场景
4.8.3 数据预读逻辑
4.9 如何分配磁盘空间
4.9.1 计算存储路径
4.9.2 获取存储路径
4.9.3 分配磁盘空间
4.10 Ext2文件系统的扩展属性
4.10.1 Ext2文件系统扩展属性是怎么在磁盘存储的
4.10.2 设置扩展属性的VFS流程
4.10.3 Ext2文件系统扩展属性接口实现
4.11 权限管理代码解析
4.11.1 ACL的设置与获取
4.11.2 ACL权限检查
4.12 文件锁代码解析
4.12.1 flock()函数的内核实现
4.12.2 fcntl()函数的内核实现