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 的软件包压缩算法。
上述网站或 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 示例配置文件。