diff --git a/SUMMARY.md b/SUMMARY.md index a747cbf71fca1b26852f2739d5eb9b003fdb1e48..9c7708d7732947c932dca8a036b8f8086998fcc6 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -4,6 +4,7 @@ * [CentOS迁移](./centos_migration/README.md) * [云原生场景](./cloud_native/README.md) * [面向云原生生态的操作系统发行版 LifseaOS](./cloud_native/lifseaos.md) + * [跨云-边-端的只读文件系统 EROFS](./cloud_native/erofs.md) * [一云多芯硬件生态](./multi_arch/README.md) * [Intel SPR平台支持](./multi_arch/intel_spr_support.md) * [开源硬件 RISC-V 支持](./multi_arch/riscv.md) diff --git a/cloud_native/erofs.md b/cloud_native/erofs.md new file mode 100644 index 0000000000000000000000000000000000000000..0b0c3d5999de75b97b3aa2f9007819a434049e7f --- /dev/null +++ b/cloud_native/erofs.md @@ -0,0 +1,42 @@ +# 跨云-边-端的只读文件系统EROFS +tags: 云原生场景 + +## 背景介绍 + +在云原生、桌面、终端等应用领域,为了高效可信构建,分发和运行镜像,解决方案一般倾向选择只读方案,其优势在于分发和签名校验、写保护、器件故障可靠恢复等。通用文件系统如EXT4和XFS往往不能充分满足镜像极致大小,压缩,去重及可复现构建等需求,且通用文件系统冷门特性会增加格式复杂度,影响分发和执行环节的安全性和可控性,因此打造Linux下高性能自包含内核只读文件系统能更好地服务容器、终端、集群OS等业务场景。 + +## 技术方案 + +EROFS是为高性能只读场景量身打造的内核文件系统,提供了多层镜像、透明压缩、块去重、原生按需加载、FSDAX内存直接访问 +等特性,于Linux 5.4正式合入Linux主线。在容器镜像领域,通过与CNCF Dragonfly的Nydus镜像服务深度融合,打造了RAFSv6、FS-Cache等技术,服务容器runC、Kata等场景,未来还将发力page cache内存去重进一步提供内存超卖能力。在终端领域已成为Android Open Source Project推荐的系统分区文件系统格式。 + +技术优势: +- Linux内核原生,通过压缩,块去重,字节滚动压缩去重节省镜像存储空间; +- 原地解压等技术进一步优化运行态内存占用,提升性能; +- 提供内核原生按需加载能力,从源头解决FUSE额外拷贝和上下文切换开销。 + +应用场景:容器/App/系统镜像,软件包管理,AI数据分发,函数计算,机密计算,无盘启动,安装器等。 + +## 基于EROFS + FS-Cache优化Nydus镜像按需加载 + +EROFS over FS-Cache是龙蜥社区牵头为Nydus和EROFS开发的下一代容器镜像按需加载技术,同时也是Linux内核原生的镜像按需 +加载特性,于5.19合入内核社区主线。 + +该方案将按需加载的缓存管理通过FS-Cache框架下沉到内核态执行,当镜像已在本地缓存时,相比用户态方案可有效避免内核态/ +用户态上下文切换和内存拷贝;当缓存未命中时,再通知用户态通过网络获取数据,做到真正的“按需”,非按需场景下实现几乎无 +损的性能和稳定性。 + +![基于EROFS + FS-Cache优化Nydus镜像按需加载](../materials/imgs/cloud_native/erofs/erofs_over_fscache.png) + +在按需加载场景,EROFS over FS-Cache相比FUSE性能更优(注:数据为三次测试取平均值): + +| | OCI | EROFS + FUSE | EROFS + FS-Cache | +| ---- | ---- | ---- | ---- | +| wordpress E2E启动时间 | 11.562s | 5.263s | 4.619s | + +在非按需场景,EROFS over FS-Cache相比FUSE性能也更优: + +| | OCI | EROFS + FUSE | EROFS + FS-Cache | +| ---- | ---- | ---- | ---- | +| 本地cache 4K顺序读 | 387068KB/s | 211767 KB/s | 366291KB/s | +| 本地cache 4K随机读 | 6153KB/s | 5450KB/s | 6170KB/s | diff --git a/materials/imgs/cloud_native/erofs/erofs_over_fscache.png b/materials/imgs/cloud_native/erofs/erofs_over_fscache.png new file mode 100644 index 0000000000000000000000000000000000000000..8ad9a46a11460f6a2c5bc16ed98893b77386abe5 Binary files /dev/null and b/materials/imgs/cloud_native/erofs/erofs_over_fscache.png differ