在开启DRS的集群中修复VMware虚拟主机启动问题
通过iSCSI方式连接到ESXi主机上的外挂存储意外失联了一段时间,导致部分虚拟主机在集群中呈现出孤立的状态,单独登陆到每台ESXi上可以看到这些虚拟主机都变成了unknow状态。因为有过上一次(VMware-存储断网之后无法添加vmx到清单)的经验,所有操作等待存储恢复与ESXi连接之后再进行操作,这样可以尽量避免虚拟主机意外“消失”。
前奏
最终,存储网络恢复正常,期间经历了大约1个小时,有绝大多数的Windows虚拟主机在存储网络恢复正常之后继续正常工作;有少部分的Linux虚拟主机内部EXT文件系统出现了只读,这个需要重启后对文件系统修复才能解决;而有一小部分大概占总虚拟主机30%的量的关机虚拟主机,此时需要对他们进行启动操作,而真正的问题恰巧也来了。
环境介绍
所在集群中开启了vSphere DRS功能,但未开启HA功能,这样会在启动虚拟主机的时候,根据DRS自动策略会将虚拟主机分配到算法认为最轻松的一台ESXi主机上,最终完成启动。
可是现在启动过程中出现了一些问题,有些虚拟主机可以很顺利的启动起来,而有些虚拟主机在等待5~10分钟之后开始报错,报错信息五花八门,
Ø 有在95%启动过程中报错的,
Ø 有在久等之后抛出“打开配置文件------.vmx”文件失败的,还有的干脆启动之后迅速报错“打开虚拟机电源:未能启动虚拟机 (错误 -18)”的,
Ø 有报错通信相关异常的,
Ø 以及注册虚拟机时候抛出的错误“The system returned an error. Communication with the virtual machine might have been interrupted.正在目标主机上注册虚拟机”。
通过寻找日志线索,找到两处我认为和启动有关准确都较高的日志记录:

Figure 1日志信息一,有详细的vmx文件无法打开的记录,此处对应的启动环境是在vCenter中,通过高级管理员账号启动的报错

Figure 2日志信息二,在登陆到ESXi上看到的错误信息,其中绿色圈的是vCenter向ESXi发送指令用来实际操作的用户,红色圈的是虚拟主机无响应后VMware内部为用户记录错误信息的用户。
问题解决
通过上面对日志的分析与查看,我按照《VMware-存储断网之后无法添加vmx到清单》文章中的指导建议,使用vmkfstools 查看了对应无法启动的虚拟主机的vmx文件占有情况。

Figure 3利用vmkfstools(绿色横线为命令)了解到该vmx文件并无被占有(红色横线全零表示该文件未被任何ESXi主机锁定)
既然和日志提到的文件对不到一起,而虚拟主机目录下也就那些文件,索性一个个的去遍历一遍,看看有没有其他的思路和线索。

