探索CRFS:容器注册表文件系统
2024-05-22 18:21:47作者:温艾琴Wonderful
在现代云计算环境中,启动一个容器的速度至关重要。然而,现有的做法往往要求从容器注册表(如gcr.io)拉取整个镜像并在本地存储,导致速度受限于网络和磁盘I/O。为了解决这个问题,我们引荐一款名为CRFS的开源项目——Container Registry Filesystem。这是一个只读的FUSE文件系统,它允许您直接挂载并从容器注册表中运行容器镜像,而无需预先全部下载。
项目背景
传统的容器启动过程涉及从容器注册表下载整个镜像到本地硬盘,然后才能启动容器。对于大型镜像而言,这无疑增加了启动时间。相比之下,云提供商的虚拟机能够快速启动,即使镜像大小高达数百GB,这是因为他们利用了高效的内部网络进行按需读取。CRFS正是基于这样的理念设计,旨在通过按需读取网络中的镜像数据来加速容器启动。
技术创新:Stargz格式
CRFS的关键在于引入了一种新的文件格式——Stargz,这是一种可寻址的、压缩的tar文件。在Stargz中,每个文件都是独立的gzip流,允许对文件进行随机访问,而不必解压整个文件或遍历所有层。这样,即使在寻找特定路径下的小文件时,也能避免不必要的数据传输。
工作原理
当挂载一个图像时,CRFS会向容器注册表发起HTTP API请求以获取元数据和所有层的信息。然后,它只读取每个层末尾的Stargz索引。这些索引存储在内存中,提供readdir、stat等操作。文件数据读取则依赖于索引中的偏移量,可以高效地处理大文件的小范围读取。
应用场景
- 对快速启动大型容器有需求的环境,如持续集成与部署系统。
- 在资源有限的设备上运行容器,以减少本地存储占用。
- 需要节省带宽的企业网络,尤其是在跨国公司或远程办公室。
项目特点
- 实时性:仅需在启动时下载必要的部分,无需提前完整拉取镜像。
- 效率:利用Stargz索引实现高效的数据访问,减少网络延迟的影响。
- 兼容性:与现有容器运行时兼容,可以通过创建只包含元数据的镜像版本,结合CRFS运行。
- 轻量化:减少了对本地磁盘空间的需求,尤其适用于资源受限的环境。
CRFS是容器生态中的一次革新尝试,它将网络性能的优势引入到容器启动过程中,有望显著提升大规模容器集群的效率。如果你正在寻求优化你的容器基础设施,不妨试一试这个项目,并参与其社区讨论,共同推动其进一步发展。链接
登录后查看全文
热门项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0150- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
LongCat-Video-Avatar-1.5最新开源LongCat-Video-Avatar 1.5 版本,这是一款经过升级的开源框架,专注于音频驱动人物视频生成的极致实证优化与生产级就绪能力。该版本在 LongCat-Video 基础模型之上构建,可生成高度稳定的商用级虚拟人视频,支持音频-文本转视频(AT2V)、音频-文本-图像转视频(ATI2V)以及视频续播等原生任务,并能无缝兼容单流与多流音频输入。00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0111
项目优选
收起
暂无描述
Dockerfile
731
4.74 K
Ascend Extension for PyTorch
Python
610
794
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1 K
1.01 K
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
433
392
华为昇腾面向大规模分布式训练的多模态大模型套件,支撑多模态生成、多模态理解。
Python
145
237
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
1.16 K
150
暂无简介
Dart
983
252
Oohos_react_native
React Native鸿蒙化仓库
C++
348
401
昇腾LLM分布式训练框架
Python
166
198
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.67 K
987