1. 程式人生 > >解決VirtualBox巢狀虛擬化KVM子機啟動超慢的問題

解決VirtualBox巢狀虛擬化KVM子機啟動超慢的問題

      之前在virtualbox巢狀安裝KVM虛擬化的時候,使用VNC Viewer安裝子機的時候,速度還行,但是安裝系統後啟動子機的時候速度超慢。從啟動到出現登入介面大約需要二三十分鐘。該調整的都調整了,還把virtualbox升級到最新的5.0,還是不行。後來又發現如果使用預設的虛擬磁碟格式raw的話,系統會一次性將指定的磁碟大小全部分配出來,而使用qcow2的話,是動態分配虛擬磁碟大小。我就將現有的虛擬磁碟進行了一次轉換:

qemu-image convert -f raw -O qcow2 /kvm/vm/vm1.img /kvm/vm/vm1.qcow2

然後修改配置檔案:

virsh edit centos


<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/kvm/vm/vm1.qcow2'/>
      <target dev='hda' bus='ide'/>
</disk>

重啟libvirtd
service libvirtd restart
然後啟動虛擬機器
virsh start centos

監測後發現啟動時間用了十分鐘,比之前的少了一半的時間,不過還是有些慢

今天看銘哥之前發的一個比較詳細的KVM的帖子,最後一段克隆虛擬機器裡的配置檔案有一個修改磁碟介面的地方不是ide而是virtio。突然腦子靈光一現,會不會是介面的問題導致啟動速度慢呢?然後我就做了如下修改:

virsh edit centos
“centos”是虛擬機器的名稱

<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/kvm/vm/vm1.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</disk>
當時倒數都二行,我是刪除掉的,這一行是子系統啟動時系統自動寫入的。由此可見修改KVM硬體配置時,如果遭到address這一行不會寫的時候,可以直接把這行刪除掉,系統會自行分配相關的資訊給這個裝置。
個性後,儲存退出

重啟libvirtd
service libvirtd restart
然後啟動虛擬機器
virsh start centos

我監測了一下啟動,這次的啟動時間才4分多一點,如下圖:
 


總結一下,如果使用virtual box在虛擬機器裡做巢狀虛擬化實驗的話,在使用預設的配置安裝完系統後,還需要進行以下二步:
1,將現有的虛擬磁碟從raw格式轉換成qcow2格式
2,修改配置檔案中虛擬磁碟介面,將ide修改成virtio