ESXi 切换直通导致无法识别硬盘解决 ​

在解决虚机挂载U盘的过程中(已经处理了:VMware中的虚机如何挂载U盘),怎么样都无法加载U盘,故进行了一次操作直通操作的过程中,不小心把所有的存储和控制器全部直通了,导致Esxi主机无法识别到自己的存储信息,然后就出现了后面的事情。进而所有的虚拟机都无法看到,现将处理过程逐一给大家解析,同时也感谢几位同事的前期测试。


 


什么是VMware直通?


VT-d 、DirectPath I/O,通过 DirectPath I/O,虚拟机可以使用 I/O 内存管理单元访问平台上的物理 PCI 功能,就是俗称的虚拟化直通,简单理解就是允许宿主机将某些硬件资源的管辖权直接移交给虚拟机,虚拟机会以直通独占的方式使用硬件,宿主机将不能再使用此硬件,利用效率几乎等同于将硬件插到了虚拟机的主板扩展槽里一样,最实用的目的是避免了虚拟化平台自身软件层转换带来的效能下降。


 


为什么无法连接到存储还能开启SSH和登录VM宿主机?


参考以为博主的见解,ESXi从硬盘读取了程序和配置文件,将其载入内存并运行起来,然后才生效了直通设置,失去了对硬盘的访问能力,写入能力,就是只能看,不能改。改了也没用,因为在内存里面运行。


 


关于Esxi的一般有几个分区?


没有查阅过官方的资料,通过大量的百度得出以下结果,Esxi存在2个分区,分被为sda5和sda6(具体自己查看,我们这是sdb5和sdb6),如果你要问我,我现在用的哪一个,抱歉,我也不知道。没有细细研究。


 



理解以上问题,我们就进入正题了。


处理步骤如下:


1.启动Fedora Live系统(其他Linux发行版也是一样的,只要是桌面版基本都带有预览功能)


2.运行Terminal,接下来的shell命令都在这个终端里执行


3.使用parted -l 命令确认ESXi保存配置文件的分区(通常是/dev/sda5也可能sda6)


4.挂载分区,要修改的文件就在分区根目录下




mount /dev/sda5 /mnt ls -l /mnt/state.tgz


5.创建一个文件夹用来做文件修改




mkdir ~/test cd ~/test cp /mnt/state.tgz state.tgz


6.解压缩state.tgz文件




tar xf state.tgz tar xf local.tgz
ls -l ./etc/vmware/esx.conf
注意:ESXi 6.5之前版本的配置文件为esxi.conf。


7.修改esx.conf文件,将其中的passthru改为vmkernel即可取消直通设置


  • a) 使用下面的命令查看ESXi系统中被设置为直通的设备




grep -w passthru ./etc/vmware/esx.conf


  • b) 若你无法确定哪一项对应你的SATA控制器,就使用下面的命令将它们全部修改,日后再重新设置




sed -i 's/passthru/vmkernel/' ./etc/vmware/esx.conf


8.删除旧的tgz文件




rm local.tgz state.tgz


注意:务必要删除旧的local.tgz和state.tgz文件(前辈走过了路,要听话),切不可图省事直接创建压缩包来“覆盖”原有的tgz文件!否则更新后的文件将导致ESXi启动失败(Check failed: installing file ./local.tgz (sandbox is local.tgz)).


9.制作新的state.tgz文件




tar czf local.tgz etc
chmod 755 local.tgz
tar czf state.tgz local.tgz
chmod 755 state.tgz


10.替换原有的state.tgz文件


cp state.tgz /mnt/


11.重启,大功告成


reboot


 


感谢一下几位博主的贡献,吸取的就是他们的精华。