DCUI(全称:Direct Console User Interface)是一个计算机术语。
解决问题
如果不想使用vCenter Server或者vSphere client管理
ESXi主机,那么需要提前完成一些准备工作。在这种情况下,像Dell DRAC和HP ILO这些远程控制工具能够发挥重要作用。使用DCUI(Direct Console User Interface)——简单来说就是ESXi console——来管理网络可能会有些复杂,但确DCUI是一种最为直接的方式。下面介绍一些我所了解的DCUI主机管理方式,不需要使用vSphere client——甚至是SSH。
在一个设计良好的DCUI网络环境当中,DCUI虚拟机(VM)网络应该和主机管理网络相互分离,并且需要正确配置多块物理网卡连接到不同交换机。DCUI虚拟机和DCUI管理网络之间的流量不能相互影响。在将要分析的案例当中,DCUI虚拟机仍然能够正常运行。如果能够通过远程桌面或者SSH协议登陆到虚拟机,那么管理员应该尝试将其安全关闭。
检查DCUI网络基础架构之后,发现这个问题和硬件或者交换机没有关系,进一步排查显示软件驱动也不是引发问题的根本原因。
迁移
为了尽量减少DCUI对于业务的影响,应该首先将受影响的DCUI虚拟机转移到另外一台正常工作的主机当中并且重新启动,这样能够保证在修复故障主机的同时依然能够管理业务DCUI虚拟机。但是需要注意的是这台主机服务器可能位于几千公里之外,因此我们必须使用DCUI带外管理系统。
DCUI或者任何远程管理功能都不适合作为日常管理方式,但是DCUI却能够用来处理紧急情况。管理员可以通过DCUI的方式关闭不能执行命令的DCUI虚拟机。在vSphere 6.0之前的版本当中,同时按下Ctrl+F1,输入root账户密码 ,就可以使用DCUI列出几种console功能了。但是正如之前所说的那样,应该使用其他DCUI方式来安全关闭虚拟机。这篇文章讨论的仅仅是最后的应急方案,比如,虚拟机网络和管理网络之间出现严重故障。
在vSphere 6当中,如果管理员使用DCUI关闭当前主机,那么系统会提示管理员强制关闭所有未迁移DCUI虚拟机的电源。这是DCUI一项非常有用的功能,但是管理员在使用DCUI这种功能的时候需要特别小心,因为错误使用DCUI可能会导致大量DCUI虚拟机无法访问。
对于DCUI的vSphere 5当中的虚拟机来说,可以使用下面的命令进行定位和关闭:
可以使用下面的命令列出所有DCUI虚拟机。(注意需要关闭的虚拟机的进程ID)
esxcli vm process list
使用如下命令关闭DCUI虚拟机:
esxcli vm process kill
在关闭所有DCUI虚拟机之后,可以使用下面的命令将虚拟机置于维护模式:
esxcli system maintenanceMode set --enable true
尽管这个过程不是必须的,但是确保所有DCUI虚拟机已经被正常关闭,能够随时切断主机电源是一种很好的操作流程。
结束维护模式
到这个阶段为止,DCUI虚拟机应该已经完全独立于之前的主机,可以在另外一台主机上接通电源之后手动重启。在这个案例当中,由于某种原因我必须在之前的主机上重新启动这些DCUI虚拟机。这的确不是一种最好的解决方案,但是完全能够实现。和之前的操作类似,从结束DCUI服务器的维护模式开始,使用下面的命令:
esxcli system maintenanceMode set --enable false
问题在于某些DCUI虚拟机会因为一个某些罕见错误而无法启动或者最终超时。对于这种情况来说,需要检查问题DCUI虚拟机当中的vmware.log(位于虚拟机文件夹当中)文件以查明具体错误信息,
这边文章不可能列举出管理员可能遇到的所有错误和复杂问题,但是为管理员提供了一种良好的排错思路。
这种问题通常不会经常发生。如果DCUI虚拟机被划分到单独的网络端口组和链路当中,并且能够响应远程客户端请求,那么就更像是DCUI管理问题,可以在非工作时间使用一种更为安全的方式进行修复,降低可能造成的影响。幸运的情况下,还有可能是DCUI网路连接问题,可以在不导致任何故障时间的情况下将问题解决。