需求說明:
爲了配合項目驗收,及驗保證收過程的流暢,現將原部署在一臺公網服務器的7臺kvm 虛擬機遷移至方便攜帶的線下(dell precision m6800/i7/32G/256SSD+2T)。
7臺kvm虛擬機中4臺是windows7,3臺是國產kylin,每臺都配有公網IP(目的是爲了遠程演示)。因爲項目代碼中IP被寫死,所以線下vm主機IP 必須使用原公網線上的IP地址;4 臺windows,和3臺kylin 位於不同的網段,示例:
3. 目前只有兩個網段,物理機windows7使用的是bridge模式,所以和工作工作站在一個網段,kylin使用的是nat模式,我創建了一個virbr0 網卡,讓kylin接入;
4. 當需要更多的網段時可以通過配置,來創建一個網絡;
實施步驟:
操作系統的安裝,kvm和libvirt的使用不在贅述,直接記錄遷移過程;
原鏡像的cp ,注意當cp 虛擬機的鏡像時,虛擬機一定要關機,否則鏡像無法使用(實際企業中,一般都採用的是較爲成熟的虛擬化產品,這些產品可以直接對虛擬機進行在線遷移,但是部署大多比較不方便,所以我使用最原始的方法-手動遷移這些虛擬機)
文檔側重點放在NAT上,主要是想NAT 主機能與Bridge 主機通信
可以看到這些主機正在運行狀態:我們需要關掉它們然後cp鏡像
這些鏡像足足有109G,cp 1個小時終於ok:
Cp 虛擬機的xml 文件;
這個xml 文件決定虛擬機的配置,內存,cpu,網絡,都有這個文件來控制;一般位於/etc/libvirt/qemu/這個位置;(不同的系統位置可能不同)
定義一個NAT網絡;
配置文件所在的目錄:/etc/libvirt/qemu/networks/,默認存在default,我們cp一份在其基礎上修改:
cd /etc/libvirt/qemu/networks/ cp default.xml kylin.xml vim kylin.xml <network> <name>kylin</name> <bridge name="virbr0" /> <forward/> <ip address="219.239.247.1"netmask="255.255.255.0"> <static> <range start="219.239.247.2" end="219.239.247.254" /> </static> </ip> </network>
解釋:
需要爲virbr0 配置一個地址,NAT模式內主機需要將網關設置爲該IP;
可以定義ip是dhcp還是static,默認是dhcp,我這樣它沒有報錯且能用,就當可以這樣改吧;
定義完成後保存退出wq:
可以先查看一下已經存在的nat網絡,這個default 網絡是默認就存在的,我現在刪掉它啓用我自己的,(也可以不刪)。
virsh net-undefinedefault (刪除default網絡命令)
現在再看已經沒有了
執行virsh net-define kylin.xml 發佈這個網絡;
但是狀態是無效的,我們啓動它;
可以看到已經啓動了;
還可以加入自動啓動免得每次開機都手動啓動
Autostart 位置已經是yes 狀態了;
通過brctl show 還可以看到br0 和virbr0的信息;說明我們的bridge和NAT 網絡都準備好了;bridge 網絡的配置,只需要修改網卡配置文件,然後重啓即可;
NAT網絡定義到此爲止;
配置虛擬機xml文件(重點2);
<interface type='network'> <mac address='52:54:00:62:5b:e6'/> <source network='kylin'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03'function='0x0'/> </interface>
虛擬機配置文件所在的目錄:/etc/libvirt/qemu
以上兩處是和bridge模式兩處不同的地方,注意source network 處應該寫網絡名,而不是像bridge 一樣寫網卡名;