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

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

故障现象

研发部采购了一台新服务器,将老服务器上的虚拟机磁盘镜像通过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文件中的空洞空间也当作了实际内容写入磁盘,导致磁盘文件实际大小变得非常大,在克隆时就非常慢。

猜你喜欢

转载自blog.csdn.net/huzhenwei/article/details/81633565