配置本地存储是桌面 Linux 用户很少做的事情——可能只在安装期间做一次。Linux 存储技术发展缓慢,20 年前使用的许多存储工具今天仍然经常使用。但自那时以来,有些事情确实得到了改进。为什么人们不利用这些新功能呢?
本文是关于 Stratis 的,这是一个旨在将存储进步带给所有 Linux 用户的新项目,从简单的笔记本电脑单 SSD 到数百个磁盘阵列。Linux 拥有这些功能,但由于缺乏易于使用的解决方案而阻碍了广泛采用。Stratis 的目标是使 Linux 的高级存储功能易于访问。
简单、可靠地访问高级存储功能
Stratis 旨在使三件事更容易:存储的初始配置;稍后进行更改;以及使用高级存储功能,如快照、精简配置,甚至分层。
Stratis:卷管理文件系统
Stratis 是一种卷管理文件系统 (VMF),类似于 ZFS 和 Btrfs。它从存储“池”的核心思想开始,这个概念在 VMF 和独立卷管理器(如 LVM)中都很常见。这个池由一个或多个本地磁盘(或分区)创建,卷从池中创建。它们的确切布局不是由用户指定的,这与使用 fdisk 或 GParted 的传统磁盘分区不同。
VMF 更进一步,集成了文件系统层。用户不再选择要放在卷上的文件系统。文件系统和卷合并成一个单一的东西——一个概念性的文件树(ZFS 称之为数据集,Btrfs 称之为子卷,Stratis 称之为文件系统),其数据驻留在池中,但除了池的总大小外,没有大小限制。
另一种看待这个问题的方式:正如文件系统抽象了构成文件系统中单个文件的存储块的实际位置一样,VMF 抽象了池中文件系统的实际存储块。
池启用了其他有用的功能。其中一些功能,例如文件系统快照,自然地从 VMF 的典型实现中产生,其中多个文件系统可以共享池中的物理数据块。其他功能,如冗余、分层和完整性,之所以有意义,是因为池是管理系统上所有文件系统的这些功能的中心位置。
结果是,与独立的卷管理器和文件系统层相比,VMF 更易于设置和管理,也更容易启用高级存储功能。
Stratis 与 ZFS 或 Btrfs 有何不同?
Stratis 是一个新项目,这使其受益于从以前的项目中学习。Stratis 从 ZFS、Btrfs 和 LVM 中学到了什么将在 第 2 部分 中深入介绍,但概括地说,Stratis 的差异来自于了解哪些方法有效,哪些方法对其他人无效,来自于人们使用和自动化计算机方式的变化,以及底层硬件的变化。
首先,Stratis 专注于易用性和安全性。这对于个人用户来说很重要,他们可能在两次与 Stratis 交互之间间隔很长时间。如果这些交互不友好,特别是如果存在丢失数据的可能性,大多数人将坚持使用基本功能,而不是使用新功能。
其次,API 和 DevOps 风格的自动化在今天比几年前甚至更重要。Stratis 通过提供一流的 API 来支持自动化,因此人和软件工具都可以直接使用 Stratis。
第三,SSD 的容量和市场份额都大大扩展。早期的文件系统竭尽全力优化旋转媒体的慢速访问时间,但基于闪存的媒体使这些努力变得不那么重要。即使池的数据太大,无法经济地为整个池使用 SSD,SSD 缓存层仍然是一个选项,并且可以产生出色的结果。假设 SSD 具有良好的性能,Stratis 可以将其池设计重点放在灵活性和可靠性上。
最后,Stratis 的实现模型与 ZFS 和 Btrfs 非常不同(我将在 第 2 部分 中进一步讨论这一点)。这意味着对于 Stratis 来说,有些事情更容易,而另一些事情更难。这也加快了 Stratis 的开发步伐。
了解更多
要了解有关 Stratis 的更多信息,请查看本系列的 第 2 部分。您还可以在 Stratis 网站上找到详细的 设计文档。
参与其中
要开发、测试 Stratis 或提供反馈,请订阅我们的邮件列表。
开发工作在 GitHub 上进行,包括 守护进程(用 Rust 编写)和 命令行工具(用 Python 编写)。
在 Freenode IRC 网络上的 #stratis-storage 频道加入我们。
1 条评论