我有几个同时具有 NTFS 和 Linux 分区的磁盘原始块副本。分区表通常同时具有 Windows NTFS 分区和 Linux LVM 分区。我需要处理所有这些分区来构建超级时间线 (log2timeline),但我需要一种好方法来查找 LVM 内的 ext 分区。
尽管我对术语有很好的掌握,但我对 LVM 命令一点也不熟悉。一旦我到达外部分区的字节偏移量,我就没事了,但我不想逐字节扫描磁盘以查找分区头和超级块。
答案1
据我所知,Linux LVM 内核驱动程序只能使用块设备作为物理卷,并且我不知道有任何用户态工具可以方便地访问 LVM 卷。所以你需要让物理卷显示为循环装置。 (我假设您正在运行 Linux;如果没有,请在必要时在虚拟机中运行它。)
首先,确定分区的偏移量。您可以fdisk
为此使用:
fdisk -lu /path/to/disk.image
记下所需分区的偏移量(在Start
列中),例如 123456。单位是 512 字节扇区。现在从图像创建一个循环设备,从所需的偏移量开始。
losetup -fv -o $((123456*512)) /path/to/disk.image
该分区将可用作块设备/dev/loop0
(如果您已经有活动循环设备,则数量可能会有所不同)。
Linux 内核有一个补丁可以自动访问循环设备上的分区。 Debian 将其应用到其原生内核中;大多数其他发行版都没有。如果您有此补丁,您可以运行losetup -fv /path/to/disk.image
并访问设备上的分区,例如/dev/loop0p1
等等。您可能需要向驱动程序传递一个显式参数才能启用此功能:rmmod -r loop && modprobe loop max_part=63
。
现在运行pvscan
。这应该会选取/dev/loop0
或/dev/loop0p1
或任何设备名称作为物理卷。然后,您可以使用 激活其上的卷组vgchange -ay
并访问 下的逻辑卷/dev/mapper
。