Chinaunix首页 | 论坛 | 博客
  • 博客访问: 442909
  • 博文数量: 95
  • 博客积分: 7012
  • 博客等级: 少将
  • 技术积分: 1127
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-13 22:49
文章存档

2010年(5)

2009年(43)

2008年(47)

我的朋友

分类: LINUX

2009-07-18 11:39:47

如 果你所使用的Xen虚拟机出现故障,不能正常启动的话,可以考虑把虚拟机的后端存储设备挂载到基于Xen服务器的Linux文件系统上,这是一个不错的解 决办法。通过这个方法,你可以轻松地修复虚拟机。在本文中我将介绍的是如果后端存储设备是物理设备的话以及本方法是如何完成的。

  为什么要把虚拟机挂载到物理机上?

   Xen使用的是虚拟硬盘驱动(VHD:Virtual Hard Drive),这个VHD存放在基于Xen系统的一台主机上。出于本文的写作目的,我把VHD在主机上存放的位置称之为后端存储设备。针对后端存储设备现 在有两种常见的配置方案:最简单的解决方法是使用磁盘文件镜像,这个磁盘文件镜像是通过宿主操作系统来创建的,也是虚拟机安装其文件的位置;另外一个方法 就是使用一个物理设备作为一个后端存储设备,这个设备可以是一个逻辑卷、一个分区或者是一个存储区域网络(Storage Area Network,即SAN)上的逻辑单元号(Logic Unit Numbers,即LUN)。本质上你可以使用任何存储设备来完成,并且由于在性能上比较高效,所以这个方案现在用得比较广泛。

   通过在宿主操作系统上挂载一个虚拟机,你可以很轻松地完成任何必要的系统维护工作。如果虚拟机上运行的是Linux操作系统,这个方法使用起来就更方便 了,因为Xen宿主操作系统也是一个Linux。另外一个原因是有一个虚拟机维护的工具在Linux宿主系统下默认安装的,这个工具是基于Xen环境下虚 拟机维护最有用的工具。但是即使虚拟机使用的是Windows系统,也有多种方法,你可以使用NTFS中的维护工具,这些工具在当前系统中都是可用的。

   如果宿主操作系统中没有你所需要的工具(对于一些高级NTFS工具,会有这种情况),你就需要从一个安装有Linux系统的CD(如Knoppix)重 启物理机。在这种情况下,要注意一个问题:一定要把基于Xen服务器的所有其它正常运转的虚拟机迁移到网络中的其它物理服务器上。

  挂载一个物理后端存储设备

  对于挂载一个后端存储设备,重要的是首先需要确定要挂载的设备类型。这是因为挂载一个物理设备的程序和挂载一个磁盘镜像文件的程序有很大的不同,我会在以后的文章中阐述如何使用Xen镜像文件。
  
   首先我们假设后端存储设备在主机上是可见的,文件名是/dev/hosts/vm1,并且作为一个逻辑卷管理器(Logical Volume Manager,即LVM)而存在。另外,如果你使用其他设备(如一个分区、一个完整的硬盘或者SAN上的一个LUN),这个方法也同样适用。唯一需要做 的就是把文件名/dev/hosts/vm1根据你所使用的设备改为正确的名字。

  在Xen虚拟机上,物理后端存储设备包括一个完整的硬盘,就是说在磁盘内也有一个分区表。为了在后端存储设备上依次挂载文件系统,你首先需要知道后端存储设备是如何分区的。可以使用下面的这个命令来查看存储设备的分区情况:

  fdisk –l /dev/host/vm1

   现在就可以知道存储设备的分区情况了。但是由于宿主操作系统不能识别这些分区,并且在宿主操作系统中也没有对应的设备文件,所以现在仍然不能挂载这些分 区。不过可以使用kpartx这个工具,这个工具是多路径工具包的一部分,使用它可以创建这些设备文件。具体使用这个工具的命令如下:

  kparts –a /dev/host/vm1

  运行这个命令之后,就可以在/dev/mapper目录下看到所有需要的设备文件了。这些设备文件都是以你使用的设备的名字开头,紧接着的是特定设备的一个分区号。如/dev/host/vm1的第一个分区就变为了/dev/host/vm1p1。

  接下来,需要找到存放根文件系统的分区。在找到这个分区之后,你就可以把这个分区挂载到物理机上了。如果你不能确定存放根文件系统的分区,逐个挂载这些分区,一一尝试。假设根文件系统在vm1上的第二个分区,使用如下命令挂载该分区:

  mount /dev/mapper/vm1p2/mnt

   运行上述命令之后,你就可以访问虚拟机的后端存储设备上的所有文件了。此时,因为你拥有对全部的文件系统的全部访问控制权限,所以你对虚拟机的任何修改 操作都将存储在这些文件中。最后要记住卸载这个分区并且使用kpartsx命令移除你所创建的临时设备文件。可以使用下面两个命令完成这个操作:

  umount /mnt
  kpartx –s /dev/host/vm1

  小结

  通过上述介绍可以知道在排除虚拟机的故障的时候没有必要使用花费很大的修复工具,仅通过挂载虚拟机的后端存储设备就可以。另外通过本文的介绍,你也可以掌握对于后端存储设备存放在硬件设备内的情况下,如何通过挂载后端存储设备来修复虚拟机。

阅读(2295) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~