Mdraid 配置磁盘上 GPT 恢复后的数据完整性

Mdraid 配置磁盘上 GPT 恢复后的数据完整性

我已在属于 Linux 软件 raid (mdraid) 的先前 GPT 分区磁盘上恢复了备份 GPT 标头。这样做是因为partprobe 报告损坏的标头。

现在,实际上软件 raid 应该管理整个磁盘,但以前使用的分区信息仍然保留在服务器以不同方式使用时。

意识到 GPT 可能与我的设置无关,我通过 gdisk 专家模式完全删除了 GPT 信息。

然而,我此时担心的是,我摆弄 GPT 表恢复/GPT 信息删除可能会损坏我的软件 raid。

系统本身没有显示任何迹象表明这种情况(仍然启动,数据可访问),但我想知道是否有人可以建议数据是否仍然会被我的操作损坏,或者我可以通过什么方式检查数据的完整性。

答案1

1.2 版元数据存储在距块设备开头 4K 处。通常,数据本身就相当重要。例如,这是mdadm -E我的一个阵列中磁盘的(部分):

/dev/sda3:
          Magic : a92b4efc
        Version : 1.2
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
   Unused Space : before=262064 sectors, after=2224 sectors

如您所见,(8 * 512 字节/逻辑扇区 = 4KiB)中的 8 个扇区是数组超级块。数据要远得多,实际上有 128MiB。

GPT 布局的第一个扇区 (#0) 是保护性 MBR;接下来的 33 个扇区 (#1–#33) 是 GPT 分区表和条目。磁盘上的最后 33 个扇区存储备份。

因此,从备份 GPT 分区表恢复可能会覆盖总共前 34 个扇区。但它不会触及数据(因为距离远超过二十万个扇区)。根据之后未使用的空间量,即使最后写入备份也不会导致损坏(我的阵列中有很多空间,您的阵列可能有所不同。)

不过,听起来你的超级块并没有被破坏,因为你已经组装了阵列。我会通过检查mdadm -E每个磁盘来确认,但除此之外,听起来似乎没有造成任何损害。如果 (a) 正在使用且 (b) 内部,您可能还需要清除并重新启用写入意图位图,因为它存储在超级块和数据之间的空间中。

相关内容