如何利用Libguestfs修复受损虚拟机?

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

作为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命令:

  1. scp –r 192.168.178.30:/vmfs/volumes/datastore1/Windows* 

使用guestfish操作虚拟机

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

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

  1. ><fs> run 
  2. ><fs> list-filesystems 
  3. /dev/sda1: ntfs 
  4. /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,之后就进入了><rescue>模式。

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

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

责任编辑:黄丹 来源: TechTarget中国
相关推荐

2013-11-19 14:05:08

VDP虚拟机

2010-01-21 11:17:36

xen虚拟机

2016-01-05 10:06:09

软件移植受损代码代码复制

2012-04-10 10:29:29

2010-12-23 14:05:12

虚拟机

2019-02-20 09:54:25

Windows 10Java虚拟机

2022-08-14 09:11:13

Kubernetes容器云原生

2010-03-19 15:59:08

2018-10-11 11:07:28

Windows虚拟机方法

2012-05-18 10:22:23

2012-06-29 09:34:57

网络管理Cisco UCS

2011-07-06 15:13:43

Active Dire虚拟机Description

2012-06-28 10:30:27

2012-11-08 10:45:14

2010-07-26 09:02:38

2010-02-26 15:28:15

Python虚拟机

2009-06-12 16:15:42

死锁Java虚拟机

2009-06-29 19:36:07

虚拟机备份虚拟环境

2012-04-27 09:29:57

虚拟化虚拟机

2018-07-10 15:10:50

OpenStack虚拟机metadata
点赞
收藏

51CTO技术栈公众号