如何在KVM主机上挂载虚拟机的LVM分区?


11

如果我尝试在KVM主机上执行以下操作:

# kpartx -av /dev/VolGroup00/kvm101_img
add map kvm101_img1 : 0 208782 linear /dev/VolGroup00/kvm101_img 63
add map kvm101_img2 : 0 125612235 linear /dev/VolGroup00/kvm101_img 208845
# mount /dev/mapper/kvm101_img1 /mnt

然后我要挂载/ boot分区。但是,如果我输入以下内容,则会出现错误:

# mount /dev/mapper/kvm101_img2 /mnt
mount: you must specify the filesystem type

这是来宾计算机上的fdisk布局:

# fdisk -l
Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1          13      104391   83  Linux
/dev/hda2              14        7832    62806117+  8e  Linux LVM

是否可以在guest虚拟机上找到根分区并将其挂载在主机系统上?


我想您对kvm101_img2的引用是一个错字。应该是_img1,对吧?
joechip 2011年

_img1使用上述方法正确安装,但是_img1是/ boot分区,等效于guest虚拟机上的/ dev / hda1。问题是我无法挂载包含/ dev / hda2 Linux LVM的_img2。该分区布局是CentOS安装程序的默认设置。
Evolver

哦,好的,我被KVM的参考赶走了。那么,这个问题就没有KVM了,它只是另一个LVM内部的一个结构。
joechip

Answers:


14

看来我终于弄清楚了如何做自己需要的事情。这是我所做的:

# kpartx -av /dev/VolGroup00/kvm101_img
# vgscan

如果VolGroup在来宾系统和主机系统中的名称相同,则必须重命名来宾VolGroup

# vgrename <uuid> VolGroupXX

您可以签入VolGroups的uuid vgdisplay。因此,诀窍在于激活来宾VolGroup:

# lvscan
# vgchange -ay VolGroupXX
# lvscan

之后,它很容易安装:

# mount /dev/VolGroupXX/LogVol00 /mnt

最后,落后的过程是:

# umount /mnt
# vgchange -an VolGroupXX
# kpartx -dv /dev/VolGroup00/kvm101_img
# pvscan

最后一条命令清除LVM缓存,并从LVM中删除kpartx创建的物理卷。


您可能必须编辑来宾的fstab才能使用VolGroupXX而不是VolGroup00。
joechip 2011年

4

我很高兴您知道您的情况。

在更一般的情况下,来宾驱动器可能采用qcow,qcow2等各种格式,因此您将无法直接对其进行操作。在这种情况下,您可以在主机上使用类似的方法:

# modprobe nbd
# kvm-nbd -c /dev/nbd0 file.qcow2

然后,您可以访问/ dev / nbd0作为原始来宾驱动器。要停止使用此设备,您应该运行:

# nbd-client -d /dev/nbd0

另一方面,如果客户机驱动器为原始格式,则可以使用Lostup:

# losetup -f file.raw

这将找到并使用第一个可用的循环设备(例如,/ dev / loop0)。要停止使用它,请运行:

# losetup -d /dev/loop0

在此之后,您将能够执行您在答案中描述的kpartx / vgscan / lvscan /安装过程。


2

您可以使用guestfish- http: //libguestfs.org/guestfish.1.html


感谢您的建议,但不幸的是,我什至无法安装guestfish:我花了数小时进行谷歌搜索和调查-都没用,这是行不通的:(也许还有另一种挂载linux分区的方法?我不需要all-in-一个工具安装一切,只是LVM。
的Evolver

1
试着跑qemu-img info /path/to/image。如果您在“类型”框中获得的不是“ RAW”,则操作系统将无法将该映像作为分区挂载,因为它被格式化为特定于qemu的虚拟磁盘。这是guestfish处理的,它不仅仅是一个简单的安装工具
dyasny 2011年

1

仅从libguestfs软件包中使用可能会更容易guestfish,该软件包应该为您解决所有烦人的细节,而不是尝试手动进行操作

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.