APP下载

虚拟机故障排查之道

2017-03-08

网络安全和信息化 2017年4期
关键词:快照磁盘命令

同其他的虚拟化产品相比,VMware虚拟化方案企业中使用的最为广泛。不过,在实际使用过程中,有时会遇到各种故障。当出现问题时,如何快速排除故障,对于管理员来说是必须掌握的技能。在具体排错时,需要遵循合适的处理流程。针对VMware的故障处理,一般会从快照、Power电源管理、网络连接和WMware Tools工具等方面进行检测。只有掌握了正确的排错之道,才可以有的放矢地解决问题。

和快照相关的故障排查

要想有效地排查故障,必须清晰地了解虚拟机的文件结构。例如,对于某台虚拟机来说,其配置文件为“vpc.vmx”,假 设其名称为“vpc”,Swap文 件 为“vpc.swp”或者“vmx-vpc.vswp”,BIOS文 件 为“vpc.nvram”,Log文 件 为“vmware.log”,RAW device map文 件 为“vpcrdm.vmdk”,磁盘描述文件为“vpc.vmdk”,磁盘数据文件为“vpc-flat.vmdk”,快 照数据文件为“vpc.vmsd”,快照状态文件为“vpc.vmsn”,快照磁盘描述文件为“vpc.vmdk”“vpc-000001.vmdk”等文件,快照磁盘文件为“vpc-delta.vmdk”等。

当配置文件、磁盘文件或者快照文件出现问题时,虚拟机自然会无法正常运作。例如,在虚拟机的磁盘描述文件中存在一个CID参数,其作用是负责磁盘相关整合以及变动状态的跟踪。当磁盘数据块发生变动时,其状态就会写入到“.vmdk”类型的文件中。虚拟机的快照磁盘都是成对出现的,例如“vpc-xxx-delta.vmdk”“vpc-xxx.vmdk” 等,包括磁盘数据文件和磁盘描述文件。在对应的描述文件夹中的CID实际上是磁盘唯一标识号,如果没有创建快照,最原始的parentCID的值为“ffffffff”。当创建快照后,第一级快照描述文件中的parentCID参数的数值等于母盘的CID数值,同时也会在其中生成新的CID。

依次类推,在第二级快照描述文件中parentCID参数的数值等于上一级快照描述文件CID数值,同时也会在其中生成新的CID。通过这样的链接关系,将一层层的快照连接起来。如果其中的快照层级出现问题,虚拟机就无法开机。例如,当“vpc-000002.vmdk”快照描述文件中的parentCID和“vpc-000001.vmdk”中的CID不一致,该虚拟机的快照层级关系就会中断,快照盘就无法使用,导致虚拟机无法使用。解决方法是,将出错的快照描述文件(例如“vpc-000002.vmdk”)下载到本地,使用Ultraedit等文件编辑器将其打开,将其parentCID的数值修改为正确的内容。

之后将其上传到虚拟机中,在ESXi主机命令行下执 行“vmkfstool -q vpc-000002.vmdk -v10”命 令,如果提示操作失败,则说明CID更新没有成功。如果成功说明修改没有问题,之后就可以顺利开启虚拟机了。注意,不要使用记事本之类的工具进行修改,否则很容易破坏快照描述文件的编码结构。当创建快照时,如果选择了I/O静默,就可能导致操作失败的情况。因为在执行这种操作时,虚拟机可能有大量的I/O负载,自然无法在I/O静默下创建快照。处理方法是检测是否可以以手动方式创建一个不调用I/O静默的快照。当调用I/O静默动作时,系统实际上会通过Vmware Tool Sync driver(同步驱动器)或者Microsoft Volume Shadow Copy Service(卷影复制服务)技术进行调用。

如果两者同时存在,就有可能I/O静默驱动冲突。遇到这种情况,可以卸载上述某个驱动来解决,例如,卸载Vmware Tool Sync driver。在有些情况下,当创建快照或者处理快照时会出现某些错误。当然,如果虚拟机的磁盘处于或者Independent磁盘模式,或者在Physical模式下进行RDM映射本地磁盘的话,是无法创建快照的。而且快照最多支持32层级,如果超出则无法继续进行。排查的方法是先检查vCenter Server上的权限设置情况,之后检测虚拟机相关文件,然后查看ESXi的快照尺寸和空间使用情况。

在vCenter Server上检测用户是否有权限执行快照,要么提高用户权限要么更换高权限账户登录。在虚拟机文件中检测名称中包含“delta”和不包含该字样的“.vmdk”文件的描述信息是否匹配,如果不匹配就可能出现问题。通过查看之前的备份信息,就可以知晓其是否匹配。例如对于“vpc-000002-delta.vmdk”文件在“vpc-000002.vmdk”中没有正确配置。处理方法是对快照描述文件进行修改,使两者保持匹配。如果Delta磁盘没有描述配对文件,可以复制基础磁盘的描述文件,然后将其更名为与之对应的配对描述文件,通过对其进行编辑,将其修改为正确的描述信息。

从ESXi主机层面上讲,如果单个快照文件超过了Datastore的上线,或者Datastore剩余空间无法对所有的快照处理提供支撑,就很容易出现无法发处理快照的问题。对于VMFS 5来说,Database单个文件最大支持62.93TB,在创建快照时,理论上快照文件最大只能超过原始盘的8GB左右。因此,要处理所有的快照信息的前提是Datastore的空间足够大,可以将相关的虚拟机挪动到有更大空间的位置,也可以为Datastore增加存储空间。在实际的工作中,可以发现虚拟机的很多问题其实都和快照有关。

解除锁定,让虚拟机顺利启动

