#nydus #blob #container-image #metadata #fuse #chunk #rafs

nydus-rafs

Nydus Image Service 的 RAFS 文件系统格式

7 个版本

0.3.2 2023年8月8日
0.3.1 2023年6月17日
0.2.2 2023年2月24日
0.2.0 2023年1月31日
0.1.0 2022年6月16日

#283 in 文件系统

Download history 1428/week @ 2024-03-14 1183/week @ 2024-03-21 1150/week @ 2024-03-28 915/week @ 2024-04-04 1142/week @ 2024-04-11 1357/week @ 2024-04-18 1061/week @ 2024-04-25 911/week @ 2024-05-02 1226/week @ 2024-05-09 1250/week @ 2024-05-16 1066/week @ 2024-05-23 1185/week @ 2024-05-30 1046/week @ 2024-06-06 1100/week @ 2024-06-13 1350/week @ 2024-06-20 830/week @ 2024-06-27

4,472 monthly downloads
用于 5 个 Crates (4 直接)

Apache-2.0 OR BSD-3-Clause

1.5MB
33K SLoC

nydus-rafs

为 Nydus Image Service 提供的 RAFS Fuse 文件系统。

支持

平台:

  • x86_64
  • aarch64

操作系统:

  • Linux
  • MacOS

许可证

此代码受 Apache-2.0BSD-3-Clause 许可证许可。


lib.rs:

RAFS:一个基于块的 dedup、按需加载、只读 fuse 文件系统。

Rafs 文件系统是一个基于块的只读文件系统,具有块 deduplication 功能。一个 Rafs 文件系统由一个元数据块和零个或多个数据块组成。一个块只是一个包含数据块的普通对象。数据块可以根据块内容摘要值进行压缩、加密和 deduplication。当 Rafs 文件用于容器镜像时,Rafs 元数据块包含所有文件系统元数据,例如目录、文件名、权限等。实际上,文件内容被分割成块并存储在数据块中。Rafs 可以为每个容器镜像层构建一个数据块,也可以根据构建选项构建一个包含整个镜像的单个数据块。

定义了几个版本的 Rafs 文件系统

  • V4:原始的 Rafs 文件系统格式
  • V5:基于 V4 优化的版本,具有元数据直接映射、数据预取等功能。
  • V6:重新设计的版本,以减少元数据块大小并与内核中 erofs 互操作,更好地支持 virtio-fs。

nydus-rafs 包依赖于 nydus-storage 包以访问元数据和数据块,并通过在本地存储上缓存数据来提高性能。nydus-rafs 本身包括两个主要子模块

  • fs:Rafs 的核心,用于连接 fuse、存储后端和文件系统元数据。
  • metadata:定义和访问 Rafs 文件系统元数据。

有关更多信息,请参阅 Dragonfly 图像服务

依赖项

~15–32MB
~513K SLoC