如果我尝试在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
然后我得到/启动分区挂载。 但是,如果我input以下内容,则会出现错误:
# 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
是否有可能在客户端上find根分区并将其挂载到主机系统上?
似乎我终于想出了如何做我需要的事情。 这是我做的:
# kpartx -av /dev/VolGroup00/kvm101_img # vgscan
如果VolGroup名称在来宾系统和主机系统中相同,则必须重命名来宾VolGroup
# vgrename <uuid> VolGroupXX
您可以在vgdisplay查看VolGroups的uuid。 所以,诀窍在于激活来宾VolGroup:
# lvscan # vgchange -ay VolGroupXX # lvscan
之后,它很容易登上:
# mount /dev/VolGroupXX/LogVol00 /mnt
最后,落后的过程是:
# umount /mnt # vgchange -an VolGroupXX # kpartx -dv /dev/VolGroup00/kvm101_img # pvscan
最后一个命令清除LVMcaching,并从LVM中删除由kpartx创build的物理卷。
我很高兴你知道你的情况。
在更一般的情况下,来宾驱动器可能有多种格式,如qcow,qcow2等,因此您无法直接使用它们。 在这种情况下,你可能会在主机上使用类似的东西:
# modprobe nbd # kvm-nbd -c /dev/nbd0 file.qcow2
然后,您可以访问/ dev / nbd0作为原始客户驱动器。 要停止使用此设备,您应该运行:
# nbd-client -d /dev/nbd0
另一方面,如果访客驱动器是原始格式,则可以使用losetup:
# losetup -f file.raw
这将find并使用第一个可用的循环设备(例如/ dev / loop0)。 要停止使用它运行:
# losetup -d /dev/loop0
在此之后,您将能够执行您在答案中描述的kpartx / vgscan / lvscan / mount过程。
你可以使用guestfish – http://libguestfs.org/guestfish.1.html
从libguestfs软件包中使用guestfish可能会更容易guestfish ,它应该能够解决所有烦人的细节问题,而不是手动执行