连不上网卡导致DomainU不能正常启动的解决
今天启动DomainU时出现错误:
error: device 0 (vif) could not be connected. hotplug scripts not working
后来发现是eth0连不上,把eth0改为eth1(双网卡)后即可,或者干脆去掉,只留vif=[ 'type=ioemu' ]也可以(把eth0改为xenbr0会提示:Error: Device 0 (vif) could not be connected. Could not find bridge device xenbr0)
后记:今天发现服务器上只有peth1(MAC和eth1相同),而没有peth0,于是猜测pethN映射到了ethN上。于是在/etc/xen/xend-config.sxp中添加(network-script 'network-bridge netdev=eth0'),强行将peth1改为peth0,这样重启后ifconfig,果然没了peth1,只有peth0,这时把vif设置改为vif = [ 'type=ioemu, bridge=eth0' ]后可以正常启动了,没有出现昨天的错误,但是还是不能上网。
分析其原因:由于以前eth0对应的IP可以上网,于是xen启动时默认把peth和eth0关联,虚拟机可以正常启动;但后来估计是由于eth0对应的IP需要认证才能上网,没认证时不能上网,于是xen启动检查时自动把peth关联到了eth1上(peth0换成了peth1,eth1可以上网),vif = [ 'type=ioemu, bridge=eth0' ]这个配置就有问题了,虚拟机就不能正常启动了,改为vif = [ 'type=ioemu' ]就可以了;后来在xen的配置文件中强制改为peth0后,使用配置vif = [ 'type=ioemu, bridge=eth0' ]就可以正常启动虚拟机了,但虚拟机通过eth0不能正常上网,即使是认证上之后也是有时启动的虚拟机能上网有时启动的又不能,而使用配置vif = [ 'type=ioemu' ]也是有时启动的能有时启动的又不能,但如果显示的使用eth1:vif = [ 'type=ioemu, bridge=eth1' ]则可以正常上网。
后记:
刚才发现半虚拟化配置文件中也可以像全虚拟化一样配置vif,如vif = [ 'type=ioemu, bridge=xenbr0' ],其中ioemu指定NIC是一个ioemu设备而不是netfront,但发现这样配置后启动,再看过程,和vif = [ '' ]时的运行结果一样。看来type=ioemu一句不起作用,网络在半虚拟化方式下还是以前后端方式实现。
Labels: Linux, Operation and Maintenance
1 Comments:
刚才发现半虚拟化配置文件中也可以像全虚拟化一样配置vif,如vif = [ 'type=ioemu, bridge=xenbr0' ],其中ioemu指定NIC是一个ioemu设备而不是netfront,但发现这样配置后启动,再看过程,和vif = [ '' ]时的运行结果一样。看来type=ioemu一句不起作用,网络在半虚拟化方式下还是以前后端方式实现。
Post a Comment
Subscribe to Post Comments [Atom]
<< Home