为 Linux 提出的 Composefs 文件系统

在 Red Hat 工作的 Flatpak 的创建者 Alexander Larsson 提出了为 Linux 内核实现 Composefs 文件系统的补丁的初步版本。 建议的文件系统类似于 Squashfs,也适合以只读模式挂载映像。 差异归结于 Composefs 有效共享多个已安装磁盘映像内容的能力以及对可读数据身份验证的支持。 Composefs 可能有用的一些应用领域包括安装容器映像和使用类似 Git 的 OSTree 存储库。

Composefs 使用基于内容的存储模型,即主要标识符不是文件名,而是文件内容的哈希值。 该模型提供重复数据删除功能,并允许您实际仅存储在不同安装分区上找到的相同文件的一份副本。 例如,容器镜像包含许多常见的系统文件,如果使用Composefs,这些文件中的每一个都将被所有挂载的镜像共享,而不需要使用硬链接转发等技巧。 在这种情况下,共享文件不仅作为一份副本存储在磁盘上,而且还占用页面缓存中的一个条目,从而可以节省磁盘和 RAM。

为了节省磁盘空间,数据和元数据在安装的映像中是分开的。 安装时请注明:

  • 包含所有文件系统元数据、文件名、权限和其他信息(不包括实际文件内容)的二进制索引。
  • 存储所有已安装映像的文件内容的基本目录。 文件的存储与其内容的哈希相关。

为每个文件系统映像创建一个二进制索引,并且所有映像的基目录都相同。 为了在共享存储条件下验证单个文件和整个镜像的内容,可以使用 fs-verity 机制,该机制在访问文件时,检查二进制索引中指定的哈希值与实际内容的对应关系(即,如果攻击者对基目录中的文件进行更改或因故障而损坏数据,这样的协调将揭示差异)。

来源: opennet.ru

添加评论