我已在属于 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) 内部,您可能还需要清除并重新启用写入意图位图,因为它存储在超级块和数据之间的空间中。