kvm網卡eth0
1. linux KVM中復制虛擬機後eth0變成eth1問題
linux
KVM中復制虛擬機後eth0變成eth1問題當克隆或者重裝虛擬機後,再啟動系統時會發現系統下不再有eth0,而變成了eth1,當使用/etc/init.d/network重啟網路時,會提示找不到設備eth0及eth1的啟動腳本。做以下改動:/etc/sysconfig/network-scripts/ifcfg-eth0重命名為/etc/sysconfig/network-scripts/ifcfg-eth1/etc/init.d/network
restart
提示找不到eth0發現腳本中的device一項沒有改過來,將其改為eth1(或者刪掉)/etc/init.d/network
restart
提示網卡的物理地址不匹配/etc/sysconfig/network-scripts/ifcfg-eth0中的mac地址為原來eth0網卡的物理地址,而虛擬機為eth1分配新的物理地址,故啟動腳本中的信息與實際信息時不匹配的,將MAC的地址信息從腳本中刪除,再次重啟網路,OK!為什麼原來的eth0會變成eth1?很多linux
distribution使用udev動態管理設備文件,並根據設備的信息對其進行持久化命名。udev會在系統引導的過程中識別網卡,將mac地址和網卡名稱對應起來記錄在udev的規則腳本中。而對於新的虛擬機,VMware會自動為虛擬機的網卡生成MAC地址,當你克隆或者重裝虛擬機軟體時,由於你使用的是以前系統虛擬硬碟的信息,而該系統中已經有eth0的信息,對於這個新的網卡,udev會自動將其命名為eth1(累加的原則),所以在你的系統啟動後,你使用ifconfig看到的網卡名為eth1。如何把名字改回eth0?在fedora
11中,udev記錄網路規則的腳本為:/etc/udev/rules.d/70-persistent-net.rules打開該文件,這時你會發現,裡面有eth0,eth1兩個網卡的信息,但實際上你ifconfig時只能發現eth1一個網卡的信息,這時因為eth0根本就不存在。將其中eth0的信息刪掉,並將eth1信息中的設備名改為eth0,重啟系統,你看到的網卡就是eth0了,或者刪掉其中所有的信息重啟系統udev會幫你發現新的設備的。
2. 怎樣修改網卡linux的名字為eth0
linux可通過以下步驟修改網卡名稱:1、修改/etc/udev/rules.d/70-persistent-net.rules,將eth0 改為em1,將eth1 改為em2,注意:只需要修改name即可,不需要修改kernel;2、重命名網卡配置文件,需要ifcfg-eth0文件重命名為ifcfg-em1,需要ifcfg-eth1文件重命名為ifcfg-em2,mv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-em1mv /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-em23、編輯網卡配置文件,將名稱修改過來,並把uuid刪除(如沒有就不用),重啟伺服器,重啟之後網卡名稱已經修改過來,網路正常。
3. 內核識別出網卡,/dev沒有eth0,怎麼辦
1、用ifconfig eth0 up命令開啟下網卡。
#ifconfig eth0 up
2、更改eth0配置:
#vi/etc/sysconfig/network-scripts/ifcfg-eth0下顯示:
DEVICE=eth0
ONBOOT=no //開機啟動網卡
BOOTPROTO=static
IPADDR=192.168.1.8 //自己設置有效ip地址
NETMASK=255.255.255.0 //子網掩碼
GATEWAY=192.168.1.1 //有效網關地址
HWADDR=00:0C:29:96:38:F8
注意其中的ONBOOT=no將其改為yes,網卡激活。
3、重啟服務。
#service network restart
重啟後配置生效。
4. kvm虛擬機啟動之後如何配置IP地址
linux系統安裝完成後啟動網卡會自動獲取一個ip。
如果需要靜態ip,則需要用vim 編輯器修改配置文件,重啟網路後生效。
#vim /etc/sysconfig/network-script/ifcfg-eth0
然後對網卡文件修改
DEVICE=eth0 #物理設備名
IPADDR=192.168.1.100 #IP地址
NETMASK=255.255.255.0 #掩碼值
NETWORK=192.168.1.0 #網路地址(可不要)
BROADCAST=192.168.1.255 #廣播地址(可不要)
GATEWAY=192.168.1.1 #網關地址
ONBOOT=yes # [yes|no](引導時是否激活設備)
USERCTL=no #[yes|no](非root用戶是否可以控制該設備)
BOOTPROTO=static #[none|static|bootp|dhcp](引導時不使用協議|靜態分配|BOOTP協議|DHCP協議)
5. CentOS 6.5 KVM虛擬機中怎麼樣設置橋接模式網卡
虛擬機安裝完成之後,在 本機網路設置裡面出現 兩個網卡VMware Network Adapter VMnet1和VMware Network Adapter Vmnet8。聯網用Vmnet8.
設置連接網路用的網卡,我用的無線上網所以我設置無線網卡,紅色框中Vmware Bridge Protocol 前 打 勾。
1,設置網路連接 共享屬性 在家庭網路連接中 選擇 VMnet8,之後再前面打勾。確定。
,2,查看本機網路連接的IP 並設置Vmarenet8的IP。
例子: 假如本機IP 為 192.168.1.100,那麼Vmarenet8的IP 為 192.168.1.1 掩碼相同,網關設置為 192.168.1.x,x可以為2-254任意數,但是越小越好。
注意:要在屬性設置裡面Vmware Bridge Protocol 前面打鉤。
本機網路設置完成。下面開始設置虛擬機網路設置。
點開虛擬機,在菜單項裡面 點 編輯===》虛擬網路編輯器,設置Vmnet0 橋接模式
橋接模式設置完成後,設置Vmnet8, NAT模式,看圖
應用之後,點下 NAT設置看一下,和在本機VMware Network Adapter VMnet8設置的網關相同,點擊確定。
虛擬機上Linux系統setting 設置。在虛擬機菜單下選擇你要設置的系統
右鍵-->設置setting。設置網卡連接方式
進入系統 進行系統里的網路設置
系統設置system --> 首選項preference--> 網路設置Network Connections
選擇System eth0,點擊Edit編輯
設置完成後 需要在終端teminal上 進行重啟網卡。
用service network restart 重啟
1, 重啟之後,查看網路配置Vim /etc/sysconfig/network-scripts/ifcfg-eth0查看並可以編輯。
[root@centos ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
打開文件,修改以下內容並保存
DEVICE=eth0#對應第一張網卡
TYPE=Ethernet
ONBOOT=yes#是否啟動時運行
NM_CONTROLLED=yes
BOOTPROTO=dhcp ip獲得方式有none,dhcp分配ip
static靜態的ip。看設置ip時,是自己添加
ip-static還是分配ip-dhcp
自己添加ip時下面會顯示ip地址,網關,子網掩碼
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"#名稱
HWADDR=00:0C:29:60:2E:17 #必須對應etho是的MAC地址
(/etc/udev/rules.d/70-persistent-net.rules)
PEERDNS=yes PEERROUTES=yes
IPADDR=192.168.1.45#指定本機IP地址
NETMASK=255.255.255.0 #指定子網掩碼
GATEWAY=192.168.1.1 #指定網關
2, 退出來,在重啟一遍網卡 service network restart。
3, 這時就可以連接網路了。
6. CentOS 6.5 KVM虛擬機中怎麼樣設置橋接模式網卡
虛擬機安裝完成之後,在
本機網路設置裡面出現
兩個網卡VMware
Network
Adapter
VMnet1和VMware
Network
Adapter
Vmnet8。聯網用Vmnet8.
設置連接網路用的網卡,我用的無線上網所以我設置無線網卡,紅色框中Vmware
Bridge
Protocol
前
打
勾。
1,設置網路連接
共享屬性
在家庭網路連接中
選擇
VMnet8,之後再前面打勾。確定。
,2,查看本機網路連接的IP
並設置Vmarenet8的IP。
例子:
假如本機IP
為
192.168.1.100,那麼Vmarenet8的IP
為
192.168.1.1
掩碼相同,網關設置為
192.168.1.x,x可以為2-254任意數,但是越小越好。
注意:要在屬性設置裡面Vmware
Bridge
Protocol
前面打鉤。
本機網路設置完成。下面開始設置虛擬機網路設置。
點開虛擬機,在菜單項裡面
點
編輯===》虛擬網路編輯器,設置Vmnet0
橋接模式
橋接模式設置完成後,設置Vmnet8,
NAT模式,看圖
應用之後,點下
NAT設置看一下,和在本機VMware
Network
Adapter
VMnet8設置的網關相同,點擊確定。
虛擬機上Linux系統setting
設置。在虛擬機菜單下選擇你要設置的系統
右鍵-->設置setting。設置網卡連接方式
進入系統
進行系統里的網路設置
系統設置system
-->
首選項preference-->
網路設置Network
Connections
選擇System
eth0,點擊Edit編輯
設置完成後
需要在終端teminal上
進行重啟網卡。
用service
network
restart
重啟
1,
重啟之後,查看網路配置Vim
/etc/sysconfig/network-scripts/ifcfg-eth0查看並可以編輯。
[root@centos
~]#
vim
/etc/sysconfig/network-scripts/ifcfg-eth0
打開文件,修改以下內容並保存
DEVICE=eth0#對應第一張網卡
TYPE=Ethernet
ONBOOT=yes#是否啟動時運行
NM_CONTROLLED=yes
BOOTPROTO=dhcp
ip獲得方式有none,dhcp分配ip
static靜態的ip。看設置ip時,是自己添加
ip-static還是分配ip-dhcp
自己添加ip時下面會顯示ip地址,網關,子網掩碼
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System
eth0"#名稱
HWADDR=00:0C:29:60:2E:17
#必須對應etho是的MAC地址
(/etc/udev/rules.d/70-persistent-net.rules)
PEERDNS=yes
PEERROUTES=yes
IPADDR=192.168.1.45#指定本機IP地址
NETMASK=255.255.255.0
#指定子網掩碼
GATEWAY=192.168.1.1
#指定網關
2,
退出來,在重啟一遍網卡
service
network
restart。
3,
這時就可以連接網路了。
7. KVM實例總結
{% note success %} poetry
<center style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0px;">往事越千年,魏武揮鞭,東臨碣石有遺篇。蕭瑟秋風今又是,換了人間。 {% endnote %}</center>
kvm創建虛擬機的根本在於這樣一條命令, virsh define vm-template.xml ,這條命令的核心就是創建一個虛擬機,之後或者之前的內容都是圍繞著這條命令和這個虛擬機的。
所以,virsh define vm-template.xml 其本質是在安全可靠的前提下,將母機的資源通過kvm虛擬化的形式分配給子機。
所以主要考慮方向有兩個
1、保障母機和子機的安全可靠,包括系統安全和網路安全
2、進行資源分配,包括網路資源、存儲資源、計算資源等
該腳本考慮了母機分配資源不會超過母機承受范圍的資源安全,其他系統層面和網路層面的安全問題還需考慮
完成過程
[0]
剛開始考慮當母機資源超過一定比例則程序退出,比如磁碟使用超過2/3,後來覺得這樣不夠靈活,改用百分比,默認50%
在設置百分比的時候有幾點小問題
1、浮點數運算保留小數
使用scale可以准確保留小數,echo "scale=2;62/3" | bc 結果 20.66
使用printf可以保留小數位,補零填充 printf %.2f 結果20.00
2、浮點數運算不保留小數
echo "123.123"|sed "s/.. //g"
代表0到多個,所以第一個命令中. 只能替換掉小數點變成空
..代表了小數點之後的1到多個
3、除法
echo "2 / 3" | bc 這個結果會顯示為0
echo "scale=2 ;2 / 3" | bc 這個結果會顯示為.66
printf "%.2f" echo "scale=2;2/3" | bc 這個結果會顯示為0.66
[1]
剛開始的時候選擇將subvm_configuration.sh這個腳本cat進內存,然後用expect登錄到子機的時候echo到文件,然後執行。後來發現expect輸出的時候會把subvm_configuration.sh腳本里的內容先執行一遍,而且還存在其他一些問題,比如說echo到文件的時候殘缺不全、不換行、文件為空等。
後來採用磁碟共享的方式,在宿主機上創建一塊磁碟,然後掛載到/tmp/share/這個目錄,再將subvm_configuration.sh腳本和ipinfo配置文件復制到該目錄,之後在子機的XML文件中添加一塊disk(vdc),登錄進子機後,掛載vdc,此時就可以看到母機上/tmp/share/下的內容了。直接執行腳本即可。
磁碟共享也有一個缺點,就是文件內容不能實時刷新,比如在母機上改了ipinfo,只有子機重啟後,子機上的ipinfo才可以刷新,鑒於/tmp/share/這個目錄每個子機一生只有一次用到,所以這個問題暫時不需要解決。
[2]
創建子機
1、if ( vlanid != 0 && xenbrx not in brctl show ) 會報錯網卡未找到導致虛擬機啟動失敗
2、vm-template模板不正確,包括<emulator>/usr/local/bin/qemu-system-x86_64</emulator>路徑不正確,會導致虛擬機無法啟動
3、disk的slot卡槽相同會導致虛擬機無法啟動
4、需要注意的是,virsh define vm-template 這條命令的執行路徑是/usr/local/etc/libvirt/qemu/vm-template,最後會在/usr/local/etc/libvirt/qemu/下生成vm$ipfmt.xml的配置文件。
[3]
expect會有很多問題
1、命令不按順序執行
2、傳入的變數為空,且傳入的變數下標是從0開始的;shell傳入變數下標從1開始,0代表自身文件
3、set timeout $time 設置的時間不一定準確,設置了300秒延時,但未到300s,程序還是退出了,可以考慮直接設置 timeout 為-1
4、expect有多種寫法,有expect << EOF ; expect eof ; 最正常的是上面用的
5、expect文件用的解釋器是/usr/bin/expect,這里將login.sh使用cat寫在了單獨的文件中
[4]
1、subvm_configuration.sh配置了兩張網卡,格式化vdb數據盤,配置ssh
2、eth0為連接外網的網卡,使用tunnel,eth1為內網網卡,使用vlan
xenbrX為隧道入口,母機收到從xenbr361口收到的報文,就發給另一端隧道,從而實現連接外網
tunnel network ---- host(default router: subhost -> netowrk , throught interface & sh vlan.sh ) ---- subhost
母機收到vlan的報文,就在指定vlan的廣播域內進行路由(不一定是母機進行路由)
vlan network ---- host(broadcast router: subhost ---> broadcast/vlanid throught 802.1Q ) ---- subhost
expect合理用法
8. linux配置中eth0和eth1做什麼用的
是一種光纖乙太網介面卡,按照乙太網通信協議進行信號傳輸。一般通過光纜與光纖乙太網交換機連接。
Eth0和eth1用於區分網卡名。它們的含義與windows本地連接1和本地連接2相同。
這里的子網卡不是一個實用的網路介面,但是它可以作為一個集合介面在系統中閃現,比如eth0:1,eth1:2。
(8)kvm網卡eth0擴展閱讀:
Linux操作系統嵌入了TCP/IP協議棧,協議軟體具有路由轉發功能。路由和轉發依賴於在主機中安裝多個網卡作為路由器。
當某一網卡接收到度包時,系統內核會根據度包的目的IP地址查詢路由表,然後根據查詢結果將度包發送到另一網卡,最後通過該網卡發送度包。主機的進程是路由器的核心功能。
路由功能是通過修改Linux內核參數來實現的。sysctl命令用於配置和顯示/proc/sys目錄中的內核參數。
出於安全原因,Linux內核默認禁止數據包路由和轉發。在Linux系統中,有臨時和永久兩種方法啟用轉發功能。
9. 網卡eth0啟動失敗如何解決
1./etc/udev/rules.d/70-persistent-net.rules 文件
刪除eth0網卡
將eth1網卡的NAME="eth1"修改為"eth0",並復制ATTR{address}中的值(MAC地址)
2./etc/sysconfig/network-scripts/ifcfg-eth0 文件
將復制的ATTR{address}值覆蓋#HWADDR
重啟服務:service network restart