Cinder backup 支持现代压缩算法

https://blueprints.launchpad.net/cinder/+spec/support-modern-compression-algorithms-in-cinder-backup

此蓝图建议在 cinder backup 中添加对现代压缩算法(如 zstd)的支持。

问题描述

目前 cinder backup 在备份和恢复操作期间仅支持 gzip 和 bzip2 来压缩/解压缩卷数据。

它应该支持其他压缩算法,因为压缩效率完全取决于云提供商的环境和选择。有些人可能希望牺牲压缩比来获得更快的压缩速度,因此为了向云提供商提供更多选择,添加对其他算法(如 zstd)的支持将是好的。

Zstandard(zstd) 具有较高的压缩比(与 zlib 相当),且速度非常快。它现在被用作 Arch Linux 的软件包压缩算法。

https://fbdocs.cn/zstd/

上述网站或 lzbench 网站上提供了一些通用的基准测试结果。

https://github.com/inikep/lzbench/

用例

  • 具有高速压缩算法的 Cinder backup

提议的变更

  • 在 requirements.txt 中添加 zstd 算法包的详细信息。

  • 在 cinder backup 的获取压缩器例程中添加对 zstd 算法的支持。

备选方案

无。

数据模型影响

无。

REST API 影响

无。

安全影响

无。

通知影响

无。

其他最终用户影响

无。

性能影响

  • Cinder backup 和恢复操作速度更快。

  • 备份数据的大小可能大于 zlib 或 bz2 压缩算法(取决于数据卷的内容)

  • 我所做的简单性能测试结果

    • 服务器规格:8 核 CPU,16GB 内存

    • 备份存储是本地主机的 NFS 后端(即,小的网络瓶颈)

    • 备份/恢复从 Windows 镜像(qcow2 12001017856 字节)创建的 16GB 卷

    • 测量备份/恢复时间、备份数据大小以及与 qcow2 的大小比(考虑为卷中近似的数据量)。所有值越小越好。

    • 除 zstd 以外的算法的 CPU 使用率约为 100% 到 110%(即,仅使用一个核心)。最大使用率是 800%(= 8 核 * 100%)。

    • zstd 的 CPU 使用率约为 80% 到 400%(利用多核)。

    • 如果卸载到硬件,像 gzip 这样的著名算法可能会表现更好。

算法

备份时间(秒)

恢复时间(秒)

大小(字节)

与 qcow2 (%)

205.8

109.2

17218167818

143.5

gzip

743.2

141.5

6658990044

55.5

bz2

2102.5

742.2

6480248772

54.0

zstd(待添加)

196.2

100.2

6286227236

52.4

lz4(供参考)

211.0

113.0

7903490364

65.9

其他部署者影响

要使用 zstd 压缩算法,需要 python 模块 zstd

开发人员影响

无。

实现

负责人

主要负责人:Kazufumi Noto

其他贡献者:无

工作项

  • 将包的详细信息添加到 cinder/requirements.txt。

  • 实现代码以添加对 zstd 压缩的支持。

  • 需要更新文档以反映添加的支持。

  • 添加测试用例以使用 zstd 压缩创建备份。

依赖项

测试

  • 将添加单元测试以使用 zstd 压缩创建备份。

文档影响

需要更新以下文档以反映添加的支持

  • 配置参考中的 cinder 示例配置文件。

参考资料