说明
虚拟机修改了/etc/sysconfig/network-scripts/ifcfg-eth0
网卡文件 保存后,重启网络服务( systemctl restart network
)是ip是存在并且能正常使用的。但是重启系统之后ifcfg-eth0
内容被重置了。
你打开配置文件后,会发现,大概内容和下面一样,并且顶部都有一行注释,大概意思就是 有cloud-init自动创建,不要编辑这个文件。
# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=dhcp
DEVICE=eth0
HWADDR=fe:fc:fe:46:95:ba
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
而cloud-init
是openstack
的组件,所以这个问题一般发生在 openstack
虚拟机或者配置了openstack
的虚拟机上!!! (这种问题大概就是 openstack设置的ip段,这个虚拟机dhcp无法获取,所以ip就为空)
所以 cloud-init
的配置文件这就不做解释,我的是普通虚拟机,但是我当初配置了openstack
做实验,可能没卸载干净吧,有遗留问题发生了网卡重启被重置的问题。
解决方法
方式一
这是我在网上找的 步骤 我亲测不行,或许是因为我的openstack已经没有使用,组件不全导致的无效,如果你的openstack在正常使用,可以使用方式一。
- 尝试了关闭自带网络管理工具:
[root@compute1 ~]# systemctl stop NetworkManager
[root@compute1 ~]# systemctl disable NetworkManager
无效。重启后,ifcfg-eth0内容仍被重置。
- 找一找服务:
systemctl list-unit-files | grep cloud*
是否有下面4项为enable
[root@compute1 ~]# systemctl list-unit-files | grep cloud*
cloud-config.service enabled
cloud-final.service enabled
cloud-init-local.service enabled
cloud-init.service enabled
cloud-config.target static
- 禁止 cloud-init服务接管网络
[root@compute1 ~]$vim /etc/cloud/cloud.cfg
#在最后面输入下列内容
network:
config:disabled
- 清理,检查cloud-init配置文件
[root@compute1 network-scripts]$ cd /usr/lib/python2.7/site-packages/cloudinit/sources/
[root@compute1 network-scripts]$ rm -rf __init__.pyc
[root@compute1 network-scripts]$ rm -rf __init__.pyo
[root@compute1 network-scripts]$ rm -rf /var/lib/cloud/*
[root@compute1 network-scripts]$ rm -rf /var/log/cloud-init*
[root@compute1 network-scripts]$ cloud-init init --local
[root@compute1 network-scripts]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
[root@compute1 network-scripts]$ reboot
方式二
我这个方式比较暴力,因为我不用openstack
了,而我这个问题是cloud.init
引起的问题,所以我就把和cloud.init
的所有服务都停了并关闭开机自启!
[root@compute1 network-scripts]$systemctl disable cloud-init-local cloud-init cloud-config cloud-final
[root@compute1 network-scripts]$systemctl stop cloud-init-local cloud-init cloud-config cloud-final
[root@compute1 ~]#
[root@compute1 ~]# systemctl list-unit-files | grep cloud*
cloud-config.service disabled
cloud-final.service disabled
cloud-init-local.service disabled
cloud-init.service disabled
cloud-config.target static
配置网络,重启服务器,ip依旧存在,问题解决!