虚拟机克隆很慢的一种原因

本文介绍了一个关于虚拟机克隆速度显著降低的问题案例。在一个新服务器上使用virt-clone命令克隆虚拟机时,发现克隆速度比旧服务器慢很多。通过排查发现新旧服务器上虚拟机镜像的实际占用空间差异巨大,进一步分析得知原因是scp拷贝时包含了qcow2文件中的空洞空间。最终通过qemu-imgconvert命令对镜像进行格式转换解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虚拟机克隆很慢的一种原因

故障现象

研发部采购了一台新服务器,将老服务器上的虚拟机磁盘镜像通过scp拷贝过来,然后用virt-clone的命令克隆虚拟机时,发现克隆速度非常慢,要十几分钟,在老服务器上克隆只需两三分钟。这个虚拟机磁盘镜像的文件大小是120GB。

故障原因

经过排查后发现,新机器上的这个虚拟机镜像的实际占用空间是120GB,而老机器上的是5.5GB,新机器上克隆时每次都会调用qemu-img convert对镜像进行格式转换,这个过程非常慢。

解决方法

使用qemu-img convert把拷贝过来的镜像作一次格式转换,用转换后的镜像文件来替代它。命令如下:

# qemu-img convert -f qcow2 -O qcow2 /data/template.qcow2 /data/new-template.qcow2
# mv /data/new-template.qcow2 /data/template.qcow2
# virt-clone -o template -n new-host -f /data/new-host.qcow2

排查过程

查看磁盘IO

安装sysstat这个rpm包,在克隆时运行iostat -d 2命令,发现磁盘写入速度很低。但是将一个ISO光盘镜像文件复制到这个磁盘时,速度是150多MB每秒,说明磁盘IO没问题。

查看CPU和内存使用率

在克隆时使用top命令,发现内存buff/cached非常多,qemu-img进程消耗了较多的CPU,通过ps -ef | grep qemu-img可以看到进程详情,通过进程的PPID查到这个进程是virt-clone启动的。

对比磁盘镜像的信息

通过在新老机器上运行ls -lh /data/template.qcow2du -sh /data/template.qcow2命令,发现在新老机器上du -sh显示的文件实际占用空间分别是120GB和5.5GB,使用qemu-img info /data/template.qcow2也可以查看镜像实际使用的disk size。

原因分析

使用scp将镜像文件拷贝过来时,将qcow2文件中的空洞空间也当作了实际内容写入磁盘,导致磁盘文件实际大小变得非常大,在克隆时就非常慢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值