vmware 虚拟机启动 报 No such device

本文介绍了解决虚拟机启动时报‘Nosuchdevice’错误的方法。此问题由虚拟机配置了故障备份存储的LUN引起,通过移除有问题的磁盘配置可以解决。
问题:
只有3台虚拟机开机出现如下状况,但浏览存储器中,虚拟机目录还是存在虚拟机的vmdk文件的。
原因:
这3台虚拟机,添加以“祼机映射”方式分别添加了备份存储的LUN作为虚拟机的一个分区。但却因为备份存储故障,导致虚拟机启动报“No such device”
解决方法:
虚拟机-->编辑设备、移除加添的那个磁盘就可以了,如果移除不了,重启esxi主机后,再编辑设备->移除设备。
<think>我们正在解决虚拟机中出现的“Cannot find device 'eth0'”错误。根据引用内容,这个问题通常与网卡MAC地址变更导致设备命名不匹配有关。以下是具体解决步骤: ### 解决步骤: 1. **检查当前网络设备状态** 在虚拟机中执行以下命令查看网卡信息: ```bash ip link show ``` 观察输出中是否有类似`eth1`、`ens33`等替代设备名,以及MAC地址是否与虚拟机设置中的一致。 2. **删除持久化网络规则文件(关键步骤)** 根据引用[2],当虚拟机网卡MAC地址变更后,系统会保留旧的设备名绑定规则,导致新设备无法使用`eth0`名称: ```bash sudo rm -f /etc/udev/rules.d/70-persistent-net.rules # 删除旧规则文件 sudo reboot # 重启系统 ``` > 重启后系统会自动重建该文件,并基于当前MAC地址分配设备名(通常恢复为`eth0`)[^2]。 3. **手动修改设备命名规则(可选)** 如果步骤2无效,可手动创建规则文件强制指定设备名: ```bash # 查询网卡的MAC地址(假设物理网卡PCI地址为0000:03:00.0) lspci -nn | grep -i net # 确认网卡型号和地址 ethtool -i eth1 | grep bus-info # 若已有其他设备名可这样查 ``` 编辑规则文件: ```bash sudo nano /etc/udev/rules.d/10-network.rules ``` 添加以下内容(将`ATTR{address}`替换为实际MAC地址): ```bash SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:36:xx:xx", NAME="eth0" ``` 保存后执行: ```bash sudo udevadm control --reload-rules sudo reboot ``` 4. **更新网络配置文件** 确保网络配置中使用设备名`eth0`: ```bash # Debian/Ubuntu系统 sudo nano /etc/network/interfaces ``` 检查配置是否包含: ```bash auto eth0 iface eth0 inet dhcp # 或static配置 ``` > 对于RHEL/CentOS系统,检查`/etc/sysconfig/network-scripts/ifcfg-eth0`文件是否存在且`DEVICE=eth0`。 ### 故障排查表 | 现象 | 解决方案 | |-------------------------------|------------------------| | 重启后出现`eth1`而非`eth0` | 执行步骤2删除规则文件 | | MAC地址变更后配置未更新 | 执行步骤3手动绑定 | | 网络服务启动错`Device not found` | 检查步骤4的配置文件 | ### 附加说明 - **虚拟机设置检查**:在VMware/VirtualBox中确认网卡MAC地址是否与配置一致(设置 → 网络适配器 → 高级选项)。 - **驱动问题**:极少数情况需重新安装网卡驱动(如`pcnet32`、`vmxnet3`),引用[3]提到可用`dpdk-devbind.py`工具绑定驱动[^3]。 --- §§相关问题§§ 1. 如何在Linux系统中永久修改网络接口名称? 2. 虚拟机克隆后出现网络冲突该如何解决? 3. Linux的udev设备管理机制是如何工作的? 4. 如何为虚拟机配置SR-IOV高性能网络?</think>### 解决虚拟机中 "Cannot find device 'eth0'" 错误的完整指南 #### 问题原因分析 该错误通常由以下原因导致: 1. **MAC地址变更**:虚拟机网卡MAC地址被修改后,系统仍尝试使用旧地址绑定`eth0`[^2] 2. **持久化规则冲突**:`/etc/udev/rules.d/`中的网络规则文件未更新[^2] 3. **网卡驱动问题**:PCI设备未正确绑定到驱动[^3] 4. **硬件兼容性警告**:特别是Intel处理器在CentOS中的兼容性问题[^4] --- ### 解决方案步骤 #### 1️⃣ 删除冲突的持久化规则(最有效方案) ```bash # 删除冲突的规则文件 sudo rm -f /etc/udev/rules.d/70-persistent-net.rules # 重启系统使更改生效 sudo reboot ``` > 系统重启后将自动重建规则文件并重新分配网卡名称[^2] #### 2️⃣ 手动更新网卡绑定规则 若步骤1无效,需手动编辑规则文件: ```bash # 查看当前网卡MAC地址 ip link show | grep -A 1 "link/ether" # 编辑规则文件(示例内容) sudo nano /etc/udev/rules.d/10-network.rules ``` 添加以下内容(替换实际MAC地址): ```properties SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:36:xx:xx", ATTR{type}=="1", NAME="eth0" ``` [^1] #### 3️⃣ 检查并修复驱动绑定 ```bash # 查看所有网络设备状态 lspci | grep -i net # 绑定设备到通用驱动(示例) sudo dpdk-devbind.py --bind=uio_pci_generic 04:00.1 ``` > 将`04:00.1`替换为您的实际PCI地址[^3] #### 4️⃣ 处理硬件兼容性问题(CentOS特有) ```bash # 检查内核警告日志 dmesg | grep -i "hardware has not undergone" # 解决方案:安装ELRepo内核 sudo yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm sudo yum --enablerepo=elrepo-kernel install kernel-ml ``` --- ### 故障排查表 | 现象 | 可能原因 | 解决方案 | |------|----------|----------| | 重启后出现`eth1` | MAC地址变更未更新 | 执行步骤1删除规则文件 | | 网卡状态`UNCLAIMED` | 驱动未绑定 | 执行步骤3重新绑定驱动 | | 启动时出现黄色警告 | 硬件兼容性问题 | 执行步骤4更新内核 | | `ip link`无输出 | 网卡未激活 | `sudo ip link set dev eth0 up` | --- ### 预防措施 1. **克隆虚拟机前**:删除`/etc/udev/rules.d/70-persistent-net.rules` 2. **修改MAC地址后**:立即执行`sudo rm /etc/udev/rules.d/70-persistent-*.rules` 3. **定期检查**:`dmesg | grep -i eth0` 查看内核级错误 > 注意:在VMware/VirtualBox中修改MAC地址后,**必须**删除持久化规则文件[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值