AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1147882
Accepted
arden opal
arden opal
Asked: 2023-11-15 09:51:38 +0800 CST2023-11-15 09:51:38 +0800 CST 2023-11-15 09:51:38 +0800 CST

从 raid 驱动器的驱动器映像访问数据

  • 772

运行 RAID5 的 perc h700 控制器上的驱动器遇到错误,因此我使用ddrescue. 所有驱动器都有一些坏块,但大多数(> 99.98%)位都已成功读取,并且我现在拥有一个硬盘驱动器,其中包含属于 raid 阵列的每个驱动器的映像文件。

现在我有了 raid 阵列中所有驱动器的映像,是否有某种方法可以使用软件(也许mdadm?)来访问存储在阵列中的文件?或者只能使用创建数组的控制器来访问该数据?

hardware-raid
  • 1 1 个回答
  • 78 Views

1 个回答

  • Voted
  1. Best Answer
    Nikita Kipriyanov
    2023-11-15T13:35:12+08:002023-11-15T13:35:12+08:00

    是的,使用 Linux MD RAID 及其mdadm用户空间接口工具,您甚至应该能够从更名为 LSI/Avago/Broadcom MegaRAID 的 PERC 组装 RAID。它使用 SNIA DDF 磁盘格式,mdadm 将其称为User-Space Managed External Metadata Format.

    您已采取正确的方法来制作所有驱动器的原始图像。我强烈建议的第二步是设置覆盖,以便不向图像本身写入任何更改,而是覆盖文件;这将使您进行无限次尝试。它在 Linux RAID wiki 页面中进行了描述,该页面方便地命名为“恢复损坏的 RAID”。或者,您可以使用 Qemu 的 qcow2 映像并qemu-nbd实现与我在此处描述的相同的基本结果。

    设置覆盖后,您将拥有一堆/dev/mapper/xxxY或/dev/nbdY虚拟块设备。现在尝试从这些设备组装 RAID:从mdadm --examine --scan. 不要犹豫去尝试;如果出现问题,您始终可以重新创建叠加层(或创建另一组叠加层)并重新开始;这正是他们的目的。

    不要丢弃 的ddresque日志文件。它们包含有关物理驱动器的哪些块损坏(并由 ddrescue 填充零)的重要信息。您需要找出它们在组装数组中映射到哪些条带。所有这些条纹都需要检查。即使只有一个块错误,这些条带中至少有一个数据块很可能会被损坏,除非该块碰巧包含奇偶校验数据。这是因为所有块都可以从图像中读取;奇偶校验现在只是不匹配,并且将从其他块(其中一个是错误的)重新计算,而不是使用奇偶校验来重新计算错误的块。当所有块都可读但存在不匹配(部分降级的 RAID6 除外)时,传统 RAID 无法确定其中哪一个块是错误的,因此奇偶校验被视为有问题的块。

    现在,要恢复这些块,您可能会走上漫长而艰难的道路,部分组装阵列,不包括该块出现故障的驱动器(当然还有一组新的覆盖!);那么md将正确使用(希望正确)其他块和奇偶校验来恢复条带数据,而不会损坏块。由于所有驱动器都显示坏块,因此您可能需要执行此操作 N 次,每次都不包括下一个驱动器。以这种方式提取所有损坏的条带后,您可以按照通常的方式组装阵列,并将恢复的条带添加回组装的阵列中,用正确的数据替换全零块。

    • 4

相关问题

  • 英特尔 D865GLC 上的硬件突袭

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve