文件系统技术内幕:大数据时代海量数据存储之道

文件系统技术内幕:大数据时代海量数据存储之道
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2022-01
版次: 01
ISBN: 9787121424786
定价: 102.00
装帧: 其他
开本: 其他
纸张: 胶版纸
页数: 308页
44人买过
  • 《文件系统技术内幕:大数据时代海量数据存储之道》通过理论与实践相结合的方式,深入浅出地介绍了文件系统的概念、原理和具体实现。本书涵盖本地文件系统、网络文件系统、分布式文件系统和对象存储等内容,可以说涵盖了数据持久化文件系统的主要领域。为了使读者更加深入地理解文件系统的原理,本书不仅介绍了文件系统的原理和关键技术,还结合开源项目介绍了文件系统的实现细节。后,本书介绍了在互联网领域广泛使用的对象存储、承载海量访问请求的原理及可存储海量数据的架构。希望读者通过阅读本书对文件系统有全面、深入的认识。
      《文件系统技术内幕:大数据时代海量数据存储之道》既可以作为文件系统及其他存储系统开发人员的指导用书,也可以作为软件架构师、程序员和 Linux 运维人员的参考用书。 张书宁

    戴尔科技(Dell Technologies)首席软件开发工程师,负责公司核心存储产品Unity和PowerStore的研发工作。

    先后就职于华为、甲骨文(Oracle)、戴尔科技等世界五百强公司,曾负责分布式存储产品FusionStorage及中端企业级存储产品Unity和PowerStore等的系统设计和开发工作,深耕存储领域十几载。 第 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
  • 内容简介:
    《文件系统技术内幕:大数据时代海量数据存储之道》通过理论与实践相结合的方式,深入浅出地介绍了文件系统的概念、原理和具体实现。本书涵盖本地文件系统、网络文件系统、分布式文件系统和对象存储等内容,可以说涵盖了数据持久化文件系统的主要领域。为了使读者更加深入地理解文件系统的原理,本书不仅介绍了文件系统的原理和关键技术,还结合开源项目介绍了文件系统的实现细节。后,本书介绍了在互联网领域广泛使用的对象存储、承载海量访问请求的原理及可存储海量数据的架构。希望读者通过阅读本书对文件系统有全面、深入的认识。
      《文件系统技术内幕:大数据时代海量数据存储之道》既可以作为文件系统及其他存储系统开发人员的指导用书,也可以作为软件架构师、程序员和 Linux 运维人员的参考用书。
  • 作者简介:
    张书宁

    戴尔科技(Dell Technologies)首席软件开发工程师,负责公司核心存储产品Unity和PowerStore的研发工作。

    先后就职于华为、甲骨文(Oracle)、戴尔科技等世界五百强公司,曾负责分布式存储产品FusionStorage及中端企业级存储产品Unity和PowerStore等的系统设计和开发工作,深耕存储领域十几载。
  • 目录:
    第 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
查看详情
相关图书 / 更多
文件系统技术内幕:大数据时代海量数据存储之道
文件与档案管理教程
潘连根
文件系统技术内幕:大数据时代海量数据存储之道
文件、信息商业化服务机构建设研究(当代档案学理论丛书)
黄霄羽 著
文件系统技术内幕:大数据时代海量数据存储之道
文件检验
王跃 著
文件系统技术内幕:大数据时代海量数据存储之道
文件检验(第2版)
柯昌林、岑鸿雁 编
文件系统技术内幕:大数据时代海量数据存储之道
文件写作与处理
曹润芳 主编;赵国俊 编写
文件系统技术内幕:大数据时代海量数据存储之道
文件管理理论与实践
潘连根 编
文件系统技术内幕:大数据时代海量数据存储之道
文件加密全接触
易倍思工作室
文件系统技术内幕:大数据时代海量数据存储之道
文件信息管理术语英汉词典
安小米 著
文件系统技术内幕:大数据时代海量数据存储之道
文件中的历史——改变世界历史进程的100份文件
斯科特·克里斯蒂安松 著;王兢 译
文件系统技术内幕:大数据时代海量数据存储之道
文件管理全接触——莱鸟步步高丛书
易倍思工作室 编
文件系统技术内幕:大数据时代海量数据存储之道
文件与档案研究
潘连根 著
文件系统技术内幕:大数据时代海量数据存储之道
文件检验(修订版)
王跃
您可能感兴趣 / 更多
文件系统技术内幕:大数据时代海量数据存储之道
全域兴趣电商构建从入门到精通
张书宁;易红