最新消息:本站介绍:国外VPS、云服务器,海外服务器,一手资源推荐平台

Red Hat开发人员正在开发新的Composefs文件系统

行业文章 快米云 来源:快米云 41浏览

Red Hat 开发人员正在开发新的 Composefs 文件系统

  • 开发人员正在研究 Composefs,这是一种构建和使用只读图像的方法。
  • Composefs 允许在图像之间共享文件数据,并且它具有类似 dm-verity 的读取验证。
  • 两人的目标是使用 composefs 挂载作为覆盖挂载中的下层目录,上层目录是容器工作目录。

Red Hat开发人员 Giuseppe Scrivano 和 Alexander Larsson首次介绍了一个新项目。Composefs 是一种构建和使用只读图像的新方法,这些图像的使用方式与用户使用方式类似,例如,环回安装的squashfs图像。

机会分享

Composefs 是一个原生的Linux文件系统,旨在帮助共享文件系统内容,并确保所述内容不被修改。Composefs 有两个基本特性。它允许在图像之间、磁盘上和页面缓存中共享文件数据,并且它具有类似 dm-verity 的读取验证。

当内核正在读取一个映像文件时,它包含有关目录和文件元数据的所有信息以及按名称对后备文件的引用,它实际上是在读取后备文件。由于支持文件是按内容寻址的,因此可以为多个图像共享对象目录。任何碰巧具有相同内容的文件都会被共享。该团队将此称为机会共享。

Alexander Larsson,Red Hat 高级首席软件工程师
Alexander Larsson,Red Hat 高级首席软件工程师

在验证期间,目标文件启用了 fs-verity,并且它们由它们的 fs-verity 摘要命名。生成的文件系统映像可以包含支持文件的预期摘要。如果文件系统是使用verity_check选项挂载的,那么当支持文件摘要不正确时,打开将失败。如果打开成功,则 fs-verity 将检测到任何其他磁盘文件更改。它保护现有的 fs-verity 功能以防止文件内容的更改,同时在其之上添加防止文件系统元数据和结构更改的保护。Red Hat 高级首席软件工程师 Alexander Larsson 说,

« 那么,我们为什么要这个?有两个初始用户案例。首先,我们要对 podman 容器层使用机会共享。这个想法是使用 composefs 挂载作为覆盖挂载中的下层目录,上层目录是容器工作目录。这将允许在任意两个图像之间自动共享文件级磁盘和页面缓存,而不受文件权限和时间戳以及图像来源等细节的影响。

其次,我们有兴趣在 ostree 项目中使用 composefs 的验证方面。Ostree 已经使用了内容寻址对象存储,但它目前被硬链接场引用。对象存储和引用它的树在下载时被签名和验证,但没有运行时验证。如果我们用指向现有对象存储的 composefs 图像替换硬链接场,我们可以使用验证来实现运行时验证。

事实上,创建 composefs 镜像的工具是完全可重现的,所以我们只需要将 composefs 镜像的 fs-verity 摘要添加到 ostree 提交元数据中。然后可以从 ostree 提交重建图像,生成具有相同 fs-verity 摘要的 composefs 图像。

这些是我们目前感兴趣的用例,但似乎还有很多其他可能的用途。例如,许多系统对图像使用环回挂载(如 lxc 或 snap),这些可以利用机会共享。我们还讨论了使用 fuse 为支持文件实现本地缓存。也就是说,你会有一个第二个 basedir 是一个 fuse 文件系统,并且在第一个 basedir 中查找失败时,fuse 一个触发下载,该下载也保存在第一个目录中以供以后查找。这里有很多有趣的可能性。»

用户空间工具

目录 tools/ 包含一些用户空间工具,用于创建二进制 blob 以传递给客户端。它们都是实验性的,缺乏文档。

  • mkcomposefs:在给定目录路径名的情况下创建一个 composefs 图像。还可以计算摘要并创建内容存储目录。
  • writer-json:将 CRFS 元数据文件转换为二进制 blob。
  • dump:打印二进制 blob 的内容。
  • ostree-convert-commit.py:将 OSTree 提交转换为 writer-json 可以使用的 CRFS 配置文件。

内核模块

如何建造:

make -C $KERNEL_SOURCE modules M=$PWD && make -C $KERNEL_SOURCE modules_install M=$PWD
insmod /lib/modules/$(uname -r)/extra/composefs.ko

加载后,它可以用作:

mount /path/to/blob -t composefs -o basedir=$BASE_DIR /mnt

安装选项:

  • basedir:是在解析相对内容路径时用作基础的目录。
  • verity_check=0,1,2:何时验证支持文件 fs-verity:0 == 从不,1 == 如果在图像中指定,2 == 始终并在图像中需要它。
  • digest:图像文件必须匹配的 fs-verity sha256 摘要。如果设置,verity_check 默认为 2。

转载请注明:VPS资讯_海外云服务器资讯_海外服务器资讯_IDC新闻 » Red Hat开发人员正在开发新的Composefs文件系统