7 个版本
0.6.4 | 2023 年 8 月 8 日 |
---|---|
0.6.3 | 2023 年 6 月 17 日 |
0.6.2 | 2023 年 2 月 24 日 |
0.6.0 | 2023 年 1 月 31 日 |
0.5.0 | 2022 年 6 月 16 日 |
#214 in 文件系统
4,525 每月下载量
用于 6 个 crates (4 直接)
1MB
22K SLoC
nydus-storage
Nydus Image Service 的核心存储子系统
- 从存储后端(如 Registry、OSS、S3、本地磁盘和文件系统等)获取 blob 对象。
- 按需从存储后端加载数据。
- 在本地存储上缓存 blob 对象。
支持
平台:
- x86_64
- aarch64
操作系统:
- Linux
- MacOS
许可协议
此代码根据 Apache-2.0 或 BSD-3-Clause 许可。
lib.rs
:
分块 blob 存储服务,支持 Rafs 文件系统。
Rafs 文件系统是一种基于 blob 的具有块去重功能的文件系统。一个 Rafs 文件系统由一个元数据 blob 和零个或多个数据 blob 组成。blob 只是一个包含数据块的普通对象存储。数据块可以通过内容校验值进行压缩、加密和去重。当使用 Rafs 文件系统作为容器镜像时,Rafs 元数据 blob 包含所有文件系统元数据,如目录、文件名、权限等。实际上,文件内容被分割成块并存储在数据 blob 中。Rafs 可以为每个容器镜像层构建一个数据 blob,也可以根据构建选项为整个镜像构建一个单一的数据 blob。
nydus-storage crate 用于管理和访问 Rafs 文件系统的分块 blob,它包含三个层次
公共 API 提供了几个核心抽象
- BlobInfo:提供有关blob的信息,通常从Rafs文件系统元数据的
blob数组
构建。 - BlobDevice:提供对Rafs文件系统所有blob的访问,这些blob由
BlobInfo
对象数组构建。 - BlobChunkInfo:提供关于数据块的信息,该数据块从Rafs元数据加载。
- BlobIoDesc:一个blob IO描述符,包含一个块内连续IO范围的有关信息。
- BlobIoVec:一个用于blob IO操作的分散/收集列表,包含一个或多个blob IO描述符。
要从Rafs文件系统中读取数据,Rafs文件系统驱动程序将准备一个BlobIoVec
对象,并将其提交给相应的BlobDevice
对象以执行实际的IO操作。
依赖项
~15-33MB
~572K SLoC