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 那样为文件包含校验和?

有很多问题需要回答!

John

嗨 John,

文件系统会自动调整大小。版本 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.