摘要: Linux 软件开发正在努力扩充 Linux 的文件和 存储 选择。
波士顿-在 Linux 基金会 的 Vault 会议上,内容全部是关于 文件系统 和 存储 的。 你可能会觉得这两者中任一个都没有什么新的可讲,但是你可能错了。
像 Btrfs 一样的 Linux 文件系统 和 存储 支持的选择一直在改进。– Facebook
目前为止,存储技术已经取得了很大进展,正像 Linux Torvalds 说的那样, “ 讨厌生锈的大转盘 ”, Linux 必须保持自己不落后。最近几年,很多例子说明了。比如: 闪存已经成为企业服务的主要存储 , 持久稳定的 内存 已经带给我们 DRAM 一样的存储速度。同时, 大数据 , 云 计算和 Containers 全都是 Linux 的新应用案例。为了更好的适应这些应用领域, Linux 开发者在扩充他们已有的文件和存储项目的同时也在研发新的项目。
比如 Chris Mason, Facebook 的软件工程师,同时也是 Btrfs (发音为 Butter FS )的维护人员之一。他描述了 Facebook 如何使用该 文件系统 。 Brfs 作为一个文件系统有许多优点,比如它支持海量的小文件存储,支持16艾字节的单个文件,支持 RAID 备份,内置文件系统压缩,完善的多存储设备支持等等。
Facebook ,当然在 Linux 上运行。准确的说, Facebook 运行在一个内部分配的基于 CentOS 的3.10和3.18 Linux 内核上。对 Facebook 来说,真正的优势在于 Btrfs 在 Facebook 来自不断的用户更新产生的连续 IOPS 下响应快速并且稳定。
这是好的方面。不好的方面是 Btrfs 相较于 MYSQL 这样传统的数据库管理系统来说还是太慢了。对此, Facebook 使用 XFS 。 Facebook 使用 开源 的 分布式 文件系统 Gluster 来协调 Btrfs 和 XFS 的工作。
Facebook 一直和致力于提升 Btrfs 数据库管理系统的 Btrfs Linux 内核开发者保持着紧密的合作。 Mason 和他的同事们用 RocksDB 来提升 Btrfs 的速度。它是快速存储的稳固的关键。它可以用于主从式的数据库。
Btrfs 也有一些问题。比如,如果你想填满一个磁盘, Btrfs 会在磁盘写满前阻止你继续写入。对一些项目来讲,比如 CoreOS 这个依赖容器的 Linux 企业版,那就是一场因特别精彩而被掌声打断的表演。 CoreOS 已经将 Btrfs 切换到 xt4 和 overlayfs 上了 。
Btrfs 的全体工作人员也致力于数据去重。对此,当一个文件系统不止一份完全相同的文件时,将自动删除副本。正如 Mason 说的那样:“并不是每个人都需要他,但是当你真正需要的时候它的作用就彰显了”。
Btrfs 不是唯一的非常重要并且在使用的文件系统。 John Spray ,一个 Red Hat 的高级软件工程师,谈了 分布式 的文件系统—— Ceph 。
Ceph 提供了 分布式 的对象存储和文件系统。它利用商用 硬件 的群集,依靠弹性的可伸缩框架—— RADOS 。利用 RADOS 的块设备—— RBD 和 RADOS 的对象网关—— RGW, Ceph 提供了一个 POSIX 的文件系统接口—— Ceph FS 。当 RBD 和 RGW 应用于生产环境一段时间之后,将 Ceph FS 应用于生产已经在进行了。
Red Hat ,在收购 Ceph 的母公司 Inktank 之后 ,已经在2014开始为将 Ceph FS 应用于生产做准备了。不管怎样, Spray 说过:“一些人已经将它应用于生产环境了,我们害怕这样,它是真的还不能完全应用于生产”。 同时, Spray 又说:“它不只被祝福,因为其中还夹杂着恐惧。我们真正获得了来自那些用户的测试和反馈”。
产生以上忧虑是因为 Ceph 的对象存储器扩展性良好,而作为 POSIX 文件系统的 Ceph FS ,它是很难扩展的。举个例子,作为一个分布式的文件系统, Ceph FS 必须去处理来自多终端的并发写入。这可能导致全部或者部分情况下一个终端写入时其他人必须等待。可能导致比那些普通文件系统更复杂的文件锁情况。
Ceph FS 仍然值得去使用。 Spray 说:“从 POSIX 文件系统作为一个操作系统的通用语言起”。那不是说 Ceph FS 不好用。“它不是可怕的损坏。它是可以使用的,只是缺少修复和监视的工具”。
Red Hat 已经在努力制作文件系统检查、日志修复、快照硬化、更好的客户端访问管理、 云 和容器集合的工具。目前为止,只有非常勇敢或者愚蠢的才会将 Ceph FS 应用到生产环境。
关于文件系统和存储更大的问题, Jeff Layton , Primary Data 的高级软件工程师,讲述了为了创造“测试灾难性停电,实际上没有拔插头”所做的努力。“这些测试很快会用金标准的 Linux 文件系统测试—— xfstests 完善”。
Rik van Riel ,一个 Red Hat 的主要软件工程师,讲述了持久稳固的 内存 产品。你可以将它们作为存储或者 内存 。但是,你用它们作为内存不能获得当前的映像备份快照。实际上的问题: van Riel 确定人们会
尝试持久稳固的内存,它将可能导致这样的情况:“没有备份,你将如何处理一个200GB的内存数据库?” 更糟糕的 是,日志系统无法在持久稳固的内存上准确运行。
什么才是正确的答案? Linux 现在还没有。但是人们已经在致力于解决它。
所以,当 Linux 拥有很多文件系统并且可以用任何一种存储区存储一个字节的时候还要很多事情要做。科技永远不会停滞不前。运行在从桌面到服务器再到 云 到超级计算机的 Linux ,必须跟上存储的发展,无论他们什么时候发生。