- 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/
我在服务器启动时创建一个缓存(服务器启动每次都需要10分钟)。目前我正在使用内存缓存(Ehcache)。现在我想建立一个机制,以便一旦数据被缓存我应该能够在几秒钟内启动服务器。比如将缓存的持久副本写入
我编写 json 结构的方式使得文件(在进行了一个月的测量后)存储在磁盘上时仍然只有 100 MB 左右。但是现在文件大约是 20mb,但我看到我的脚本需要的内存大约是 200/300 mb。显然,脚
Solaris9 x86下如何挂载和永久挂载windows fat32分区 临时挂载Shell 命令; mout –F pcfs /dev/dsk/c1d0p0:c /mnt/c mount
磁盘ID中的资源组名称大小写不敏感。重现此问题的步骤 - 在 Azure 中创建独立磁盘,检查 ID。对于例如 -“/subscriptions/subscriptionID/resourceGrou
我已将附加数据磁盘的备份还原到新虚拟机。当我发出命令 sudo blkid 时,我发现它与附加到原始虚拟机的数据磁盘具有相同的 UUID,因此我无需更改 fstab 即可在启动时挂载它。然而,它似乎是
在用户态中,执行磁盘 IO 就像链接 C 库一样简单,或者,如果您喜欢冒险,可以直接执行系统调用。我想知道内核本身是如何执行 IO 的。 换句话说,假设我在裸机上以特权模式运行应用程序。我将如何访问通
我已将附加数据磁盘的备份还原到新虚拟机。当我发出命令 sudo blkid 时,我发现它与附加到原始虚拟机的数据磁盘具有相同的 UUID,因此我无需更改 fstab 即可在启动时挂载它。然而,它似乎是
我正在尝试使用 laravel 和 ffmpeg 创建缩略图。但是我收到了这个错误。 磁盘 [视频] 没有配置驱动程序。 我的代码 public function index() { FFMp
我的目标是读/写 usb。 首先必须打开并读取 usb 低级别,如“程序” 我使用 visual c++ 和 winAPI 下面是我的测试代码 char path[64]; sprintf(path,
内核缓冲区缓存何时为空?这似乎不是 LINE Buffering。如果我写 () 一个没有换行符的字符串,它会立即输出到文件。 另外,socket文件的输入输出缓冲区是否也像Disk I/O一样使用内
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我有一个大型调用中心,有 250 个并发调用。队列日志的队列应用程序平面文件。该系统使用 Asterisk 和 Queuemetrics。两个服务都在同一台服务器上运行。规范为 16 核和 64 GB
我在使用安装了 Centos7 的 VMWare VM 时遇到问题。 lsblk 命令给出如下内容 df -h 给出这个 我正在尝试将 root lvm 扩展到分区,但无论我如何尝试都无法做到这一点。
在基于内存的计算模型中,通过考虑数据结构,可以抽象地完成唯一需要进行的运行时计算。 但是,关于高性能磁盘 I/O 算法的文档并不多。因此,我提出了以下一组问题: 1) 我们如何估计磁盘 I/O 操作的
我不是在寻找调用命令行实用程序的代码,它可以解决问题。我实际上很想知道用于创建 RAM 磁盘的 API。 编辑 动机:我有一个第三方库,它需要一个目录名,以便以某种方式处理该目录中的文件。我将这些文件
MySQL 数据库显示磁盘 I/O 利用率持续保持在 100% 左右。数据库服务器有 24 GB 内存。 我们尝试优化查询,但效果不佳。 请检查如下所示的当前配置参数: 参数 当前值 key_buff
这是交易。我们本可以采用完全静态 html 的方式来解决性能问题,但由于该站点将是部分动态的,因此这对我们来说行不通。我们想到的是使用 memcache + eAccelerator 来加速 PHP
对于游戏 Minecraft,运行服务器应用程序时的一般方法是在 RAMDisk 中运行它,因为它使用数百个小文件来生成世界,I/O 速度是主要瓶颈。 在最近的尝试中,我尝试使用 Dokan/ImDi
当我查找文件中的某个位置并写入少量数据(20 字节)时,幕后发生了什么? 我的理解 据我所知,可以从磁盘写入或读取的最小数据单位是一个扇区(传统上是 512 字节,但该标准现在正在改变)。这意味着要写
如何使用golang获取xen服务器的内存、磁盘、网络和cpu信息? 是否有任何可用的软件包? 最佳答案 与其他服务器有什么不同?如果没有 - 有一堆 Go 包可以做到这一点,我正在使用这个 - ht
我是一名优秀的程序员,十分优秀!