PVE添加NVME磁盘导致断网的解决办法
其实这是国庆前遇到的问题,解决后一直忘记发出来。
起因
前段时间把Mac Mini卖了,更换为一台铭凡的x64机器(AMD CPU),上面跑的是PVE(也就是Proxmox VE),内网的大部分服务都作为虚拟机或者LXC容器跑在上面。 为机器设定的初始配置是64GB内存和2TB NVME SSD。运行一段时间后,因为Unraid NAS上的缓存盘不够用了,打算更换为2TB的新磁盘,换下来的1TB NVME SSD就插到PVE上作为第二块存储盘使用。
更换过程没什么好说的,只是拧个螺丝的事。但是插入新磁盘后,PVE机器始终无法访问,经过一段时间我才注意到DHCP租约都不见了。
现象
主要现象是通过网络无法访问PVE的web界面,进一步查看可以发现原有的网口灯也不亮。 因为我有一台虚拟机配置了显卡直通,在宿主机上屏蔽了显卡使用,因此宿主机接显示器并无法交互,也没有日志可供查看。
原因
原因是接入新的NVME SSD之后,网卡的PCI编号变化了,而操作系统中的网络接口名字依赖于PCI编号,因此接口名字也产生变化,与原有的网络配置文件中的名字不匹配,所以网络都无法工作。
解决方法
简单来说给宿主机接上显示器和键盘(也可以使用KVM设备),进入PVE字符终端后修改网络配置中的网口名字即可。 但因为我配置了显卡直通,导致宿主机无法使用显卡,所以需要先取消显卡直通,反正我也没实际用到(直通的虚拟机一开机就会导致宿主机卡死,一直没找到原因)。
- 首先关机,拆机然后把新装的SSD拔出来。然后启动PVE,在web界面上进入虚拟机选项,删除直通的显卡PCIE设备,并保存。
- 然后在web界面上进入宿主机shell,修改grub选项去除IOMMU相关设置,一般是在
/etc/default/grub中,找到GRUB_CMDLINE_LINUX或GRUB_CMDLINE_LINUX_DEFAULT行,将amd_iommu=on或intel_iommu=on或iommu=pt之类的选项都删除,保存文件后运行update-grub。 - 之前可能还配置了显卡内核模块的屏蔽。删除
/etc/modprobe.d/vfio.conf文件,并编辑清空/etc/modprobe.d/blacklist.conf中显卡相关的模块配置。 - 运行
shutdown关机。 - 重新插入新的SSD,并开机,为宿主机接入显示器和键盘,或连接KVM设备。
- 输入PVE用户名密码登录到字符界面,然后编辑
/etc/network/interfaces配置文件,一般是初始网络接口名字叫enp1s0,现在变成了enp2s0,进行修改即可。不确定的话可以运行ip a看一看。
调整之后确保vmbr0的桥接是配置在正确的网络接口上,例如:
auto lo
iface lo inet loopback
iface enp2s0 inet manual
auto vmbr0
iface vmbr0 inet static
address 191.168.0.73/24
gateway 192.168.0.2
bridge-ports enp2s0
bridge-stp off
bridge-fd 0
iface enp3s0 inet manual
iface wlp3s0 inet manual
其他
当然如果这台机器一开始就使用Wi-Fi连接网络,可能就不会遇到这个问题。 但问题是真的有人会在服务器上用Wi-Fi吗……