gpt4 book ai didi

使用 Linux 恢复 Windows 跨磁盘 (LDM)?

转载 作者:IT王子 更新时间:2023-10-29 00:15:35 27 4
gpt4 key购买 nike

是否可以在 Linux 中读取 Windows 2008 LDM 分区?

我们有五个 512GB LUN 通过 ISCSI 导出到死掉的 Windows 2008,这个盒子不再需要它们了。 Windows 认为它​​们现在是原始设备...所以我想用 Linux 读取分区。我正在使用最新的 Ubuntu 来尝试至少保存一些数据。问题是到目前为止我找到的所有文档似乎都已过时(经常谈论 w2k 或 XP 逻辑磁盘管理器 (LDM)。但我认为现在它与 2008 不同。

Testdisk [0] 给我以下输出

testdisk /list LUN01
TestDisk 6.11, Data Recovery Utility, April 2009
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org
Please wait...
Disk LUN01 - 536 GB / 500 GiB - CHS 65271 255 63, sector size=512

Disk LUN01 - 536 GB / 500 GiB - CHS 65271 255 63
Partition Start End Size in sectors
1 P MS LDM MetaData 34 2081 2048 [LDM metadata partition]
No FAT, NTFS, EXT2, JFS, Reiser, cramfs or XFS marker
2 P MS Reserved 2082 262177 260096 [Microsoft reserved partition]
2 P MS Reserved 2082 262177 260096 [Microsoft reserved partition]
3 P MS LDM Data 262178 1048576966 1048314789 [LDM data partition]

注意:5个LUN中的每一个都有相同的分区表。

在许多文档中,例如 cgssecuritykernel.org ,他们谈论不返回任何有用信息的 ldminfo。我怀疑它现在已经过时了,只是因为很难找到 :) 而且因为它不起作用,我猜 Windows 2008 使用了不同的格式。

# ldminfo LUN01
Something went wrong, skipping device 'LUN01'
# losetup /dev/loop1 LUN01
# losetup -a
/dev/loop1: [fd00]:14 (/mnt/LUN01)
# ldminfo /dev/loop1
Something went wrong, skipping device '/dev/loop1'

然后,我尝试用 dmsetup 连接它们,但还是没有成功。这就是我使用 dmsetup 的方式:

# losetup /dev/loop1 LUN01
# losetup /dev/loop2 LUN02
# losetup /dev/loop3 LUN03
# losetup /dev/loop4 LUN04
# losetup /dev/loop5 LUN05
# blockdev --getsize /dev/loop1
1048577000
# cat > w2008.mapping
# Offset into Size of this Raid type Device Start sector
# volume device of device
0 1048577000 linear /dev/loop1 0
1048577000 1048577000 linear /dev/loop2 0
2097154000 1048577000 linear /dev/loop3 0
3145731000 1048577000 linear /dev/loop4 0
4194308000 1048577000 linear /dev/loop5 0
# dmsetup create myfs w2008.mapping
# mount -t ntfs /dev/mapper/myfs /mnt/final
NTFS signature is missing.
Failed to mount '/dev/loop1': Invalid argument
The device '/dev/loop1' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
# echo Poo.

所以仍然没有 NTFS 文件系统:)

有没有人知道我如何从那里提取数据或给我一些指示?

最佳答案

现在 ldmtool 存在,这是(更容易的)答案。

ldmtool 读取 LDM(又名 Windows 动态磁盘)元数据,并(除其他外)为相应的驱动器、分区和 RAID 阵列创 build 备映射器条目,允许您随后访问和挂载它们就像 Linux 中的其他 block 设备一样。

该程序确实有一些限制,主要是因为它根本不修改 LDM 元数据。因此,您不能在 Linux 中创建 LDM 磁盘(为此使用 Windows),并且您不应该在缺少磁盘的读写模式 RAID 卷中挂载。 (ldmtool 不会修改元数据以反射(reflect)发生了这种情况,下次 Windows 组装 RAID 阵列时,问题会接踵而至,因为并非所有驱动器都同步。)

以下是要遵循的步骤:

  1. 要在 Debian 和 Ubuntu 系统上安装 ldmtool,请键入 apt-get install ldmtool。在大多数其他最新的 Linux 发行版上应该同样容易。
  2. 运行 ldmtool create all
  3. 现在/dev/mapper 中应该有一堆新条目。找到正确的一个(在我的例子中,一个 RAID1 阵列,所以 /dev/mapper/ldm_vol_VOLNAMEHERE-Dg0_Volume2),然后用 mount -t ntfs/dev/mapper/这样的东西挂载它ldm_vol_VOLNAMEHERE-Dg0_Volume2

要在启动时自动完成此操作,您可能需要在启动序列的正确位置插入对 ldm create all 的调用,在 /etc/的内容之前fstab 已挂载。进行调用的一个好方法是:

[ -x /usr/bin/ldmtool ] && ldmtool create all >/dev/null || true

但是如何让这个片段在引导期间的正确时间运行将有很大差异,具体取决于您使用的发行版。对于 Ubuntu 13.10,我在 /etc/init/mountall.conf 中插入了上述行,就在脚本部分末尾的 exec mountall ... 调用之前。我现在可以在 /etc/fstab 中挂载我的 Windows LDM RAID1 分区。享受吧!

关于使用 Linux 恢复 Windows 跨磁盘 (LDM)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8427372/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com