思科推出适用于 Linux 内核的 PuzzleFS 文件系统

Cisco 提出了一种新的文件系统 PuzzleFS,作为 Linux 内核的模块实现,用 Rust 编写。 该文件系统旨在用于托管隔离的容器,并继续发展 Atomfs 文件系统中提出的想法。 该实现仍处于原型阶段,支持使用 rust-next Linux 内核分支进行构建,并在 Apache 2.0 和 MIT 许可证下开放。

该项目旨在绕过使用 OCI(开放容器倡议)格式的容器映像时出现的限制。 PuzzleFS解决了重复数据的高效存储、直接挂载能力、可重复的镜像构建和内存安全等问题。

为了对不同容器中重复的数据进行重复数据删除,可以使用 FastCDC(快速内容定义分块)算法,该算法的工作原理是将数据划分为任意大小的片段,并使用已处理片段的哈希值维护索引。 重复片段存储一次并为文件系统的所有层联合索引,即重复数据删除可以覆盖不同的挂载点(可以在现有的FS层的基础上启动新的FS层,并在重复数据删除时使用其中包含的数据碎片)。

容器镜像的重复组装是通过定义容器镜像格式的规范表示来实现的。 直接挂载允许您使用容器清单中内容的哈希值作为标识符,从全局共享存储挂载 OCI 容器映像,而无需先解压它。 为了在使用共享存储时验证数据完整性,可以使用 fs-verity 机制,该机制在访问文件时检查二进制索引中指定的哈希值与实际内容的对应关系。

选择 Rust 语言是因为它将生成的代码的高性能与安全使用内存的功能相结合,从而降低了因内存区域释放后访问内存区域和溢出缓冲区边界等问题而导致的漏洞风险。 使用 Rust 作为内核模块还可以在内核和用户空间组件之间共享代码以创建单个安全的实现。

该项目的其他目标包括:非常快速地构建和安装图像、使用可选中间阶段进行图像规范化的能力、使用多层结构时完整 mtree 样式文件树传递的可选性、casync 样式拼版变化和易于实施的架构。

来源: opennet.ru

添加评论