Stratis 从 ZFS、Btrfs 和 Linux 卷管理器中学到了什么

了解更多关于这个强大的、无忧的 Linux 存储管理解决方案。
280 位读者喜欢这个。
clouds in windows

Opensource.com。CC BY-SA 4.0

正如本系列第 1 部分所讨论的,Stratis 是一个卷管理文件系统 (VMF),其功能类似于 ZFSBtrfs。在设计 Stratis 时,我们研究了现有解决方案的开发者所做的选择。

为什么不采用现有的解决方案?

原因各不相同。首先,让我们考虑 ZFS。ZFS 最初由 Sun Microsystems 为 Solaris 开发(现在归 Oracle 所有),已被移植到 Linux。然而,其 CDDL 许可的代码无法合并到 GPL 许可的 Linux 源代码树中。CDDL 和 GPLv2 是否真正不兼容是一个有争议的话题,但不确定性足以让企业 Linux 供应商不愿意采用和支持它。

Btrfs 也已得到充分的建立,并且没有许可问题。多年来,它一直是许多用户的“天选之子”,但它在稳定性和功能方面尚未达到所需的水平。

因此,在改善现状的愿望和对现有选项的沮丧情绪的推动下,Stratis 诞生了。

Stratis 的不同之处

ZFS 和 Btrfs 清楚地表明,将 VMF 编写为内核文件系统需要大量的工作和时间来解决错误并使其稳定。当涉及到宝贵的数据时,必须做到正确。从头开始,对 Stratis 采取相同的方法可能也需要十年时间,这是不可接受的。

相反,Stratis 选择使用 Linux 内核的其他现有功能:设备映射器子系统,LVM 最显著地使用它在块设备之上提供 RAID、精简配置和其他功能;以及经过良好测试且高性能的 XFS 文件系统。Stratis 使用现有技术层构建其池,目标是管理它们,使其对用户而言看起来像一个无缝的整体。

Stratis 从 ZFS 中学到了什么

对于许多用户来说,ZFS 为下一代文件系统应该是什么设定了期望。阅读网上人们谈论 ZFS 的评论有助于设定 Stratis 的初始开发目标。ZFS 的设计也隐含地突出了要避免的事情。例如,ZFS 在附加在另一个系统上创建的池时需要一个“导入”步骤。这有很多原因,每个原因都可能是 Stratis 必须解决的问题,无论是采用相同的方法还是不同的方法。

我们不喜欢 ZFS 的一件事是,它对添加新硬盘驱动器或用更大的驱动器替换现有驱动器有一些限制,特别是如果池配置为冗余。当然,这是有原因的,但我们认为这是一个我们可以改进的领域。

最后,一旦学会使用 ZFS 的命令行工具,就会有很好的体验。我们希望 Stratis 的命令行工具也能有同样的感觉,并且我们也喜欢该工具倾向于使用位置参数并限制每个命令所需的输入量。

Stratis 从 Btrfs 中学到了什么

我们喜欢 Btrfs 的一点是,它具有带有位置子命令的单个命令行工具。Btrfs 还将冗余(Btrfs 配置文件)视为池的属性,这似乎比 ZFS 的方法更容易理解,并且允许添加甚至删除驱动器。

最后,查看 ZFS 和 Btrfs 都提供的功能,例如快照实现和发送/接收支持,有助于确定 Stratis 应包含哪些功能。

Stratis 从 LVM 中学到了什么

从 Stratis 的早期设计阶段开始,我们就对 LVM 进行了广泛的研究。LVM 是目前 Linux 设备映射器 (DM) 子系统最重要的用户——事实上,DM 由 LVM 核心团队维护。我们从实际使用 LVM 作为 Stratis 层以及使用 DM 的示例(Stratis 可以直接与 LVM 对等)的可能性方面对其进行了检查。我们查看了 LVM 的磁盘元数据格式(以及 ZFS 和 XFS 的格式),以获得定义 Stratis 的磁盘元数据格式的灵感。

在列出的项目中,LVM 在内部与 Stratis 最为相似,因为它们都使用 DM。然而,从使用角度来看,LVM 对其内部工作原理更加透明。这为专家用户提供了大量控制和选项,可以精确地配置卷组(池)布局,而 Stratis 则没有。

解决方案的多样性

在自由软件和开源软件上工作的一大优点是没有不可替代的组件。每个部分——甚至内核——都开放供查看、修改,甚至在当前软件无法满足用户需求时进行替换。如果对两者都有足够的支持以并行维持,则新项目不需要结束现有项目。

Stratis 旨在更好地满足一些用户对本地存储管理的需求——那些寻求无忧、易用、强大解决方案的用户。这意味着做出可能不适合所有用户的设计选择。替代方案使艰难的选择成为可能,因为用户有其他选择。所有用户最终都受益于他们使用最适合他们的工具的能力。

标签
Andy Grover
Andy Grover 是 Red Hat 的首席软件工程师,致力于改进 Linux 的块存储功能。他的工作包括对内核本身以及底层管理工具的更改。之前的工作领域包括网络和 ACPI。他住在波特兰。

3 条评论

在斯洛伐克语中,Stratis 看起来很像“stratíš”或在捷克语中“ztratíš”,这意味着“你输了”。所以这个名字对于存储相关的项目来说不好:D

你谈了很多关于设计的内容,但你仍然没有谈到 stratis 的功能

我可以在挂载时调整文件系统的大小吗?

我可以在系统运行时从镜像转换为 RAID5/6,然后再转换回来吗?

文件系统有多快?

它对故障的鲁棒性如何?

您是否像 ZFS 那样为文件包含校验和?

有很多问题需要解答!

约翰

嗨,约翰,

文件系统会自动调整大小。版本 1.0 不支持 RAID 和镜像,更不用说转换了,所以无法说何时/是否会支持。我们还没有做太多的性能分析。什么类型的故障?我们计划通过使用 dm-integrity 目标来支持完整性,这也是 1.0 版本之后的计划的一部分。

但是,是的。有很多问题需要解答,即使现在答案尚不清楚!我会考虑创建一个 FAQ 页面。

回复 作者 John Stoffel (未验证)

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.