我有一台旧的 XP 机器,在 Raid0 中,有 2 个 120gb 驱动器Sil3112 controller
。驱动器完好无损(据我所知),但主板或 P4 已损坏。
我很想从驱动器中恢复珍贵的照片或将其全部内容转储到外部驱动器上。我开始明白 Ubuntu 可能能够在现代系统上重建阵列,这样我就可以使用 liveCD 恢复数据。这是正确的吗?
如果是的话,我是否需要一台具有现有 Raid 端口/控制器等的机器,还是只需要一块具有常规 sata 连接的主板。在此先感谢您对此主题的任何帮助。
答案1
it8212“假 RAID”控制器和 RAID0 上的几个磁盘也遇到了同样的问题。令人惊讶的是,mdadm 可以解决这个问题,不过需要一点反复试验。如果您知道/记得块大小(每个磁盘的每个并行磁盘读/写的量),您可以尝试类似这样的方法(暂时不要尝试):
sudo mdadm --build --verbose --run --chunk=64 /dev/md0 --level=raid0 --raid-devices=2 /dev/sde /dev/sdd
如果 /dev/md0 已被占用,请随意使用增量数字而不是 0。当然,/dev/sde 和 /dev/sdd 在我的情况下是磁盘,64k 是我的块大小,但您可以使用以下命令轻松确定自己的配置:
sudo fdisk -l
这列出了所有物理磁盘的所有分区。我们感兴趣的两个分区在大小、磁柱、扇区等方面应该完全相同。此外,由于参数顺序绝对重要,第一个(代替我的 /dev/sde)应该看起来有一个分区表(或者其中的一部分,如果你使用了扩展 dos 分区),而第二个(我的 /dev/sdd)似乎完全损坏。不过,小心不要触碰你的其他非 raid 磁盘 :-) OTAH,如果两者都无效,你可以停止阅读这个答案,它对你不起作用 :-(
使用 --build (而不是 --create) 的优点是可以跳过超级块信息的创建,避免数据擦除的风险,最重要的是,从扇区 0 开始创建真实数据,从而创建所谓的“遗留”程序集,这是大多数“假 raid”芯片组供应商会做的事情。(有根据的猜测:他们的超级块信息写在芯片组 NV 内存中,因此他们实际上不需要在磁盘上写入任何元数据)。
现在,如果您不记得原始块大小,则需要反复试验...尝试每次使用不同的块大小进行构建,然后明确在 /dev/md0 上使用 fdisk -l,并查看分区信息是否正确显示。如果是这样,请尝试将其中一个发现的分区安装为只读并验证一些数据(最好是文本),以确保万无一失。如果没有,请撤消。要撤消 mdadm 构建并再次使磁盘可用,请使用
sudo mdadm --stop /dev/md0
然后
sudo mdadm --remove /dev/md0
重试,使用不同的块大小。
虽然挂载就足够了(挂载损坏分区的能力极其罕见),但这里有一个更高级的技巧来检查正确的块大小,即通过搜索分区标识符字符串。希望在有效的分区表中,描述了一个或多个可识别分区的起始扇区。同样,在我的例子中:
/dev/sde1 * 63 47118644 23559291 7 HPFS/NTFS/exFAT
/dev/sde2 47118645 102896324 27888840 7 HPFS/NTFS/exFAT
/dev/sde4 102896325 980463014 438783345 5 Extended
在几乎所有情况下,您都可以在每种分区类型的开头附近找到标识符字符串。例如,如果是 NTFS,则是“NTFS”本身。使用 dd,将磁盘(/dev/md0)的前几个扇区复制到一个文件中。
sudo dd if=/dev/md0 of=testfile bs=1024 count=256 skip=0
这应该会将前 (skip=0) 256K 磁盘数据复制到“testfile”。现在,使用类似以下内容的命令:
strings -a -t d testfile | grep NTFS
或者,如果您喜欢十六进制,则将 d 替换为 x,或者更简单地说,
hexdump -C testfile | less
然后使用“/”进行搜索
然后您就可以找到字符串在整个磁盘中的位置。将其与计算出的分区偏移量进行比较。例如,在我的例子中,第一个 ntfs 分区从第 63 个扇区开始,这导致偏移量为 63*512 = 32256。在位置 32259 处发现了“NTFS”字符串,因此我们认为这是“匹配”(开头后 3 个字节)。(如果在 dd 中使用了一些非零跳过,请不要忘记在计算中添加 skip * bs)。不幸的是,匹配并不一定意味着它是正确的块大小,而不匹配则意味着它肯定不是。
答案2
据我所知,您无法使用mdadm
/Linux 软件 RAID 执行此操作,因为它支持的唯一外部元数据格式是Intel(R) 矩阵存储管理器和 DDF。
您必须获得完全相同或相似的主板或具有相同芯片(可能还有固件)的控制器,并且在“导入”驱动器时要格外小心,否则您的数据就会丢失。
我很久以前就遇到过 Silicon Image 芯片的问题,并且意识到这种解决方案有多么糟糕(您应该始终准备好一个精确的备用控制器,以防发生不好的事情)。
假 RAID 支持
/Fake RAID上的文章dmraid
来自Ubuntu 社区文档和Arch Linux 维基可能会对你有帮助。
Linux 软件 RAID 与伪 RAID
适当的硬件 RAID 系统以块设备的形式呈现给 Linux [...]
BIOS/固件 RAID 又名假 RAID 卡:
- [...]
- 如果“raid”卡或主板坏了,那么你通常必须找到一个完全相同的替代品,这对于较旧的卡来说可能很棘手
- 如果驱动器移至其他机器,数据将无法轻松读取
- 阵列上通常没有监控或报告 - 如果出现问题,除非重新启动机器,否则可能不会显示 和有人实际上正在观看 BIOS 启动屏幕(或者直到发生多个错误并且您的数据丢失)
- 您将数据委托给写入 BIOS 的无法修补的软件,该软件可能未经测试、没有支持机制且几乎没有社区。
- [...]
鉴于 RAID 的目的通常是为了降低风险,可以公平地说,使用 fakeraid 是一个糟糕的想法,最好将精力集中在真正的 HW raid 或内核 SW raid 上 [...]