除了一个仍在运行 Xen/RHEL5 的虚拟主机外,我们所有的虚拟功能都托管在带有 LVM 存储设备的 KVM 主机上。我愚蠢地尝试在运行在 Xen 机器上的客户机上进行 Ubuntu 完整版本升级,结果却安装了一个非 Xen 内核并拒绝启动(新手错误)。
说到实际问题,有问题的机器使用基于单个文件的存储设备。我已经有一段时间没有打开过这样的设备了,但这个过程应该与打开 LVM 卷没有太大区别,但出于某种原因,我没有在设备文件中看到分区表。
root@vh1 web2.entrant # losetup -a
/dev/loop2: [0902]:34603012 (storage.img)
/dev/loop3: [0902]:32768005 (/srv/xen/domains/web2.entrant/disk.img)
root@vh1 web2.entrant # fdisk -l /dev/loop3
Disk /dev/loop3: 68.7 GB, 68719476736 bytes
255 heads, 63 sectors/track, 8354 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Disk /dev/loop3 doesn't contain a valid partition table
检查同一台主机上另一台机器的分区文件会产生同样的问题(没有有效的分区表),但它仍然可以正常启动/运行,这本身就很奇怪。
编辑:(添加 kpartx)
root@vh1 ~ # kpartx -av /srv/xen/domains/web2.entrant/disk.img
root@vh1 ~ #
没有消息(如预期)说明已添加哪些分区
编辑:(尝试 guestfish、virt-rescue 等)
[root@vh1 web2.entrant]# virt-rescue --rw --suggest -a /srv/web2.entrant/disk.img
Inspecting the virtual machine or disk image ...
This disk contains one or more filesystems, but we don't recognize any
operating system. You can use these mount commands in virt-rescue (at the
><rescue> prompt) to mount these filesystems.
# /dev/vda has type 'unknown'
和 guestfish 一起:
><fs> add-ro disk.img
><fs> run
><fs> list-filesystems
/dev/vda: unknown
><fs> lvs
><fs>
我假设我已经完全弄乱了分区表,不幸的是我没有得到机器分区布局的副本(看到它从另一个客户机复制而来(启动时)在尝试相同过程时似乎显示相同的空分区表)
答案1
您尝试过使用kpartx
工具吗?
使用类似:kpartx -av path_to_disk_image
。它将创建循环条目,以便您可以将分区挂载到您想要的任何位置。可能看起来像:mount mount_point_path /dev/mapper/loopXpX
。
答案2
答案3
您是否尝试过简单地安装磁盘映像本身,而不使用分区表?即 mount -o loop /path/to/disk.img /mnt/testing
我似乎记得客人可以是原始分区。
如果您有 vm.cfg 文件,这也会有帮助。