- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
是否可以在 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中的每一个都有相同的分区表。
在许多文档中,例如 cgssecurity和 kernel.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 阵列时,问题会接踵而至,因为并非所有驱动器都同步。)
以下是要遵循的步骤:
ldmtool
,请键入 apt-get install ldmtool
。在大多数其他最新的 Linux 发行版上应该同样容易。ldmtool create all
。/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/
我在网上搜索但没有找到任何合适的文章解释如何使用 javascript 使用 WCF 服务,尤其是 WebScriptEndpoint。 任何人都可以对此给出任何指导吗? 谢谢 最佳答案 这是一篇关于
我正在编写一个将运行 Linux 命令的 C 程序,例如: cat/etc/passwd | grep 列表 |剪切-c 1-5 我没有任何结果 *这里 parent 等待第一个 child (chi
所以我正在尝试处理文件上传,然后将该文件作为二进制文件存储到数据库中。在我存储它之后,我尝试在给定的 URL 上提供文件。我似乎找不到适合这里的方法。我需要使用数据库,因为我使用 Google 应用引
我正在尝试制作一个宏,将下面的公式添加到单元格中,然后将其拖到整个列中并在 H 列中复制相同的公式 我想在 F 和 H 列中输入公式的数据 Range("F1").formula = "=IF(ISE
问题类似于this one ,但我想使用 OperatorPrecedenceParser 解析带有函数应用程序的表达式在 FParsec . 这是我的 AST: type Expression =
我想通过使用 sequelize 和 node.js 将这个查询更改为代码取决于在哪里 select COUNT(gender) as genderCount from customers where
我正在使用GNU bash,版本5.0.3(1)-发行版(x86_64-pc-linux-gnu),我想知道为什么简单的赋值语句会出现语法错误: #/bin/bash var1=/tmp
这里,为什么我的代码在 IE 中不起作用。我的代码适用于所有浏览器。没有问题。但是当我在 IE 上运行我的项目时,它发现错误。 而且我的 jquery 类和 insertadjacentHTMl 也不
我正在尝试更改标签的innerHTML。我无权访问该表单,因此无法编辑 HTML。标签具有的唯一标识符是“for”属性。 这是输入和标签的结构:
我有一个页面,我可以在其中返回用户帖子,可以使用一些 jquery 代码对这些帖子进行即时评论,在发布新评论后,我在帖子下插入新评论以及删除 按钮。问题是 Delete 按钮在新插入的元素上不起作用,
我有一个大约有 20 列的“管道分隔”文件。我只想使用 sha1sum 散列第一列,它是一个数字,如帐号,并按原样返回其余列。 使用 awk 或 sed 执行此操作的最佳方法是什么? Accounti
我需要将以下内容插入到我的表中...我的用户表有五列 id、用户名、密码、名称、条目。 (我还没有提交任何东西到条目中,我稍后会使用 php 来做)但由于某种原因我不断收到这个错误:#1054 - U
所以我试图有一个输入字段,我可以在其中输入任何字符,但然后将输入的值小写,删除任何非字母数字字符,留下“。”而不是空格。 例如,如果我输入: 地球的 70% 是水,-!*#$^^ & 30% 土地 输
我正在尝试做一些我认为非常简单的事情,但出于某种原因我没有得到想要的结果?我是 javascript 的新手,但对 java 有经验,所以我相信我没有使用某种正确的规则。 这是一个获取输入值、检查选择
我想使用 angularjs 从 mysql 数据库加载数据。 这就是应用程序的工作原理;用户登录,他们的用户名存储在 cookie 中。该用户名显示在主页上 我想获取这个值并通过 angularjs
我正在使用 autoLayout,我想在 UITableViewCell 上放置一个 UIlabel,它应该始终位于单元格的右侧和右侧的中心。 这就是我想要实现的目标 所以在这里你可以看到我正在谈论的
我需要与 MySql 等效的 elasticsearch 查询。我的 sql 查询: SELECT DISTINCT t.product_id AS id FROM tbl_sup_price t
我正在实现代码以使用 JSON。 func setup() { if let flickrURL = NSURL(string: "https://api.flickr.com/
我尝试使用for循环声明变量,然后测试cols和rols是否相同。如果是,它将运行递归函数。但是,我在 javascript 中执行 do 时遇到问题。有人可以帮忙吗? 现在,在比较 col.1 和
我举了一个我正在处理的问题的简短示例。 HTML代码: 1 2 3 CSS 代码: .BB a:hover{ color: #000; } .BB > li:after {
我是一名优秀的程序员,十分优秀!