關於如何使用kvm虛擬化技術創建虛擬機,這里有一系列博客講的已經非常清楚了,這里不再贅述,不過其中有些小坑可能需要大家注意:
遵循上面的步驟之后,你很可能已經得到了自己在kvm上面的第一個虛擬機了,恭喜!!
那如果我要想創建第二個虛擬機呢?上面的流程再走一遍??要瘋啊!!
還好,我們還可以克隆clone一個kvm虛擬機出來,如下圖所示:
這里我們克隆出了一個新虛擬機,名字為node5.克隆命令為:
virt-clone -o node1 -n node5 -f /home/kvm/images/node5.img
其中-o node1參數制定了待克隆的老(old)虛擬機,-n node5制定了新(new)虛擬機的名字,-f參數指定了新虛擬機鏡像所在的位置。
是不是很簡單?
呃,it's not simple as that.
這里我們先查看一下新、老兩個虛擬機的配置文件,他們的默認位置在/etc/libvirt/qemu目錄下(注意,下面我以創建node4虛擬機時的截圖為例了)
可以很明顯的看出,新老兩個虛擬機配置文件的主要區別有以下幾點:
- 名字由node1變成了node4
- uuid變了
- 鏡像的路徑變了
- mac地址變了(這個很重要)
- vnc監聽參數變了,原來是有密碼的:passwd='123456',新創建的虛擬機默認沒有密碼(這個在后面通過vncviewer遠程連接虛擬機桌面的時候很重要)
我們待會要修改新虛擬機的配置信息時候也是從上面幾點出發的。
好了,啟動你的虛擬機吧:
virsh start node4
通過vncviewer連接到虛擬機桌面,此時一個很嚴重的問題來了,虛擬機連不上網!
嗯,敲個命令壓壓驚:
可以看到,/proc/net/dev文件顯示我們這時使用的是eth1端口,而/etc/sysconfig/network-scripts/下面只有ifcfg-eth0文件,沒有ifcfg-eth1文件!
查看下/etc/udev/rules.d/70-persistent-net.rules文件:
看上面的mac地址,eth0的mac地址就是我們diff命令中顯示的原虛擬機mac地址,而eth1的mac地址才是我們新虛擬機中的mac地址:
而ifcfg-eth0中的mac地址也是原虛擬機的mac地址(圍觀群眾:從原虛擬機拷貝過來的,廢話么,當然是原虛擬機地址)
那么問題來了,eth1網卡從哪來的?
原來系統檢測到的實際mac地址(也是就是新虛擬機的正確mac地址)與配置文件(ifcfg-eth0)中的MAC地址不一樣, 於是便有創建了一個新的網卡eth1,可eth1並沒有對應的配置文件指定其如何連接到網絡,於是eth1也是無法上網的,下面我們就對系統的這個“錯誤認知”做一下修正!
如果這時候使用service network restart或ifup eth0啟動eth0網卡,會告訴你eth0 device not found,原因就在於你的eth0網卡mac地址是錯的。
下面修改ifcfg-eth0文件內容,把mac地址和ip地址改過來:
再把/etc/udev/rules.d/70-persistent-net.rules文件中的eth0那一行刪掉,把eth1改成eth0,結果如下:
重啟網絡服務或者ifup eth0就好啦:
mac地址的問題解決之后,我們在修改下各個主機的主機名,和其對應的vnc監聽端口,一個個嶄新的新虛擬機就站在你的面前了,吼吼!!
修改主機名:
修改監聽端口(在宿主機的/etc/libvirt/qemu目錄下,如對於node4虛擬機,修改node4.xml即可,修改完后記得重啟宿主機):