受损虚拟机的修复方法

作为VMware虚拟化环境管理员,你肯定遇到过虚拟机无法启动的情况。实施排错时,你需要对虚拟机的内部进行检查。而Libguestfs
Linux工具集可以在这种情况下为你提供帮助。

利用Libguestfs找出损坏的虚拟机文件

Libguestfs允许在虚拟机上挂载任何类型的文件系统,以便修复启动故障。作为一款管理KVM环境中虚拟机的原生Linux工具,默认情况下并不适用于所有VMware平台。所以管理员不会将其作为首选的工具,但是却值得花费一些时间来配置和使用。

使用Libguestfs,首先需要使用Libvirt.Libvirt是一个管理接口,可以和KVM、Xen和其他一些基于Liunx的虚拟机相互连
接。Libguestfs的功能更加强大,可以打开Windows虚拟机上的文件。这意味着除了能够使用libguestfs,你还需要一些关于虚拟机操
作系统内部架构的知识。但是首先你需要将虚拟机迁移到libguestfs可用的环境当中,也就是Linux环境。

为了将虚拟机迁移到Linux当中,你可以使用SSH连接到ESXi主机,这意味着你首先需要启用ESXi主机上的SSH访问方式。

完成之后,在Linux平台上运行下面的scp命令:scp
–r192.168.178.30:/vmfs/volumes/datastore1/Windows*

使用guestfish操作虚拟机

完成虚拟机磁盘镜像文件的复制之后,可以在libguestfs中使用guestfish这样的工具将其打开,这样就可以直接在vmdk文件上进行操作了。使用guestfish
-rw -a
/path/to/windows.vmdk命令来在虚拟机中创建一个连接到文件系统的交互式shell.在新出现的窗口中,你可以使用特定的命令来操作虚拟机文件。

第一个任务就是找到可用的文件系统:

> run

> list-filesystems

/dev/sda1: ntfs

/dev/sda2: ntfs

当你使用guestfish shell找到可用文件系统类型之后,就可以进行挂载了。使用命令mount /dev/sda2 /
来挂载二个分区的内容--在Linux中是/dev/sda2--到guestfish根目录下。在guestfish中,你不能像在其他shell环境
中一样操作目录。挂载的分区就是根目录,你不能使用cd命令来切换目录,这意味着所有的路径必须是完全限定路径,从根目录开始。在guestfish
shell当中可以使用像ls、cat、more、download这样的命令,来查看和下载文件以及目录,输入help可以看到完整的命令信息。在完整
所有操作之后可以使用exit来关闭guestfish
shell.

Virt-rescue提供了直接访问方式

在libguestfs工具中,还有许多其他可用的工具。virt-rescue命令--是使用正常的Linux文件系统工具来实现ad-hoc变化的最
佳命令--可以在安全shell中启动虚拟机。你可以在虚拟机中操作这些文件,就像对挂载的文件系统上进行操作一样,其提供了对虚拟机内容更加直接的访问
方式。

为了在虚拟机上使用virt-rescue命令进行操作,使用virt-rescure加上客户端主机名来打开virt-rescue
shell,之后就进入了>模式。

如果需要在虚拟机中挂载系统文件,可以使用fdisk -l /dev/sda命令来查看虚拟机的分区情况,之后再使用命令mount
/dev/sda1 /sysroot挂载你想要访问的分区。这样你就可以通过更改来修复虚拟机的内容了。

虚拟机修复之后,关闭virt-rescue
shell,将虚拟机重新移动到ESXi服务器的数据存储当中。虚拟机返回原位置之后,如果之前的操作一切顺利,你就应该可以访问它了。

时间: 2024-10-04 01:37:42

受损虚拟机的修复方法的相关文章

xfs文件系统修复方法

首先尝试mount和umount文件系统,以便重放日志,修复文件系统,如果不行,再进行如下操作. 1.检查文件系统:先确保umount xfs_check /dev/sdd(盘符); echo $? 返回0表示正常 2.执行xfs_repair -n,检查文件系统是否损坏,如何损坏会列出将要执行的操作 如果幸运的话,会发现没有问题,你可以跳过后续的操作.该命令将表明会做出什么修改,一般情况下速度很快,即便数据量很大,没理由跳过. 3.执行xfs_repair修复文件系统 xfs_repair /

UEFI BIOS模式下Windows系统启动过程以及引导文件修复方法

