虛擬機克隆很慢的一種原因

虛擬機克隆很慢的一種原因

故障現象

研發部採購了一臺新服務器,將老服務器上的虛擬機磁盤鏡像通過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文件中的空洞空間也當作了實際內容寫入磁盤,導致磁盤文件實際大小變得非常大,在克隆時就非常慢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章