我有XEN 4.0.xx和Cent OS 5.5
在/ var / lib / xen / images目录下,存储在dom0上的每个虚拟机的.image文件。 这是硬盘上的一些块,我可以从dom0挂载这个文件并访问dom0的文件系统。
我真正想要做的是挂载VM的文件系统,并访问/ etc / sysconfig / network-scripts目录。 有没有办法呢?
我试着直接使用'mount -o loop /var/lib/xen/images/VMname.img',但是它没有要求文件系统的types。 我没有得到任何文件系统types使用这个图像的'文件'命令。 这个图像是一个可访问的文件或XEN创build的某种types的二进制文件或系统文件。 如果它是一个二进制文件,我认为我们不能用它做很多事情。 但是,如果它是可访问的格式,我们可以用它做一些事情。 我想知道我能做到的方式。
虚拟机映像更像是一个完整的硬盘,而不是一个可以挂载的文件系统,这意味着它有一个分区表。 您可以使用kpartx
工具来使所有的分区都可以像这样挂载:
# kpartx -av /var/lib/xen/images/VMname.img add map loop0p1 : 0 29333504 linear /dev/loop0 2048 add map loop0p5 : 0 1380352 linear /dev/loop0 29337600 # mount /dev/mapper/loop0p1 /mnt
完成后卸载所有分区,可以使用以下命令将其从设备映射器中删除:
# kpartx -d /var/lib/xen/images/VMname.img
(请注意, http: //ppadala.net/blog/2010/09/kpartx-to-mount-vm-disk-images/的示例为cribbed)
对于更广泛的修改,你可能希望看看这个guestfish工具。
正如你从上面的评论可以看到,我无法安装第二个循环,因为它又是一个LVM分区。 我终于find了一种方法来挂载VM.img文件,并从Dom-0在来宾机器上进行任何configuration。
请按照以下步骤安装映像文件:
首先在dom-0上启动vgscan命令,它会给你当前在dom-0上激活的逻辑卷。 现在你可以放心地假设这个命令显示的这个卷号是你的dom-0机器,而不是任何guest。
现在执行kpartx -av /var/lib/xen/images/$machine_name.img该命令将映射VM映像文件的循环,并激活guest虚拟机的VolumeGroup。
现在再次使用fire vgscan命令,除了在步骤1中看到的内容之外,还会看到另外一个VolGroup。现在可以确定这是您的guest虚拟机的卷组。
现在您应该知道VolumeGroup中的逻辑卷成功安装它。 对于这个消息,命令vgchange -ay / VolGroup00(在步骤2中新创build的卷组)/
现在执行lvs命令,这会给你VolGroup中的逻辑卷。
现在创build一个挂载点并挂载你想要挂载的任何逻辑卷,如下所示
mount / dev / VolGroup00 / LogVol00 $ mount_path
现在,您可以通过这种方式访问Guest虚拟机的任何目录,并修改所需的任何configuration。 一旦你完成,你可以按照相反的程序
a)挂载$ mount_path
b)vgchange-VolGroup00
c)kpartx -d /var/lib/xen/images/$machine_name.img
你完成了