Figure 4当我遍历到vswp文件的时候我可以看到锁定这个文件的ESXi主机MAC地址了(VMware-存储断网之后无法添加vmx到清单文中有介绍如何通过MAC反查到对应ESXi主机)
由于vSphere DRS的会对虚拟主机启动自动分配ESXi主机,所以此时我把DRS临时关闭,将这个不能够开启的虚拟主机迁移到反查到的原ESXi物理主机上,再次启动,非常顺利的进行了下去。随后的那些无法进行启动的虚拟主机也如法炮制的都启动好了。
经验总结
1、等待存储恢复之后,启动vCenter,切记第一时间关闭DRS,如果有HA最好也一起关闭,避免批量启动的时候自动资源分配导致前一次这个vswp文件还未处理掉与原始ESXi主机的关联关系,这样如果自动给了一个不是原始ESXi主机的环境,就会导致vmx文件和vswp文件的所有权脑裂。
2、通过判断Figure 2中的那条user用户错误信息,其实我们已经可以找到这个虚拟主机故障前与那个ESXi主机有做关联。
3、由于vCenter自身也是安装在外挂存储中的,因此在外挂存储故障了之后vCenter已经无法记录日志,因此来自于ESXi的信息相当珍贵。
4、实际上通过分析启动不能的虚拟主机log文件(在外挂存储的虚拟主机目录下)也是可以分析到那些文件被什么样的ESXi主机锁住了。
5、VMware的知识库里面告诉我们,在一台虚拟主机启动之后,这些类型的文件(如下所示)都会被所在ESXi主机通过vmfs这个集群式文件系统给锁定。
a) VMNAME.vswp
b) DISKNAME-flat.vmdk
c) DISKNAME-ITERATION-delta.vmdk
d) VMNAME.vmx
e) VMNAME.vmxf
f) vmware.log
6、文中日志Figure 1所提到的vmx文件无法读取,我的理解是vmx可以看作是虚拟主机的机箱,而这个机箱里面有硬盘文件VMDK,虚拟机交换文件vswp,日志文件log等等,因为涉及到的被锁文件是在众多,所以系统就会用vmx文件作为统一输出告知管理员一个大致的错误方位。
7、等待所有虚拟主机启动完毕之后,再将vSphere DRS和HA开启。
8、充分利用VMware-存储断网之后无法添加vmx到清单提及的RVTools,可以让维护和运行更加顺利。
-=EOB=-
在开启DRS的集群中修复VMware虚拟主机启动问题的更多相关文章
- 向CDH5集群中添加新的主机节点
向CDH5集群中添加新的主机节点 步骤一:首先得在新的主机环境中安装JDK,关闭防火墙.修改selinux.NTP时钟与主机同步.修改hosts.与主机配置ssh免密码登录.保证安装好了perl和py ...
- Kubernetes集群中修复状态为NotReady的节点
度个假回来发现自己集群中的节点都挂了,全部是NotReady状态 但是除了.10节点外,其他主机并没有挂,可以远程连接上, 那就考虑是kubernetes系统的问题 解决的方法是重启kube-prox ...
- hbase集群中其中某个regionserver 没有启动
第一步: date命令查看各个机器的时间 发现linux02机器时间差了2个多小时 第二步:ntpdate pool.ntp.org 修改错误时间的机器 第三步: 重启 hbase
- CentOS7 使用chrony搭建集群中的时间同步服务
一.集群环境: 系统:CentOS7-minimal 集群中的两台主机ip:10.132.226.103/24 10.132.226.104/24 二.CentOS7中时间相关命令timedatec ...
- 在k8s集群中安装rook-ceph 1.8版本步骤
官方文档地址:https://rook.io/docs/rook/v1.8/quickstart.html Kubernetes 最小版本号 Kubernetes 最小版本号:Kubernetes v ...
- k8s集群中安装rook-ceph
容器的持久化存储 容器的持久化存储是保存容器存储状态的重要手段,存储插件会在容器里挂载一个基于网络或者其他机制的远程数据卷,使得在容器里创建的文件,实际上是保存在远程存储服务器上,或者以分布式的方式保 ...
- redis集群中的主从复制架构(3主3从)
架构图如下 首先开启6个实例,这里为了演示方便,只是在一个linux上开启了6个redis实例 6380 (主) 6480 (从) 6381(主) 6481(从) 6382(主) 6482 ...
- 深入理解 ZK集群中通过Processor保证数据一致性
入口 书接上篇博客中的ZK集群启动后完成数据的统一性恢复后,来到启动ZkServer的逻辑,接下来的重点工作就是启动不同角色的对应的不同的处理器Processor 如上图查看ZooKeeperServ ...
- 集群中Session共享解决方案分析
一.为什么要Session共享 Session存储在服务器的内存中,比如Java中,Session存放在JVM的中,Session也可以持久化到file,MySQL,redis等,SessionID存 ...
随机推荐
- 来,给Entity Framework热热身
先来看一下Entity Framework缓慢的初始化速度给我们更新程序带来的一种痛苦. 我们手动更新程序时通常的操作步骤如下: 1)把Web服务器从负载均衡中摘下来 2)更新程序 3)预热(发出一个 ...
- SQL Server 致程序员(容易忽略的错误)
标签:SQL SERVER/MSSQL/DBA/T-SQL好习惯/数据库/需要注意的地方/程序员/容易犯的错误/遇到的问题 概述 因为每天需要审核程序员发布的SQL语句,所以收集了一些程序员的一些常见 ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- C#~异步编程再续~await与async引起的w3wp.exe崩溃-问题友好的解决
返回目录 关于死锁的原因 理解该死锁的原因在于理解await 处理contexts的方式,默认的,当一个未完成的Task 被await的时候,当前的上下文将在该Task完成的时候重新获得并继续执行剩余 ...
- SOLID 设计原则
SOLID 原则基本概念: 程序设计领域, SOLID (单一功能.开闭原则.里氏替换.接口隔离以及依赖反转)是由罗伯特·C·马丁在21世纪早期 引入的记忆术首字母缩略字,指代了面向对象编程和面向对象 ...
- JQuery的基础和应用
<参考文档> 1.什么是? DOM的作用:提供了一种动态的操作HTML元素的方法. jQuery是一个优秀的js库.用来操作HTML元素的工具. jQuery和DOM ...
- 【干货分享】流程DEMO-事务呈批表
流程名: 事务呈批表 业务描述: 办公采购.会议费用等事务的申请.流程发起时,会检查预算,如果预算不够,将不允许发起费用申请,如果预算够用,将发起流程,同时占用相应金额的预算,但撤销流程会释放相应金 ...
- Oracle:一个用户操作多个表空间中表的问题(转)
原文地址:http://blog.csdn.net/shmiloy001/article/details/6287317 首先,授权给指定用户. 一个用户的默认表空间只能有一个,但是你可以试下用下面的 ...
- 自制Azure中国版“加血包”
Micrsoft Azure中国版的国际出口最近升级为电话线拨号模式,目测为10个用户共享一条56kb的电话线拨号链路.有图有真相: 中国的IT从业者,有三分之一的职业生涯时间是在跟网络斗智斗勇.这点 ...
- Storm介绍(二)
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文是Storm系列之一,主要介绍Storm的架构设计,推荐读者在阅读 ...