-
内容大纲
本书通过理论与实践相结合的方式,深入浅出地介绍了文件系统的概念、原理和具体实现。本书涵盖本地文件系统、网络文件系统、分布式文件系统和对象存储等内容,可以说涵盖了数据持久化文件系统的主要领域。为了使读者更加深入地理解文件系统的原理,本书不仅介绍了文件系统的原理和关键技术,还结合开源项目介绍了文件系统的实现细节。最后,本书介绍了在互联网领域广泛使用的对象存储、承载海量访问请求的原理及可存储海量数据的架构。希望读者通过阅读本书对文件系统有全面、深入的认识。
本书既可以作为文件系统及其他存储系统开发人员的指导用书,也可以作为软件架构师、程序员和Linux运维人员的参考用书。 -
作者介绍
张书宁,戴尔科技首席软件开发工程师,负责公司核心存储产品Unity和PowerStore的研发工作。先后就职于华为、甲骨文、戴尔科技等世界五百强公司,曾负责分布式存储产品FusionStorage及中端企业级存储产品Unity和PowerStore等的系统设计和开发工作,深耕存储领域十几载。 -
目录
第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 块组描述符(BlockGroupDescriptor)
4.2.4 块位图(BlockBitmap)
4.2.5 inode位图(inodeBitmap)
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()函数的内核实现
第5章 基于网络共享的网络文件系统
5.1 什么是网络文件系统
5.2 网络文件系统与本地文件系统的异同
5.3 常见的网络文件系统简析
5.3.1 NFS文件系统
5.3.2 SMB协议与CIFS协议
5.4 网络文件系统关键技术
5.4.1 远程过程调用(RPC协议)
5.4.2 客户端与服务端的语言——文件系统协议
5.4.3 文件锁的网络实现
5.5 准备学习环境与工具
5.5.1 搭建一个NFS服务
5.5.2 学习网络文件系统的利器
5.6 网络文件系统实例
5.6.1 NFS文件系统架构及流程简析
5.6.2 RPC协议简析
5.6.3 NFS协议简析
5.6.4 NFS协议的具体实现
5.7 NFS服务端及实例解析
5.7.1 NFSD
5.7.2 NFS-Ganesha
第6章 提供横向扩展的分布式文件系统
6.1 什么是分布式文件系统
6.2 分布式文件系统与网络文件系统的异同
6.3 常见分布式文件系统
6.3.1 GFS
6.3.2 CephFS
6.3.3 GlusterFS
6.4 分布式文件系统的横向扩展架构
6.4.1 中心架构
6.4.2 对等架构
6.5 分布式文件系统的关键技术
6.5.1 分布式数据布局
6.5.2 分布式数据可靠性(Reliability)
6.5.3 分布式数据一致性(Consistency)
6.5.4 设备故障与容错(FaultTolerance)
6.6 分布式文件系统实例之CephFS
6.6.1 搭建一个CephFS分布式文件系统
6.6.2 CephFS分布式文件系统架构简析
6.6.3 CephFS客户端架构
6.6.4 CephFS集群端架构
6.6.5 CephFS数据组织简析
6.6.6 CephFS文件创建流程解析
6.6.7 CephFS写数据流程解析
6.7 分布式系统实例之GlusterFS
6.7.1 GlusterFS的安装与使用
6.7.2 GlusterFS整体架构简析
6.7.3 转换器与转换器树
6.7.4 GlusterFS数据分布与可靠性
6.7.5 GlusterFS客户端架构与I/O流程
6.7.6 GlusterFS服务端架构与I/O流程
第7章 百花争艳——文件系统的其他形态
7.1 用户态文件系统框架
7.1.1 Linux中的用户态文件系统框架Fuse
7.1.2 Windows中的用户态文件系统框架Dokany
7.2 对象存储与常见实现简析
7.2.1 从文件系统到对象存储
7.2.2 S3对象存储简析
7.2.3 Haystack对象存储简析
参考文献
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...