我已将 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。