searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

containerized-data-importer虚拟机镜像转换解析

2023-10-17 07:11:40
28
0

准备工作

镜像压缩参考

镜像文件大小

获取官网KVM镜像,通过转换的方式得到所有镜像

转换命令

raw → qcow2

qemu-img convert -O qcow2 image.img image.qcow2

qcow2 → raw

qemu-img convert -O qcow2 image.qcow2 image.img

镜像文件大小如下列表

  centos ubuntu windows
qcow2 897M 300M 11G
qcow2(gz) 371M 294M 6.1G
qcow2(xz) 261M 294M 4.8G
raw 8.0G 2.2G 12G
raw(gz) 373M 279M 6.1G
raw(xz) 263M 186M 4.8G

 

kubevirt虚机镜像转换流程

kubevirt在运行虚机镜像前,会运行containerized-data-importer pod将镜像转换成raw格式并导入PVC生成DataVolume。

importer通过获取镜像源的不同方式来配置不同的流程,有HTTPDataSource/ImageioDataSource/RegistryDataSource/S3DataSource/VDDKDataSource等多种方式,最常用的方式是HTTPDataSource,我们也是使用这种方式导入的镜像。阅读源码,这里将HTTP源转换的方式通过流程图展示(v1.52版本,旧版本略有不同):

可知raw和qcow2格式分别流程:

qcow2:开始→convert→resize→结束

raw:开始→convert→resize→结束

观察转换流程,对镜像镜像压缩可能可以节省资源,流程分别为:

qcow2(zx/gx):开始→transferScratch→convert→resize→结束

raw(zx/gx):开始→transferDataFile→resize→结束

最终目标文件/data/disk.img(文件系统),/dev/cdi-block-volume(块设备),对应转换的源码这里:

centos镜像cdi-importer转换测试

  raw(xz) raw qcow2 qcow2(xz)
时间 55s 85s 17s 31s
CPU(峰值) 23% 25.2% 12.9% 14.2%
内存(峰值) 0.1% 0.1% 0.1% 0.1%
文件大小 263M 8G 897M 261M

ps:

1. xz文件压缩时需要注意将文件分为多个块,因为读取xz文件的原理是将一块读入内存解压,并且cdi-importer有最大块限制,会报错,具体可参考
2. 实际测试v1.41版本importer无论是qcow2还是raw格式都需要经过转换

0条评论
0 / 1000
田红艳
3文章数
1粉丝数
田红艳
3 文章 | 1 粉丝
田红艳
3文章数
1粉丝数
田红艳
3 文章 | 1 粉丝
原创

containerized-data-importer虚拟机镜像转换解析

2023-10-17 07:11:40
28
0

准备工作

镜像压缩参考

镜像文件大小

获取官网KVM镜像,通过转换的方式得到所有镜像

转换命令

raw → qcow2

qemu-img convert -O qcow2 image.img image.qcow2

qcow2 → raw

qemu-img convert -O qcow2 image.qcow2 image.img

镜像文件大小如下列表

  centos ubuntu windows
qcow2 897M 300M 11G
qcow2(gz) 371M 294M 6.1G
qcow2(xz) 261M 294M 4.8G
raw 8.0G 2.2G 12G
raw(gz) 373M 279M 6.1G
raw(xz) 263M 186M 4.8G

 

kubevirt虚机镜像转换流程

kubevirt在运行虚机镜像前,会运行containerized-data-importer pod将镜像转换成raw格式并导入PVC生成DataVolume。

importer通过获取镜像源的不同方式来配置不同的流程,有HTTPDataSource/ImageioDataSource/RegistryDataSource/S3DataSource/VDDKDataSource等多种方式,最常用的方式是HTTPDataSource,我们也是使用这种方式导入的镜像。阅读源码,这里将HTTP源转换的方式通过流程图展示(v1.52版本,旧版本略有不同):

可知raw和qcow2格式分别流程:

qcow2:开始→convert→resize→结束

raw:开始→convert→resize→结束

观察转换流程,对镜像镜像压缩可能可以节省资源,流程分别为:

qcow2(zx/gx):开始→transferScratch→convert→resize→结束

raw(zx/gx):开始→transferDataFile→resize→结束

最终目标文件/data/disk.img(文件系统),/dev/cdi-block-volume(块设备),对应转换的源码这里:

centos镜像cdi-importer转换测试

  raw(xz) raw qcow2 qcow2(xz)
时间 55s 85s 17s 31s
CPU(峰值) 23% 25.2% 12.9% 14.2%
内存(峰值) 0.1% 0.1% 0.1% 0.1%
文件大小 263M 8G 897M 261M

ps:

1. xz文件压缩时需要注意将文件分为多个块,因为读取xz文件的原理是将一块读入内存解压,并且cdi-importer有最大块限制,会报错,具体可参考
2. 实际测试v1.41版本importer无论是qcow2还是raw格式都需要经过转换

文章来自个人专栏
云原生
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0