龙蜥社区首次突破!高性能存储 SIG 现身 LSF/MM/BPF 2023 分享 EROFS 的演进路线

简介: Gao Xiang 在 LSF/MM/BPF 会议中做了 EROFS 文件系统的介绍:EROFS 已成为安卓系统分区推荐方案,目前它越来越不局限于原始目标场景,不断突破自身应用边界。例如,在龙蜥社区合作伙伴的努力下,EROFS 的容器镜像场景也有许多应用落地。

// 本文转载自 Linux 社区的权威媒体 LWN.net。原文:LSF/MM/BPF 2023:EROFS 介绍及讨论


近日,在 2023 Linux Storage, Filesystem, Memory-Management and BPF Summit 的文件系统会议上,龙蜥社区高性能存储 SIG 成员 Gao Xiang 介绍了增强型只读文件系统 (EROFS, Enhanced Read-Only File System)[1]。EROFS 文件系统在 2019 年正式引入到 Linux 5.4 中,作为 Android 和嵌入式设备的文件系统用于各大终端厂商中。目前它越来越不局限于原始目标场景,不断突破自身应用边界,辐射全栈业务场景。例如,基于 EROFS 的容器镜像方案(container image)有许多应用落地。


值得一提的是,龙蜥社区联合阿里云、蚂蚁集团和字节跳动等厂商首次将 EROFS 文件系统结合 Dragonfly Nydus 镜像加速运用在容器镜像场景中。龙蜥 ANCK 内核已支持 EROFS 文件系统,并针对下一代容器镜像项目 Nydus 做了大量优化,未来会辐射到更多云边端场景。


Gao Xiang 表示,EROFS 是一个基于块单位的只读文件系统,格式可以非常灵活的集成到 Composefs 或者 Nydus 中,这也有利于可重复性构建(reproducible builds)。过去内核只读文件系统诸多限制,例如,它们没法在非压缩和性能要求很高的场景下进一步提升效率,这是最初开发 EROFS 的原因之一。EROFS 存储(元)数据时是按 block 对齐的(block-aligned),这非常适合 page cache 相关的优化,这种对齐方式还可以结合 Direct I/O 和 DAX [2] 直接内存访问来进行数据访问,这极大的提高了 Linux 数据的访问效率

(图/龙蜥社区高性能存储 SIG 成员 Gao Xiang 于LSF/MM/BPF 2023 峰会上介绍 EROFS)


SquashFS 是另一个只读文件系统,但它不会以 block-aligned 的方式存储其压缩数据,这会增加元数据的 I/O 开销。EROFS 会把数据压缩并对齐存储到文件系统的 block 中(注,EROFS块大小通常为4k,压缩单位 pcluster 可以是 4k 的整数倍),而 SquashFS 将原始数据按照固定大小(例如 128k)来压缩。另外,与EROFS不同,SquashFS 磁盘格式不允许目录随机访问,这意味着 SquashFS 总是需要对目录项进行线性搜索(linear search),运行效率相对受限。


使用文件系统来替换 tar 或 cpio 归档格式,也是 EROFS 的一个潜在用法,使用 EROFS 的外来不可信镜像(untrusted images) 挂载到主机相比 Ext4/XFS 也更安全。最近机密容器社区(CoCo)Azure 递交了内核 tarfs 文件系统提案[3],这允许 guest 虚拟机直接挂载增强后的 tar 文件。Gao Xiang 表示,在这种场景下, EROFS 或许是一个更好的选择。有一个概念验证性质的 patch set,允许使用 EROFS 直接 mount 人们下载的 tar 文件,这比将整个 tarball 解包到其他文件系统中(例如 ext4 文件系统)再将其挂载到 guest 中要好。


然而,以上这种方法仍然存在问题,比如使用相同 tar 文件的在不同虚拟机 guest 间不能进行 page cache 级别的共享。社区专家 Aleksa Sarai 同意这存在问题,但认为只要不用 tar 归档来作为底层格式就可以更加容易地解决这个问题,以及造成的一系列其他问题。他还说,EROFS 比现在方式要好,他认为还是需要把容器镜像中的 tar 格式替换掉。


目前有很多努力来优化镜像的布局,而这些努力仅仅是因为需要使用 tar 格式。“在我看来,这根本不合理,” Sarai 这样说。社区需要停止花费如此多的精力来解决 tar 格式带来的限制。系统上的 guest 中可能有 500 个 bash 实例,但它们不能以基于 tar 的格式共享相同的 inode,因此它们被视为不同的文件。但是 tar 格式还是需要继续得到支持,所以需要一个兼容的解决方案,Gao Xiang 表示。


Gao Xiang 继续介绍 EROFS 文件系统的功能,包括对文件数据 chunk-based 去重的能力,这块典型的用例是那些将 EROFS 与 Dragonfly image service (Nydus)[4] 结合在一起使用的系统。EROFS 可以有选择的分别对每个文件使用 LZ4 或者 LZMA 来进行压缩,以适应不同的数据访问模式,相比其他方案,EROFS 对较小的压缩单位进行了大量优化,使用较小的压缩单位可以减少 SquashFS 发生的内存放大(memory amplification)问题,压缩数据也可以在page cache 就地解压缩以减少额外的复制和内存分配。


