Evo*_*ver 13 virtualization linux lvm kvm-virtualization
如果我尝试在 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
Run Code Online (Sandbox Code Playgroud)
然后我正在安装 /boot 分区。但是,如果我输入以下内容,则会出现错误:
# mount /dev/mapper/kvm101_img2 /mnt
mount: you must specify the filesystem type
Run Code Online (Sandbox Code Playgroud)
这是客户机上的 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
Run Code Online (Sandbox Code Playgroud)
是否可以在来宾上找到根分区并将其挂载到主机系统上?
Evo*_*ver 15
似乎我终于想出了如何做我需要的事情。这是我所做的:
# kpartx -av /dev/VolGroup00/kvm101_img
# vgscan
Run Code Online (Sandbox Code Playgroud)
如果来宾系统和主机系统中的 VolGroup 名称相同,则必须重命名来宾 VolGroup
# vgrename <uuid> VolGroupXX
Run Code Online (Sandbox Code Playgroud)
您可以签入的 VolGroup 的 uuid vgdisplay。因此,诀窍在于激活访客 VolGroup:
# lvscan
# vgchange -ay VolGroupXX
# lvscan
Run Code Online (Sandbox Code Playgroud)
之后它很容易安装:
# mount /dev/VolGroupXX/LogVol00 /mnt
Run Code Online (Sandbox Code Playgroud)
最后,落后的过程是:
# umount /mnt
# vgchange -an VolGroupXX
# kpartx -dv /dev/VolGroup00/kvm101_img
# pvscan
Run Code Online (Sandbox Code Playgroud)
最后一个命令清除 LVM 缓存并从 LVM 中删除 kpartx 创建的物理卷。
我很高兴你解决了你的情况。
在更一般的情况下,来宾驱动器可以采用多种格式,例如 qcow、qcow2 等,因此您将无法直接处理它们。在这种情况下,您可能会在主机上使用类似的东西:
# modprobe nbd
# kvm-nbd -c /dev/nbd0 file.qcow2
Run Code Online (Sandbox Code Playgroud)
然后您可以访问 /dev/nbd0 作为原始来宾驱动器。要停止使用此设备,您应该运行:
# nbd-client -d /dev/nbd0
Run Code Online (Sandbox Code Playgroud)
另一方面,如果来宾驱动器是原始格式,则可以使用lostup:
# losetup -f file.raw
Run Code Online (Sandbox Code Playgroud)
这将找到并使用第一个可用的循环设备(例如,/dev/loop0)。要停止使用它,请运行:
# losetup -d /dev/loop0
Run Code Online (Sandbox Code Playgroud)
在此之后,您将能够执行您在答案中描述的 kpartx / vgscan / lvscan / mount 程序。