在 LVM 内挂载磁盘分区

在 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

我如何指定正确的偏移量来将备份2(根文件系统)挂载到某处?

我尝试按照这篇文章计算起始位置:

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"错误,所以它没有尝试从应该读取的地方读取。有人知道这里的问题是什么吗?

答案1

如果我没看错的话,您有一个 Linux 虚拟机管理程序 (Xen dom0),其中有 Linux LVM 卷,用作 Xen 客户机 (domU) 的虚拟磁盘。您想直接从虚拟机管理程序访问该 LVM 中的数据,绕过 Xen 客户机。

我不再使用 Xen,但我认为该过程与我对 KVM 客户机所做的操作类似:

关闭客户 domU。(从两个不同位置访问文件系统会导致数据损坏)

在虚拟机管理程序运行时kpartx,它将扫描 LVM 以查找分区表,并为找到的每个分区创建设备条目(我假设有一个卷组客人以及 LVM客端名称-磁盘名称这是你的 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 LVM和格式将与物理卷相同,您还不能简单地挂载这些分区,因此需要使用 LVM 技巧。与挂载命令不同,步骤如下:

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

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

接下来需要启用卷组“VG-客人姓名”

[root@dom0 ]# vgchange -a y guestname 

并且lvscan应该显示在您的 domU 中创建的逻辑卷,并且设备映射器条目通常也现在创建,允许您执行以下操作:

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

据我所知,这在 Xen 中是不可能的,但可以在 KVM 中发生,这种不方便的情况是,虚拟机管理程序中使用的卷组名称与客户机中分配的名称相同。

答案2

没办法,您的坐骑可能不具备使用这个棘手的回送坐骑所需的能力。

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

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

您可以分两个步骤完成此操作:

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

执行losetup命令后,你可以用命令检查是否找到了真正的文件系统file -szL /dev/loop0

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

相关内容