前言
自1991年Linux诞生,时间已经走过了近三十年。即将而立之年的Linux早已没有了初生时的稚气,它正在各个领域展示自己成熟的魅力。
以Linux为基础,各种开源生态,如网络、存储都出现了。而生态离不开形形色色的开源项目,在人人谈开源的今天,一个又一个知名的开源项目正在全球快速生长。当然,本书的主题仅限于Linux开源存储生态,面对其中一个又一个扑面而来且快速更迭的新项目、新名词,我们会有一种紧迫感,想去了解它们背后的故事,也会有一定的动力想要踏上Linux开源存储世界的旅程。而无论是否强迫,面对这样的一段旅程,我们心底浮现的最为愉悦的开场白或许应该是:“说实话,我学习的热情从来都没有低落过。Just for Fun.”正如Linus在自己的自传Just for Fun中所希望的那样。
面对Linux开源存储这么一个庞大而又杂乱的世界,让人最为惴惴不安的问题或许便是:我该如何更快、更好地适应这个全新的世界?人工智能与机器学习领域里研究的一个很重要的问题是,“为什么我们小时候有人牵一匹马告诉我们那是马,于是之后我们看到其他的马就知道那是马了?”针对这个问题的一个结论是:我们在头脑里形成了一种生物关系的拓扑结构,我们所认知的各种生物都会放进这个拓扑结构里,而生物不断成长的过程就是形成并完善各种各样的或树形、或环形等拓扑结构的过程,并以此来认知我们所面对的各种新事物。
由此可见,或许我们认知Linux开源存储世界最快也最为自然的方式就是努力在脑海里形成它的拓扑结构,并不断细化,比如这个生态包括什么样的层次,每个层次里又有什么样的项目去实现,各个项目又实现了哪些服务及功能,这些功能又是以什么样的方式实现的,等等。对于感兴趣的项目,我们可以更为细致地去勾勒其中的脉络,就好似我们头脑里形成的有关一个城市的地图,它有哪些区,区里又有哪些标志性建筑及街道,对于熟悉的地方,我们甚至可以将它的周围放大并细化到一个微不足道的角落。
本书的组织形式
本书正是为帮助读者形成有关Linux开源存储世界的细致拓扑而组织的。
第1章主要对Linux开源存储的生态进行整体描述,包括开源存储领域研究的热点方向、相关的开源基金会等。
第2章从存储硬件的角度介绍了存储技术的发展历史,包括存储介质的进化、存储协议的更新等。
第3章作为整个Linux开源存储世界的基础,描述了Linux存储栈(Linux Storage Stack),对I/O在Linux内核里的处理流程及所涉及的主要模块进行介绍。
第4~9章的内容分别从存储加速、存储安全、存储管理与软件定义存储、分布式存储与Ceph、OpenStack存储、容器存储等角度与层次对处于主导地位的、较为流行的项目进行介绍,以帮助读者对相应项目形成比较细致的拓扑。
第4章讲解了存储领域的加速技术,包括FPGA、QAT、NVDIMM等硬件加速技术,以及ISA-L、SPDK等开源的软件加速方案。
第5章从可用性、可靠性、数据完整性、访问控制、加密与解密等方面讨论了存储安全问题。
第6章介绍存储管理与软件定义存储方面的主要开源项目,包括OpenSDS、Libvirt等。
第7章讨论分布式存储并详细介绍了目前流行的开源分布式存储项目Ceph的设计与实现。
第8章与第9章分别对OpenStack与Kubernetes两种主要云平台中的存储支持进行讨论。
感谢
作为英特尔的开源技术中心,参与各个Linux开源存储项目的开发与推广是再自然不过的事情了。除了为各个开源项目的完善与稳定贡献更多的思考和代码,我们还希望通过这本书让更多的人更快地融入Linux开源存储世界的大家庭。
如果没有Sandra Rivera(英特尔高级副总裁兼网络平台事业部总经理)、Imad Sousou (英特尔公司副总裁兼系统软件产品部总经理)、Mark Skarpness(英特尔系统软件产品部副总裁兼数据中心系统软件总经理)、Timmy Labatte(英特尔网络平台事业部副总裁兼软件工程总经理)、练丽萍(英特尔系统软件产品部网络与存储研发总监)、冯晓焰(英特尔系统软件产品部安卓系统工程研发总监)、周林(英特尔网络平台事业部中国区软件开发总监)、梁冰(英特尔系统软件产品部市场总监)、王庆(英特尔系统软件产品部网络与存储研发经理)的支持,这本书不可能完成,谨在此感谢他们在本书编写过程中给予的关怀与帮助。
感谢本书编辑孙学瑛老师,从选题到最后的定稿,在整个过程中,都给予我们无私的帮助和指导。
感谢参与各章内容编写的各位同事,他们是李晓燕、程盈心、马建朋、尚德浩、胡伟、刘春梅、任桥伟、杨子夜、曹刚、刘长鹏、刘孝冬、惠春阳、万群、闫亮、周雁波、徐雯昀。为了本书的顺利完成,他们付出了很多努力。
感谢所有对Linux开源存储技术抱有兴趣或从事各个Linux开源存储项目工作的人,没有你们提供的源码与大量技术资料,本书便会成为无源之水。