当尝试开启虚拟机时,出现失败的情况,除了查看报警信息外,还可以打开“vmware.log”文件,来了解虚拟机开启失败的原因。在进行分析时,可以按照一定的流程进行。先在虚拟机层面进行检测分析,例如是否是因为丢失了部分虚拟机文件造成的,是否是部分虚拟机文件被锁定造成的等。使用Putty等工具登录到ESXi主机,在命令行下执行“vmware-cmd -l”命令,来拿查看相关虚拟机的完整路径信息。据此执行“cd /vmfs/voluems//<虚拟机目录>”命令,进入目标虚拟机目录。在其中查看“vmware.log”文件,在其尾部可以了解造成故障的具体的原因。

执 行“l s /v m f s/volumes/shared/vpc”之 类的命令,来检测目标虚拟机是否存在文件丢失的情况。如果发现某些文件丢失,可以利用之前备份的文件进行恢复。如果磁盘描述文件丢失,可以手工重建该文件。如果提示文件被锁定,可以执行“touch filename”命令,来检测其是否被锁定,“filename”为具体的文件名。当发现虚拟机被锁定,在解锁之前必须确定哪台ESCi主机锁定了该虚拟机文件,执行“vmkfstools -D/vmfs/volumes//<虚拟机目录>/<锁定状态文件>”之类的命令(例如“vmkfstools -D /vmfs/volumes/shared/vpc/vpcflat.vmdk”命令),在返回信息中显示对应ESXi主机的MAC地址信息。

在该主机上执行“lsof| grep filename”命令,来找到锁定信息,之后关闭和该虚拟机相关的进程即可解除锁定。如果实在无法找到引发虚拟机文件被锁定的进程,那就只能执行迁移虚拟机或者重启ESXi主机等操作加以应对。在实际工作中,虚拟机被锁定是比较常见的故障,例如在迁移或者启动过程中虚拟机宕机,其磁盘文件就会被锁定。解除锁定操作时虚拟机是没有损坏的,因为仅仅从进程中将其清除,对实际的数据存储没有任何影响。当确认不是虚拟机层面的问题后,接下来就需要从ESXi主机层面进行检测分析,例如是否因为主机资源不足造成,是否因为ESXi主机无响应导致等。

处理虚拟机“孤立”故障

如果出现无法安装VMware Tools安装失败,这一般都是因为操作系统选择错误有关。从虚拟机层面上来说,要检测虚拟机的操作系统版本有无问题。打开虚拟机的管理面板,在设置标签中选择“VM Options”项,在“Guest OS version”栏查看实际的操作系统类型,并选择与之匹配的VMware Tools。从ESXi主机层面上讲,来查看是否为Vmware Tools ISO匹配问题,是否可以找到Vmwar Tools ISO文件,镜像文件是否存在损坏等。有时,虚拟机会出现“orphaned”(孤 立) 状态,例如在虚拟机迁移时,因为各种原因重启VM,导致 在vCenter Server的“Inventory”下显示孤立状态,只是因为在虚拟机被重启时,会临时性的无法使用,其状态就会显示为孤立。

在迁移虚拟机过程中,实际上处于未定状态,即该虚拟机究竟要在哪台ESXi主机上启动,所以稍有问题就会造成其处于孤立状态。排查的方法是,在vCenter Server上检测,看是否是由于vMotion或者DRS造成的,因为DRS会调用vMotion。在任务管理页面查看是否存在任务项目,检测处于orphaned状态的虚拟机被注册到哪台ESXi主机上,并重启该ESXi主机的管理服务,一般就可以解决该故障。如果没有找到虚拟机被注册的信息,就可以通过手动的方法,注册虚拟机到ESXi主机或者vCenter Server上,或者利用orphaned状态虚拟机的VMDK文件创建全新的虚拟机。从虚拟机层面上看,是否因为没有通过vCenter Server对VM进行了删除操作,因为删除VM可以通过vCenter Server或者ESXi主机来进行。

如果在ESXi主机上删除VM,就很容易导致两边的信息不同步,造成在vCenter Server存在残留信息。解决方式是,执行“ls /vmfs/volumes/share/vpc”命令,来检测虚拟机文件是否存在。如果配置文件被删除,可以重建虚拟机来重建“.vmx”文件,或者利用备份的“.vmx”文件来恢复虚拟机。如果虚拟机的磁盘文件被删除,可以利用之前的备份计划进行恢复。当然,如果虚拟机的“.vmx”配置文件出现问题,因为其中包含了虚拟机的所有配置信息,所以也可能导致其处于孤立状态。可以使用之前的备份进行恢复。

如果损坏的不严重,可以将其下载到本地,使用Ultraedit等编辑器将其打开,删除不需要的部分,修复其内容后再将其上传回去。也可以直接从Inventory中删除处于孤立状态的虚拟机之后重建即可。如果存储服务器和ESXi主机的连接出现抖动状态,同样会造成上述故障。从ESXi主机层面上讲,如果根文件系统空间不足,因为其优先级是最高的,所以可能强行删除虚拟机的部分文件,造成虚拟机出现孤立状态。在ESXi主机的DCUI界面中执行“df -h”命令,来查看磁盘空间使用情况,并根据需要清除不需要的内容。

猜你喜欢

快照磁盘命令
面向Linux 非逻辑卷块设备的快照系统①
叶腊石聚合成型及其旋转磁盘的制作方法
EMC存储快照功能分析
只听主人的命令
它的好 它的坏 详解动态磁盘
解决Windows磁盘签名冲突
修改磁盘属性
移防命令下达后
应用Hbase快照机制
一种基于Linux 标准分区的快照方法