mdadm 和 raid6:“重新创建(使用不同的块大小)+重新同步”会破坏原始数据吗?

mdadm 和 raid6:“重新创建(使用不同的块大小)+重新同步”会破坏原始数据吗?

我想挽救我的软件 raid-6 阵列上的数据。我对这个原始阵列做了一些愚蠢的操作(如下所述)。

主要问题:

我需要知道在该阵列上准备了以下操作(按下面列出的顺序执行)后,存储在 raid-6 阵列上的原始数据是否确实丢失(或没有丢失):

  1. 将阵列中注册的所有活动磁盘/分区的超级块归零

  2. 使用以下方式执行“mdadm --create ...”命令不同的选项(见下面的列表)与最初创建阵列时使用的选项不同:-> 不同的块大小-> 不同的布局-> 不同的磁盘顺序

  3. 重新同步阵列

注意:mdadm 参数的具体值在这里不应该相关,因为这是关于 mdadm 的工作原理...

我认为第 1)和第 2)点根本不应该触及原始数据,因为它们应该只操作超级块

从数据丢失的角度来看,我认为第 3) 点最为关键:我不确定重新同步期间阵列到底发生了什么,但基于所有相关硬盘的活跃度(约 7 小时),我假设数据存储区域已完全重新处理...

子问题:

  1. 硬盘/分区的排序(按照 mdadm 命令行上的排序)是否对 raid6 创建和初始重新同步起作用?

  2. 在创建阵列后,需要备份什么才能在与我类似的情况下安全地重新创建阵列(例如,备份阵列中涉及的每个磁盘的超级块信息和分区表信息......)?

评论:

mdadm wiki 文章 (http://en.wikipedia.org/wiki/Mdadm) 应该修改,作者应该被踢出局,或者不仅仅是踢出局......
文章提到将超级块归零并随后重新创建阵列是解决“mdadm:无法打开...:设备或资源繁忙”问题的解决方案。
作者不知何故忘了提到重要的步骤 - 第一步是备份原始阵列(超级块)的参数......而且我的调查似乎指出,所涉及的磁盘/分区的顺序也起着作用......

谢谢你的回答,
彼得

答案1

我查看了维基百科文章,关于删除超级块等的部分是正确的,但它应该用于解决与您显然试图解决的问题不同的问题。文章中的目的是“清理”具有旧 RAID 设置的驱动器,以便您可以在新阵列中使用它。

当然,您永远不应该清除当前包含要保留的数据的驱动器上的超级块。超级块包含有关该驱动器上数据组织方式的关键信息,因此,除非您打算将数据一起丢弃,否则擦除或更改超级块是无益的。

答案2

令人困惑的是:

创建然后重新同步 7 个小时。

创建阵列时,文件系统通常会在其上创建,并且无需重新同步。将超级块归零会使 raid 集难以在尝试自动组装时确定驱动器的顺序。您对创建做了什么?创建 2 个驱动器,缺少 2 个,然后增加它并添加其他驱动器?或者您是否将其创建为 raid-6 集并同时添加所有驱动器。

如果是后者,则不应该重新同步。如果您没有扩大阵列并且驱动器重新同步,听起来就像它检测到了阵列的一部分。重新同步后,您是否必须创建文件系统,或者文件系统是否已经存在?

如果块大小发生变化,那就不好了。如果分区对齐发生变化,同样也不好。驱动器顺序发生变化,同样也不好。有很多因素可能让数据恢复变得极其困难,甚至根本无法恢复。

我觉得很奇怪的一件事是重新同步。Raid-6 可以承受两个驱动器故障,并且仍然具有恢复能力。但是,你做的一些事情几乎让我认为你处于一种几乎无法恢复的境地,除非由专家来恢复。

答案3

您可能说得对,在驱动器开始重新同步之前,超级块只会受到影响,但目前这几乎不是一个重要的细节。现在您的数据处于未知状态,甚至根本就不存在。

我认为你在网上读到的建议,甚至这个网站上的建议,都不会对你有任何帮助。如果失败不是问题,那么简单地尝试一下你在网上读到的东西才是有效的行动方案。

如果数据对您非常重要,我建议将驱动器交给数据恢复实验室并让他们进行处理。如果您的数据仍然以某种形式完好无损,他们将拥有丰富的经验,知道如何修复您的问题而不会造成任何进一步的损害。

编辑
幸运的是,由于重建奇偶校验数据只会影响奇偶校验数据,理论上您可能仍然有足够的信息不变来重建原始内容,假设您在发生这种混乱之前从一个干净且健康的阵列开始。

但是,重建它并非易事,而且需要大量工作来手动构建数组的配置文件,特别是当您在覆盖超级块时更改了数组的某些维度时。

但如果再做一次这样的事,它几乎肯定活不下来。

相关内容