在LVM中装入磁盘分区

我有一个逻辑卷什么用于一个xen磁盘:

Disk /dev/d0_vg/backup: 10.7 GB, 10737418240 bytes 1 heads, 1 sectors/track, 20971520 cylinders, total 20971520 sectors Units = cylinders of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00001b22 Device Boot Start End Blocks Id System /dev/d0_vg/backup1 * 64 208839 104388 83 Linux /dev/d0_vg/backup2 208846 19406517 9598836 83 Linux /dev/d0_vg/backup3 19406521 20964808 779144 82 Linux swap / Solaris 

我如何指定正确的偏移来安装backup2,根文件系统的某处?

我试图按照这篇文章计算出发点:

https://www.novell.com/coolsolutions/tip/19710.html

 208846*512=106929152 mount -o loop,offset=106929152 /dev/d0_vg/backup2 /mnt/ 

我总是得到"mount: you must specify the filesystem type"错误,所以它不会试图从它应该的地方读取它。 任何人都知道这里有什么问题?

如果我正确地读你的问题,你有一个Linux虚拟机pipe理程序(一个Xen dom0)与Linux LVM卷,用作您的Xen客户(domU)的虚拟磁盘。 而且你想直接从虚拟机pipe理程序访问该LVM中的数据,绕过Xen虚拟机。

我不再使用Xen了,但我想象的过程与我使用KVM来宾所做的相似:

closures客人domU。 (从两个不同的位置访问文件系统是要求数据损坏)

在虚拟机pipe理程序上运行kpartx ,它将扫描分区表的LVM并为每个find的分区创build设备条目(我假设有一个卷组来宾和一个LVM guestname-diskname ,这是domU的虚拟硬盘)

 [root@dom0 ]# kpartx -a /dev/Guests/guestname-diskname 

如果你的Xen客户机中有三个分区,则会导致3个新的设备条目: /dev/Guests/guestname-diskname[1-3]

那么你应该可以简单地用一个文件系统挂载一个分区:

 [root@dom0 ]# mount -t ext3 /dev/Guests/guestname-diskname2 /mnt 

如果您在domU中使用LVM,则会变得稍微复杂一些; 那么这些分区是8e Linux LVMtypes的,并且被格式化为物理卷,您不能简单地挂载,而需要使用LVM技巧。 而不是mount命令的步骤变成:

希望您可以检测到domU中存在的卷组:

 [root@dom0 ]# vgscan Found volume group "Guests" using metadata type lvm2 Found volume group "VG-guestname" using metadata type lvm2 <== NEW! 

接下来,您需要启用卷组“VG-guestname”

 [root@dom0 ]# vgchange -ay guestname 

一个lvscan应该显示在你的domU中创build的逻辑卷,并且设备映射器条目现在也是现在创build的,这样你就可以执行如下操作:

 [root@dom0 ]# mount -t ext3 /dev/VG-guestname/guest-lvname /mnt 

IIRC在Xen中是不可能的,但是在KVM中可能会发生这种情况,在这种情况下,pipe理程序中使用的卷组名称与guest虚拟机中分配的卷组名称相同。

没办法,可能你的挂载不具备使用这个棘手的回送装载所需的能力。

如果你正在装入东西,mount命令首先调用一个losetup ,最后挂载这个losetup设备。 通常是/dev/loop0 (或更大)。

使用losetup命令,您可以挂载一个文件或文件的一部分,就像它是一个普通的分区一样。 它实际上与守护者部落的守护进程一样。 这次我们使用这个losetup将/dev/d0_vg的一部分/dev/d0_vg到一个新的块设备,到/dev/loop0

你可以通过两步来做到这一点:

 losetup /dev/loop0 /dev/d0_vg --offset=$[208846*512] mount /dev/loop0 /mnt 

在losetup命令之后,您可以检查是否使用命令file -szL /dev/loop0find了真正的文件系统。

卸载之后,必须使用losetup -d命令删除loop0设备。