我想救救我的软件raid-6arrays上的数据。 我用这个原始数组做了一些愚蠢的动作(如下所述)。
我需要知道,在这个arrays上准备了以下操作(按照下面列出的顺序执行)之后,存储在raid-6arrays上的原始数据是否肯定会丢失(或不是):
清零arrays中注册的所有活动磁盘/分区的超级块
使用不同的选项执行“mdadm –create …”命令(参见下面的列表),比原来创build数组时已经使用的要多: – >不同的块大小 – >不同的布局 – >不同的磁盘顺序
重新同步数组
注意:在这里mdadm参数的具体值不应该是相关的,因为这是关于mdadm如何工作的原理…
我认为要点1)和2)甚至不应该接触原始数据,因为它们只能操纵超级块
从数据丢失的angular度来看,我认为这一点是最为关键的:我不确定在重新同步期间arrays到底发生了什么,但是基于所有涉及到的硬盘的大量活动(大约7小时),我假设数据存储区域是完全重新处理… … –
硬盘驱动器/分区(因为他们在mdadm命令行上订购)的sorting是否对raid6创build和初始重新同步起作用?
在创build数组后,为了能够安全地重新创build与我的情况类似的情况下的数组(例如,数组中涉及的每个磁盘的备份超级块信息和分区表信息…),备份什么都需要?
应该修改mdadm wiki文章( http://en.wikipedia.org/wiki/Mdadm ),并且应该将作者踢入一点,或者稍微多一点点…
文章提到了调零超块和后续arrays重新创build作为解决scheme,以摆脱“mdadm:不能打开…:设备或资源繁忙”的问题。
作者忘了提及重要的一步 – 备份参数原始数组(超级块)作为第一步…我的调查似乎也指出,所涉及的磁盘/分区的sorting也起着作用…
感谢您的回答,
彼得
我看了维基百科的文章,关于删除超级块等等是正确的,但它应该被用来解决一个不同的问题,而不是你显然想要解决的问题。 本文的目的是“清除”一个具有旧RAID设置的驱动器,以便您可以在新arrays中使用它。
当然,您绝对不应该清除当前包含要保留的数据的驱动器上的超级块。 超级块包含关于该驱动器上的数据如何组织的重要信息,因此,除非您打算用它丢弃数据,否则擦除或更改超级块是无益的。
令人困惑的是:
创build并重新连接7个小时。
当创build一个数组时,文件系统一般是在顶层创build的,没有重新同步。 对超级块进行清零使得raid集难以确定当raidset试图自动进行自我组装时驱动器处于何种顺序。 你创造了什么? 用2个驱动器创build它,缺less2个,然后增长并添加其他? 或者你是否将它创build为raid-6集,并同时添加所有驱动器。
如果后者,它不应该resynced。 如果你没有增长arrays,驱动器重新启动,这听起来像是它检测到arrays的一部分。 重新同步之后,您是否必须创build一个文件系统或者文件系统已经存在?
如果块大小发生变化,那就不好了。 如果分区的alignment方式改变了,那就不好了。 驱动器的顺序改变了,再次,不好。 你有很多事情可能使得恢复数据极其困难。
我觉得非常好奇的一件事是重新同步。 Raid-6可以采取两个驱动器故障,仍然有能力恢复。 但是,您所做的一些事情几乎让我觉得您处于一种除了专家之外几乎无法恢复的情况。
你可能是正确的只是影响超级块,直到驱动器重新同步,但在这一点上,这不是一个重要的细节。 到目前为止,如果数据即使在那里,您的数据也处于未知状态。
我不认为你会得到任何进一步的build议,你在互联网上阅读,甚至从这个网站。 只要尝试在线阅读的内容只是一个有效的行动,如果失败不是一个问题。
如果数据对您来说非常重要,我build议您将驱动器转到数据恢复实验室并让他们处理。 如果您的数据以某种forms保持不变,那么他们将有经验知道如何解决您的问题,而不会造成任何进一步的损害。
编辑
幸运的是,由于重新构build校验数据只会影响校验数据,因此理论上可能仍然有足够的信息来重build原始内容,假设您在发生混乱之前就开始使用干净和健康的数组。
然而,重构它将是不平凡的,并且需要大量的手工构build数组的概要文件,特别是如果在覆盖超级块时改变了数组的一些维度。
不过,这样的事情几乎肯定不会生存下去。