有关UEFI BIOS基础知识的简介,一年前在网易博客做过详细的概述.鉴于某些网友仍然对UEFI下Windows的启动过程不甚了解,虽然网上有各式各样的启动修复工具,但是对于新手来说,如果不明白其中的原理,使用工具也会畏首畏尾.十分盲目.现在详细介绍一下UEFI下Windows的启动流程以及引导文件修复方法.有关UEFI简介可以参考本博客的一篇文章: UEFI入门科普:http://www.heu8.com/117.html 在上述文章中已经展示出了UEFI下Windows的启动流程: UEFI

常见浏览器bug(针对IE6及更低版本)及其修复方法

常见bug及其修复方法有以下几种 1.双外边距浮动bug 双外边距浮动bug在IE6及更低版本中常见.所谓双外边距浮动bug是指使任何浮动元素上的外边距加倍.(见下图) 只要将元素的display属性设置成inline就行了.因为元素时浮动的,所以将display属性设置为inline实际上不会影响显示方式.但是,这似乎会阻止Windows上的IE6及更低版本将所有外边距加倍.所以每当对具有水平外边距的元素浮动时,都应该很自然的将display属性设置为inline,以备外边距将来被加大. 2.

关于阿里云ECS Centos 5/6/7 Linux Glibc库严重安全漏洞修复方法

日前Linux GNU glibc标准库的 gethostbyname函数爆出缓冲区溢出漏洞,漏洞编号为CVE-2015-0235.黑客可以通过gethostbyname系列函数实现远程代码执行,获取服务器的控制权及Shell权限,此漏洞触发途径多,影响范围大,请大家关注和及时临时修复.关于阿里云ECS Linux Glibc库严重安全漏洞修复方法.Centos 5/6/7:连接终端,或者putty登录首先检测目前的版本输入命令: rpm -qa | grep glibc 我的显示:glibc-

内存不能为read修复方法:(转自:网上(忘记了))

指令修复法!开始菜单,运行 ,输入cmd, 回车,在命令提示符下输入(复制即可) : for %1 in (%windir%\system32\*.ocx) do regsvr32.exe /s %1粘贴,回车,滚动完毕后,再输入:for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1回车!直到屏幕滚动停止为止,重启电脑! 内存不能为read修复方法:(转自:网上(忘记了)),布布扣,bubuko.com

Windows 7 EXE图标丢失修复方法

有过Win7下的一些EXE文件图标莫名奇妙丢失,但功能却正常的情况吗?这是图标缓存的问题,应该是Win7的bug. 在命令提示符下输入下列命令即可恢复. 以下是代码片段: taskkill /im explorer.exe /f  cd /d %userprofile%\appdata\local  del iconcache.db /a  start explorer.exe  exit Windows 7 EXE图标丢失修复方法,布布扣,bubuko.com

Linux Bash严重漏洞修复方法

bash 是一个为GNU计划编写的Unix shell.:Bourne-Again SHell - 这是关于Bourne shell(sh)的一个双关语(Bourne again / born again).Bourne shell是一个早期的重要shell,由史蒂夫·伯恩在1978年前后编写,并Version 7 Unix一起发布.bash则在1987年由布莱恩·福克斯创造.在1990年,Chet Ramey成为了主要的维护者. shell在linux系统所处的位置: 常见linux和UNIX

数据库显示可疑的修复方法

在使用SQL Server 2008数据库时发现数据库被标记为可疑,查看网上的资料终于找到了解决办法,接下来我们就来介绍解决方法. 解决方法: 当数据库发生这种操作故障时,可以按如下操作步骤可解决此方法,打开数据库里的Sql 查询编辑器窗口,运行以下的命令. 1.修改数据库为紧急模式 ALTER DATABASE 数据库名称 SET EMERGENCY 2.使数据库变为单用户模式 ALTER DATABASE 数据库名称 SET SINGLE_USER 3.修复数据库日志重新生成,此命令检查的分

IE常见bug及其修复方法

    一.双边距浮动的bug 1.1一段无错的代码把一个居左浮动(float:left)的元素放置进一个容器盒(box) 2.1在浮动元素上使用了左边界(margin-left)来令它和容器的左边产生一段距离 在ie6或更低版本中产生双倍外边距 修复方法 在浮动元素上添加display:inline属性即可     二.3像素文本偏移bug 2.1 一段文本与浮动元素相邻的时候,会出现图文环绕,为了不让其文本环绕左边floatBox浮动盒子,我们设置段落外左边距margin-left为floa