39 个稳定版本
3.6.8 | 2024年7月2日 |
---|---|
3.6.6 | 2024年3月26日 |
3.6.3 | 2023年11月30日 |
3.5.8 | 2023年7月27日 |
2.4.2 | 2021年6月29日 |
#53 在 文件系统
每月62次下载
1.5MB
35K SLoC
stratisd
一个管理块设备池以创建灵活文件系统的守护进程。
背景
Stratis(包括stratisd 以及 stratis-cli),通过整合现有技术的层级提供ZFS/Btrfs风格的特性:Linux的devicemapper子系统,以及XFS文件系统。stratisd
管理一组块设备,并导出D-Bus API。Stratis-cli的stratis
提供了一个命令行工具,该工具本身使用D-Bus API与stratisd
通信。
网站
见 https://stratis-storage.github.io/。
参与其中
沟通渠道
如果您有任何问题,请随时在邮件列表或IRC上提问。
邮件列表
开发邮件列表: [email protected],-- 订阅 此处。
IRC
irc.libera.chat #stratis-storage.
针对开发者
Stratisd是用Rust编写的,这有助于实现小巧、正确且无需携带大型语言运行时。
问题跟踪和开发
Stratisd开发使用GitHub问题跟踪,并通过GitHub拉取请求(PR)进行新开发。如果愿意,也可以通过邮件列表发送补丁或错误报告。
为开发做准备
开发工具链
stratisd可以使用各种Rust工具链版本构建。推荐的开发工具链通常跟踪Rust稳定版本,尽管可能略有滞后。stratisd保证可以在其最低支持的工具链上构建,这可能与推荐的开发工具链落后几个小版本。
如果可能的话,贡献者应使用推荐的开发工具链,因为持续集成使用该版本的Rust检查器和格式化工具。可以通过检查项目的持续集成配置文件来确定推荐的开发工具链版本。
构建
Stratisd需要Rust和Cargo来构建。这些可能通过您的发行版的软件包管理器提供。如果没有,可以使用Rustup来安装和更新Rust工具链。一旦工具链和其他依赖项就绪,运行make build
来构建,然后以root身份运行stratisd
可执行文件。
构建测试
Makefile提供了一个目标build-tests
,允许编译测试而无需运行任何测试,这为开发者提供了便利。
次要依赖项
Stratis ci仓库包含一个脚本dependencies_fedora.sh
,该脚本在Fedora上安装stratisd及其CLI的所有开发依赖项。
格式化
Stratisd使用rustfmt
来强制执行Rust文件的统一格式。PR必须通过CI中的fmt
任务才能合并。在提交拉取请求之前,运行make fmt
以确保您的更改符合预期的格式。编译器的不同版本可能导致格式略有变化;请确保使用当前的开发版本。
检查器
Stratisd使用clippy
来检测Rust检查器。PR必须通过CI中的clippy
任务才能合并。要检查检查器,运行make clippy
。检查器会随着编译器的不同版本而略有变化;请确保使用当前的开发版本。
配置
Stratisd以root身份运行,需要访问D-Bus系统总线。因此,为了正确工作,必须存在一个D-Bus配置文件来授予访问权限,无论是通过发行版打包安装,还是通过将stratisd.conf
复制到/etc/dbus-1/system.d/
来手动安装。
设置日志级别
可以使用命令行选项--log-level
来设置stratisd的日志级别。此选项仅设置stratisd组件的级别。
要更精细地控制任何stratisd组件或依赖项的日志级别,请使用RUST_LOG
环境变量。有关RUST_LOG
的更多信息,请参阅env_logger
crate的文档。
测试
Stratisd以两种方式进行测试。第一种方式使用Rust测试基础设施,并可以更深入地访问stratisd的内部。第二种方式使用stratisd的D-Bus接口。
使用Rust测试基础设施进行的测试
Stratisd包含两种测试模式
- 安全单元测试,可以在不影响您的存储配置的情况下运行
- 不安全的单元测试,可能在执行过程中创建和销毁设备
要运行安全单元测试
$ make test
有关不安全单元测试的描述、必要的设置步骤以及如何运行它们,请参阅README_tests.md
。
通过D-Bus与stratisd交互的测试
有关基于D-Bus的测试的描述,请参阅tests/client-dbus/README.rst
。
允许的缺陷
stratisd
存在一些错误;其中大部分我们计划在适当的时候解决。
有一个错误我们选择不修复。这是我们在 D-Bus 层的一个错误,如果在调用 D-Bus 方法时使用不符合方法预期签名的参数,它将允许某些 D-Bus 值被错误地反序列化。有关此错误的更多详细信息,请参阅 GitHub 问题。如果调用方法时允许该错误显现的特殊情况下,stratisd
的行为是未定义的。
许可
MPL 2.0。所有贡献都保留其原始作者的版权,但必须根据 MPL 2.0 许可才能合并。
依赖项
~0–13MB
~165K SLoC