红帽工程师 Alexander Larsso 与 Giuseppe Scrivano 宣布开发一个新的 Linux 内核文件系统 “Composefs” ,Composefs 是一个新的机会共享(opportunistically-sharing)和可验证的只读文件系统。
简单来说,composefs 是一种构建和使用只读映像(read only images)的方法,这些映像的使用方式类似使用回环的 squashfs 映像。但除此之外,composefs 还有两个新的特性:它允许在映像之间共享文件数据(磁盘上和页面缓存中),其次它具有类似 dm-verity 的读取验证。
squashfs 是一套基于 Linux 内核的压缩只读文件系统,它可以将整个文件系统或者某个单一目录压缩成只读文件,然后存放在某个设备、分区或者普通的文件中。
如果你将该文件压缩到一个设备中,则可以将该映像 mount 起来使用,而如果它仅仅是个文件,则可以将其当成一个回环(loopback)设备使用。
目前 Composefs 有两个较为适合的初始用例,第一个是对 podman 容器层使用机会共享:使用 composefs 挂载作为覆盖挂载中的下层目录,上层目录是容器工作目录,Composefs 允许在任意两个映像之间自动共享文件级磁盘和页面缓存,而不受文件权限和时间戳、映像来源等细节的影响。
其次是在 ostree 项目中使用 composefs 的验证特性。Ostree 使用内容寻址对象存储,但它目前被硬链接场引用。在下载时,对象存储和引用它的树会需要签名和验证,但运行时不会有验证。如果用指向现有对象存储的 composefs 映像替换硬链接场,则可以实现运行时验证。
现在有六个 RFC 补丁实现了 Composefs 的内核驱动程序,而 Composefs 的用户空间工具则在 GitHub 上的 composefs 仓库进行开发。
更多细节可以查看公告邮件。