为什么将我的 raid 大小调整为“最大”会导致 GPT 错误,这很危险吗?

为什么将我的 raid 大小调整为“最大”会导致 GPT 错误,这很危险吗?

我已将 raid(6) 中的所有 2TB 磁盘替换为 4TB mdadm --grow /dev/md0 --size=max,fdisk 报告以下错误:The backup GPT table is corrupt, but the primary appears OK, so that will be used.gdisk 更可怕。

root@nas:~# gdisk /dev/md0
GPT fdisk (gdisk) version 0.8.10

Warning! Read error 27; strange behavior now likely!
Caution: invalid backup GPT header, but valid main header; regenerating
backup header from main header.

Warning! Error 27 reading partition table for CRC check!
Warning! One or more CRCs don't match. You should repair the disk!

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: damaged

****************************************************************************
Caution: Found protective or hybrid MBR and corrupt GPT. Using GPT, but disk
verification and recovery are STRONGLY recommended.
****************************************************************************

将我的团队恢复到原来的大小可以解决问题。我应该关心 fdisk 和 gdisk 中的这些错误吗?正确的做法是什么?

答案1

The backup GPT table is corrupt, but the primary appears OK, so that will be used

这是预料之中的。备份 GPT 表位于磁盘的末尾。如果您增大(或缩小)磁盘,其立铣刀也会相应移动,因此fdisk将无法再找到备份 GPT 表。

我应该关心 fdisk 和 gdisk 中的这些错误吗?正确的做法是什么?

这是无害的,因为主 GPT 表用于正常操作。不过,拥有备份表很好,因此您必须重新创建它:使用gdisk,不要修改当前分区表,只需将其写入(w命令)到磁盘。此操作也将重写备份 GPT,从现在开始gdisk不应再抱怨。

答案2

该问题与我使用 32 位内核有关。在版本 4 内核中,32 位内核的 RAID 最大可访问大小为 RealSize modulo 16TiB,而在版本 5 中,最大大小略小于 16TiB。

因此,一旦超过 16TiB,分区软件就无法读取或写入存储在磁盘末尾的辅助分区表,并导致错误 27。

相关内容