虚拟机克隆很慢的一种原因
故障现象
故障原因
解决方法
排查过程
查看磁盘IO
查看CPU和内存使用率
对比磁盘镜像的信息
原因分析
故障现象
研发部采购了一台新服务器,将老服务器上的虚拟机磁盘镜像通过scp拷贝过来,然后用virt-clone的命令克隆虚拟机时,发现克隆速度非常慢,要十几分钟,在老服务器上克隆只需两三分钟。这个虚拟机磁盘镜像的文件大小是120GB。
故障原因
经过排查后发现,新机器上的这个虚拟机镜像的实际占用空间是120GB,而老机器上的是5.5GB,新机器上克隆时每次都会调用qemu-img convert对镜像进行格式转换,这个过程非常慢。
解决方法
使用qemu-img convert把拷贝过来的镜像作一次格式转换,用转换后的镜像文件来替代它。命令如下:
排查过程
查看磁盘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.qcow2和du -sh /data/template.qcow2命令,发现在新老机器上du -sh显示的文件实际占用空间分别是120GB和5.5GB,使用qemu-img info /data/template.qcow2也可以查看镜像实际使用的disk size