EROFS 在压缩数据处理上,由于原始数据是字节粒度切片的,相比 Squashfs 和Btrfs、F2FS 等其他压缩文件系统,EROFS 文件系统在 Linux 6.1 实现了滚动哈希(rolling hash) 的内容定义的分块(content defined chunking)来支持压缩去重,这相比传统文件系统的对齐块去重在文本等数据集上有更明显的去重优势。


EROFS 的最新使用场景有三种基本形式。第一种是 EROFS 全镜像,它们可以以压缩形式使用,以牺牲某些性能为代价来节省空间,或者采用未压缩的方式在在具有 DAX 或 FS cache 特性的 guest/容器之间共享;第二种是仅有元数据的 EROFS 镜像,文件数据引用别的外部来源,例如 tar 存档或其他二进制格式;第三种是将 EROFS 与 overlayfs 配合使用,如之前讲到的 composefs 中所说的 [5]。


使用 EROFS 可能会提高机器学习数据集的访问性能,Gao Xiang 表示。这些数据集通常在单个目录中有数百万个小文件。训练过程需要读取整个目录并从列表中随机选择文件。由于 EROFS 布局很紧凑,它在这类负载中可能比 Ext4 快两倍。


会议快结束时,大家讨论了如何使用 clone-file-range ioctl() 操作对文件进行 overlayfs 的 copy_up [6] 操作。访问底层文件进行写入时需要执行 copy_up,文件在修改之前会被复制到更高层。如果这些层是来自同一文件系统的 loopback-mount 方式挂载的文件,则可以进行 copy-on-write 操作。社区专家  Amir Goldstein 似乎认为这样做是可行的,并且会很有用,但要实现这一目标还需要做一些工作。

(图/LSF/MM/BPF 2023 现场嘉宾合照)

[1] https://docs.kernel.org/filesystems/erofs.html 

[2] https://www.kernel.org/doc/Documentation/filesystems/dax.txt

[3] https://github.com/confidential-containers/community/issues/66

[4] https://github.com/dragonflyoss/image-service

[5] https://lwn.net/Articles/933616/ 

[6] https://docs.kernel.org/filesystems/overlayfs.html#non-directories

—— 完 ——

加入龙蜥社群

加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。

关于龙蜥

龙蜥社区是立足云计算打造面向国际的 Linux  服务器操作系统开源根社区及创新平台。龙蜥操作系统(Anolis OS)是龙蜥社区推出的 Linux 发行版,拥有三大核心能力:提效降本、更加稳定、更加安全。

目前,Anolis OS 8.8 已发布,更多龙蜥自研特性,支持 X86_64 、RISC-V、Arm64、LoongArch 架构,完善适配 Intel、兆芯、鲲鹏、龙芯等芯片,并提供全栈国密支持。

加入我们,一起打造面向云时代的操作系统!

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
3月前
|
人工智能 Cloud Native 大数据
操作系统新浪潮问题之龙蜥社区SIG的主要创新前沿领域内容如何解决
操作系统新浪潮问题之龙蜥社区SIG的主要创新前沿领域内容如何解决
31 0
|
5月前
|
传感器 物联网 Linux
在物联网城,Linux先生与RTOS小姐分别代表两种操作系统,展开激烈角逐
【6月更文挑战第4天】在物联网城,Linux先生与RTOS小姐分别代表两种操作系统,展开激烈角逐。Linux以其开源、功能丰富及强大计算能力,适用于需要复杂处理的设备,如智能温控器。而RTOS以实时性、小巧高效,擅长资源有限、强调实时响应的设备,如生产线控制系统。设备制造商需根据需求选择适合的操作系统,以实现设备智能化和生活便捷化。物联网世界的竞争,最终服务于让设备更智能、生活更美好的目标。
70 2
|
安全 网络协议 Linux
|
Rust JavaScript 前端开发
带你读《2022龙蜥社区全景白皮书》——5.1.3 龙芯自主指令级的支持
带你读《2022龙蜥社区全景白皮书》——5.1.3 龙芯自主指令级的支持
177 5
|
Cloud Native 网络协议 安全
高性能网络 SIG 月度动态:再获认可!3 位成员成为 Linux 内核社区 reviewer
高性能网络 SIG 月度动态送达,一键了解 6 月各项目进展。
高性能网络 SIG 月度动态:再获认可!3 位成员成为 Linux 内核社区 reviewer
|
敏捷开发 测试技术 Linux
带你读《2022龙蜥社区全景白皮书》——5.2.2 面向芯片研发和验证的操作系统SiliconFastOS
带你读《2022龙蜥社区全景白皮书》——5.2.2 面向芯片研发和验证的操作系统SiliconFastOS
163 2
|
网络协议 Cloud Native NoSQL

热门文章

最新文章

下一篇
无影云桌面