在我前一篇关于Xen虚拟机存储的文章“如何在物理主机上挂载Xen虚拟机存储设备?”中,介绍了如何在使用物理设备作为存储后端的Xen虚拟机磁盘上执行维护。也学习了如何在虚拟磁盘里挂载分区,以便能更改配置文件和参数。在本文中,TechTarget中国的特约虚拟化作者Sander van Vugt将介绍如何在使用文件作为其存储后端的虚拟机上执行相同的操作。 挂载基于镜像的虚拟磁盘 挂载在镜像文件里的虚拟磁盘比挂载位于物理存储设备的虚拟磁盘困难得多。
不像物理设备,为了挂载镜像文件你需要知道回环设备。这个回环设备由内核模块(叫做回环)组成,确保对于每个你想挂载的文件,就会创建一个回环设备。这些回……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
在我前一篇关于Xen虚拟机存储的文章“如何在物理主机上挂载Xen虚拟机存储设备?”中,介绍了如何在使用物理设备作为存储后端的Xen虚拟机磁盘上执行维护。也学习了如何在虚拟磁盘里挂载分区,以便能更改配置文件和参数。在本文中,TechTarget中国的特约虚拟化作者Sander van Vugt将介绍如何在使用文件作为其存储后端的虚拟机上执行相同的操作。
挂载基于镜像的虚拟磁盘
挂载在镜像文件里的虚拟磁盘比挂载位于物理存储设备的虚拟磁盘困难得多。不像物理设备,为了挂载镜像文件你需要知道回环设备。这个回环设备由内核模块(叫做回环)组成,确保对于每个你想挂载的文件,就会创建一个回环设备。这些回环设备按顺序编号,第一个的名字在/dev/loop0。
你可能已经熟悉文件系统上的回环设备进程。例如,你能使用这个技术挂载.ISO文件。使用以下命令:
mount -o loop /bestand.iso /mnt
不过,如果你需要访问Xen虚拟磁盘文件里的分区,这个步骤帮不了你。你不想挂载文件,只想首先访问里面的分区,那么你需要在回环设备和你想访问的镜像文件之间使用losetup命令建立连接。在连接之前,输入下面的命令查看正在使用的回环设备:
losetup –a
假定没有回环设备正在使用,可以使用/dev/loop0作为回环设备,连接到Xen镜像文件。如果镜像文件的名字是/var/lib/xen/images/vm1/disk0,使用下面命令建立连接:
losetup /dev/loop0 /var/lib/xen/images/vm1/disk0
如果你再次使用losetup,你将发现已创建的回环设备,在回环设备和镜像文件之间存在连接。现在可以使用下面命令开始分析镜像文件里的分区:
fdisk -l: fdisk -l /dev/loop0
基于fdisk -l显示给你的信息。你应该能辨别哪个设备宿主根文件系统。发现后,你需要确保你有相同的设备文件用于镜像文件里的分区,以便挂载它们。如果安装了多路径工具包,使用下面命令:
kpartx -a /dev/loop0
由于镜像文件使用loop0设备,这个创建的设备文件的名字是/dev/mapper/loop0p1、/dev/mapper/loop0p2,以此类推。你现在能使用这些文件挂载文件系统,这些系统上安装了操作系统的根。这可以是Linux或Windows操作系统,因为你能在虚拟主机操作系统上挂载它们。一旦对这个文件系统作出必要的修改,输入下面命令正确卸载:
umount /mnt
kpartx -d /dev/loop0
losetup -d /dev/loop0
处理基于Linux虚拟机主机里的本地卷
在上面讨论的步骤中,我已经假定你的虚拟操作系统使用通用分区。不过,如果虚拟机使用Linux的话,情况就不同了。你可能使用本地卷管理(LVM)而不是分区。这让情况变得有点复杂,因为你不能通过简单的激活分区激活本地卷。
通常,当服务器启动时,将为每个可用设备扫描本地卷。不过由于虚拟机磁盘文件里的设备在启动时不可用,你需要自己扫描本地卷。
如果fdisk——我建议在存储后端文件上显示分区——是type 8e,你需要执行专门的步骤。在下面步骤中,我假定通过/dev/mapper/loop0p2设备,这个分区是可用的。
你需要确保这个分区由LVM子系统作为物理设备。只知道这个分区是type 8e是不够的,你需要告诉LVM子系统它是可用的,能作为物理设备,并且LVM能使用它。使用下面命令这样做:
pvscan /dev/loop0p2
接下来,你将被告知LVM卷组在物理设备里被发现了,但是你需要通过使用下面命令初始化这个卷组:
vgscan
为了完成LVM架构的重新配置,你需要在卷组里的本地卷使用下面命令:
lvscan
尽管你现在能再次访问本地卷,你将发现所有本地卷都没活动。你需要在挂载本地卷时修复这个问题。通过使用vgchange命令更改卷组的状态。这个命令将更改所有在volume group vm1vg的卷的状态,并激活它们:
vgchange /dev/vm1vg
LVM本地卷现在是激活的,并准备好挂载。例如,如果你想使用名称/dev/lvm1vg/root挂载本地卷,就该使用以下命令:
mount /dev/vm1vg/root /mnt
这时,你对本地卷里的所有文件有完全访问权。你现在能作出你需要的所有修改。
总结
在本文中,我们介绍了如果虚拟机本身不能启动时如何访问Xen虚拟机的所有文件。这能帮助你修复发生在虚拟机里的问题,在最糟的情形下,能帮助你回复失败的虚拟机。
翻译
相关推荐
-
XP安装桌面虚拟化客户端报错
使用恩杰的桌面虚拟化,win7及以上系统无报错,但在XP客户端安装 citrix receiver […]
-
做CTO最重要的技能是什么?是写代码吗?
不写代码能做好CTO吗?
-
pppcloud支持哪些系统镜像?
全ssd云主机平台pppcloud支持多达40种镜像,中秋节期间注册即送8.15现金券,www.pppclou […]
-
xen上配置npiv问题
请问有人在xenserver上配置成功过npiv吗?虚拟出的vport如何只给某个虚拟机使用?还是只能把存储中 […]