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