本篇主要提供文件系统技术内幕计算机与互联网数据管理普通大众电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com
商品基本信息,请以下列介绍为准 | |
商品名称: | 文件系统技术内幕(大数据时代海量数据存储之道) |
作者: | 张书宁 |
定价: | 102.0 |
出版社: | 电子工业出版社 |
出版日期: | 2022-01-01 |
ISBN: | 9787121424786 |
印次: | 1 |
版次: | null |
装帧: | |
开本: | 16开 |
内容简介 | |
序 文件系统复杂而有趣。文件系统可以说是计算机软件系统中复杂的子系统。登上文件系统这座高峰,可以一览众山小,俯视任何其他复杂的软件系统。文件系统使用的数据结构,能够帮助用户解决各种类型的问题。文件系统的实现与计算资源管理、内存资源管理、网络资源管理相互作用,了解这些充满历史故事和智慧的技术方案是一个有趣的学习旅程。 作者任职于存储业界的翘楚企业,从事统一存储的研发,是负责文件系统研发的工程师。博观而约取,厚积而薄发。作者在知识的积累下撰写了本书。“知道”是一种本事,把“知道”讲得清楚是另一种本事。本书括丰富的文件系统前沿知识,其内容讲解又通俗易懂。 在互联网与搜索引擎时代,知识的获取变得容易和便捷。在自媒体时代,信息的产生、信息的多样和信息呈现的质量获得呈爆炸增长。在博客时代,文字、图片、音频、的多媒体让知识的展现方式丰富多彩、形象生动。 那么,是否有一本书可以让人们暂时放下其他事情,花时间来静静阅读呢?这必然是一本极易吸收,学习效率极高的书。阅读时能让人因似曾相识而会心一笑,时而让人因为新收获而喜悦无比。《文件系统技术内幕:洞悉海量数据存储之道》是带给你这种体验的一本书。本书讲解透彻,语实自然,从文件系统的初始问题出发,一个问题一个问题地深入,一个知识点一个知识点地介绍,这种剥洋葱式层层展开,通过层层台阶登山的方式,读者在闲庭信步之间不断积累所学的知识,轻松掌握文件系统的知识要点。 为了更好地做到知其然更知其所以然,本书除了适当地介绍了代码,还介绍了方便好用的实验工具和方法。例如,“第 4 章\4.1\4.1.1 基于文件构建文件系统”主要介绍使用 命令和 loop 设备方式,可以不对自己的计算机做任何改动,模拟出一个文件系行实验。“第 4 章\4.1\4.1.2 了解函数调用流程的利器”主要介绍使用 ftrace 跟踪文件系统的内部 API 调用情况,有助于读者理解代码调 用的流程。 这些工具和方法类似《庖丁解牛》中庖丁的牛刀和秘诀,读者可以借此逐步学习文件系统的知识,了解文件系统的工作原理。相信读者通过学习本书,不仅可以掌握文件系统的理论知识,还能从工程实践中获取文件系统实现之精华。 Dell Technologies 中端存储部门经理 高雷 前 言 从初的文件系统雏形到现在,文件系统已经发展了六七十年了。文件系统的特变得越来越丰富,适用的场景也越来越多。目前,传统文件系统除个别互联网业务外,基本上能满足现有各种类型业务的需求。同时,很多应用也都直接构建在文件系统之上。是非结构化的数据,通常都是以文件的形式存储在文件系统中的,如音频、和日志等。 随着互联网技术的发展,互联网应用对传统文件系统提出了更高的要求,传统文件系统很难满足互联网业务的需求。很多互联网公司基于自身业务特构建了自己的存储系统。互联网存储系统更多的是基于自己业务特点简化存储系统的某些方面,而增强另外一些方面的。比如,对文件系统附加行弱化,而对能和扩行增强等。虽然互联网公司的存储系统都是一些私有化的存储系统,但核心 技术并没有太大变化。 互联网领域有很多典型的存储系统,其中比较的有谷歌的 GFS、开源产品HDFS、Facebook 的 Haystack 及的 TFS 等。每一种存储系统都是针对其应行了特殊的优化,通常只能应用在某种特定的业务模式中。 以 Haystack 存储系统为例,其主要应用在 Facebook 社交软件的照片应用中。 照片应用有一个典型的特征是一次写入、多次读取、不会修改。而该应用对文件系统的其他特则没有要求,如扩展属和快照等。 虽然文件系统具有广泛的应用,但是目前国内并没有一本系统介绍文件系统的书籍。作者在学习文件系统时曾经阅读了很多计算机书籍,发现它们大多只是对文件系行了比较简要的介绍。比如,一些操作系统类的书籍,其中某些章节对文件系统的概念和原行了介绍,但距离实践还有一些差距,是与现在互联网相关的技术相差甚远。 通过学习本书内容,希望读者能够对文件系统技术有一个深入的了解,并结合源代行实例解析。同时,本书对文件系统在互联网和云计算等领域的应行一步的介绍和原理分析,让读者对文件系统技术在前沿的应用有所了解。 主要内容 本书分为 7 章,第 1 章和第 2 章主要介绍文件系统的概念、原理和基本使用,希望读者能够对文件系统有整体、感的认识。第 3 章和第 4 章主要对本地文件系统的关键技术、原行介绍,并且结合实行代码分析。本地文件系统是学习其他文件系统的基础,因此这两章对行了详细的介绍。第 5 章主要对传统网络文件系行介绍,并结合 NFS 的代码介绍了实现细节。第 6 章主要对分布式网 络文件系行介绍,并结合目前常用的分布式文件系统 CephFS 和 GlusterFS 介绍了具体实现。第 7 章主要介绍了文件系统的其他形态,对目前互联网应用广的对象存行了深入的介绍。 读者对象 虽然本书是介绍文件系统知识的专业书籍,但是并非只针对存储系统开发人员。 软件开发人员、运维人员和系统架构师等都可以从本书获得有用的知识。 软件开发人员:理解文件系统的原理对软件开发人员如何合理使用文件系统的相关 API 会有帮助。比如,软件开发人员不清楚文件系统缓存的存在,那么在使用 API 时可能不知道如何保证掉电时数据不丢失。 运维人员:有一些系统参数是与文件系统相关的,如程打开时文件的数量。如果能够对文件系统的原理有所了解,相信可以帮助运维人员合理地设置系统参数。 系统架构师:文件系统中的很多技术是通用技术,了解这些技术可以帮助系统架构行其他系统的设计,还可以帮助系统架构师将文件系统中的一些技术迁移到其他软件设计中。 软件及代码版本 本书涉及的软件比较多,分别是 Linux 内核、Ceph、GlusterFS 和 NFS-Ganesha等。本书涉及的 Linux 内核代码为 5.8 版本,涉及的 Ceph 相关代码为 13.2(Mimic)版本,涉及的 GlusterFS 相关代码为 release-8 版本,涉及的 NFS-Ganesha 的代码为2.8.3 版本。 本书介绍了从本地文件系统到分布式文件系统等众多技术,涉及的技术点比较多。作者在阐述时尽量结合源代码和图示将相关内容解释清楚。由于作者有限,书中难免存在一些疏漏和不足,希望同行专家和广大读者给予批评与指正。 要感谢电子工业出版社的林瑞和编辑,没有他的鼓励和指导,没有本书的问世。在撰写本书的过程中,林瑞和编辑给予了很多专业的建议。还要感谢我的好友刘占宁,他对整本书行了很认真的阅读,无论是遣词造句,还是技术内容的方面都提出了很多建议,使得本书的内容更加。 我在撰写本书时得到了家人,是我的妻子路欢欢的很大支持,她承担了很多的家务,让我有更多的时间专注写作。另外,还有很多其他朋友和同事对本书提了建议,在此一并表示感谢! 张书宁 2021 年 11 月于北京 |
目录 | |
目 录 第 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 |
?文件系统是大数据、AI、自动驾驶及物联网数据存储的基石,文件系统与数据存储紧密相关,在大数据时代,要掌握AI、云计算、自动驾驶、物联网等前沿知识,少要了解文件系统背后的原理。本书是相关前沿领域的从业人员、专业程序员、架构师值得学习和收藏的文件系统宝典。 |
媒体评论 | |
文件系统是大数据、AI、自动驾驶及物联网数据存储的基石,文件系统与数据存储紧密相关,在大数据时代,要掌握AI、云计算、自动驾驶、物联网等前沿知识,至少要了解文件系统背后的原理。本书是相关前沿领域的从业人员、专业程序员、架构师值得学习和收藏的文件系统宝典。 文件系统是用来组织管理和存储用户数据的重要系统软件。随着用户对数据存储的可用性、可靠性和可扩展性需求的提升,以及硬件技术和设备的不断发展,文件系统的设计和实现也在不断发展。本书采用图文并茂、通俗易懂的语言对不同类型的文件系行了详细的介绍,是带领读者入门学习文件系统的一本好书。 Dell Technologies中端存储部门高级经理 陈欢 在阅读本书过程中,读者能够体会到作者撰写本书的用心。在每一章的开头,作者都会提示前面章节的知识,后面章节知识的衔接,引导读者阅读本书。通过学内容,希望读者了解、掌握更多的文件系统技术内幕。 Dell Technologies中端存储部门高级经理 高雷 初读本书给人一种耳目一新的感觉,一方面本书聚焦在存储技术的文件系统领域,另一方面本书有多的插图,图文并茂的方式能够使读者对文件系统原理的理解变得更加容易。相信本书对存储技术开发人员或想要更深入学习文件系统原理的开发人员都会有很大的帮助。 阿里达摩院城市大脑实验室产监、资深产品专家 戴文军 作为从事十多年存储研发的老将看到本书,有种相见恨晚的感觉。本书涵盖了文件系统的诸多技术领域,而特点则是在代码层行了解析,使得读者能够具体地理解文件系统的原理,而非停留在理论层面。 同有研发管理中经理 文中领 对于专业程序员来说,操作系统和文件系统都是必须掌握的知识。本书从文件系统的概念和使用开始,逐渐深入到原理和代码,不但对本地文件系行了充分而详尽的介绍,还涉及网络文件系统和分布式文件系统。语言实、通俗易懂,是程序员的案头书。 IBM前架构师、“码农翻身”公众号作者 刘欣 文件系统在存储中举足轻重,从本地文件系统到分布式文件系统,正在向全闪存和智能存储趋势发展。本书深入浅出,侧重实践操练和源代码剖析,对理解和学习文件系统具有很高的参考价值,建议存储科研人员和行业从事者阅读。 大道行云CEO 刘爱贵 在数字时代,大数据、AI、自动驾驶等半结构化、非结构化数据新应用推动着企业存储系统不断变革。文件系统作为存储的基石,过去数十年间不断推陈出新,以承载规模更大、更快、更多样、更有价值的数据。本书“知行合一”,兼顾理论和开发实战,为要深耕文件系统的读者点亮了理论和实践的明灯。 浪潮信息存储首席架构师 孙斌 |
作者简介 | |
张书宁,戴尔科技(Dell Technologies)首席软件开发工程师,负责公司核心存储产品Unity和PowerStore的研发工作。 先后就职于华为、甲骨文(Oracle)、戴尔科技等世界五百强公司,曾负责分布式存储产品FusionStorage及中端企业级存储产品Unity和PowerStore等的系统设计和开发工作,深耕存储领域十几载。 |