fdisk 抱怨“备份 GPT 表已损坏,但主表似乎正常,因此将会使用它。”

fdisk 抱怨“备份 GPT 表已损坏,但主表似乎正常,因此将会使用它。”

我最近买了两个西部数据(西部数据)易店8 TB 外部 USB 驱动器剥壳并使用 WD Red网络存储我的计算机内置驱动器(Arch Linux)。第一个最终是 WD 白标硬盘 (WD80EMAZ-00WJTA0),而第二个确实是红标硬盘 (WD80EFAX-68LHPN0)。

我安装了白色版本,一切似乎都很好。我毫无问题地复制了近 5 TB 的数据,但后来我注意到有关谷氨酰胺磷酸酶使用时出错分区在另一个我正在处理的驱动器上。我的数据似乎可以访问,所以我还没有做任何事情。

今天我安装了 Red 驱动器,在进行任何分区或格式化之前,我也遇到了完全相同的错误。我一直在寻找解决方案,并认为这与宿主保护区(HPA),但我不知道如何确认,或者如果确实如此该怎么办。这个问题可以修复,而白色驱动器上的数据完好无损吗?我可以在红色驱动器上进行实验,但我不知道该尝试什么。

sudo gdisk /dev/sdb

输出:

GPT fdisk (gdisk) version 1.0.3

Caution: invalid backup GPT header, but valid main header; regenerating
backup header from main header.

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.
****************************************************************************

Command (? for help): p
Disk /dev/sdb: 15628053168 sectors, 7.3 TiB
Model: WDC WD80EMAZ-00W
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): 6837F2B2-3A65-4260-B87E-B4682BAEE5FF
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 15628052446
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048     15628050431   7.3 TiB     0700  WD_8TB

Command (? for help): v

Problem: The secondary header's self-pointer indicates that it doesn't reside
at the end of the disk. If you've added a disk to a RAID array, use the 'e'
option on the experts' menu to adjust the secondary header's and partition
table's locations.

Identified 1 problems!

和..

sudo hdparm -N /dev/sdb

输出:

/dev/sdb:
max sectors   = 15628053168/15628053168, HPA is disabled

答案1

您的hdparm输出表明 HPA 是残疾人士,因此该问题与此无关。

根据我在这里和其他论坛上看到的类似问题判断,导致此问题的最常见原因是使用基于主板的软件 RAID(有时称为“假 RAID”,尽管这是一个误导性术语)。这种类型的软件 RAID 的问题在于,它需要至少两个软件组件就要使用的数据结构达成一致——固件和操作系统。在多启动计算机的情况下,所有操作系统都必须理解相同的 RAID 数据结构,因此您需要三个或更多配置才能匹配。无论如何,如果固件认为磁盘使用基于主板的软件 RAID,但操作系统没有,则结果可能是损坏备份 GPT 数据结构。原因是这些数据结构占据了磁盘的最后几个扇区,而这也正是基于主板的软件 RAID 通常存储的位置它是数据结构。因此,一组数据结构将消除另一组数据结构。随之而来的是怪异现象。(但请参见下文。)当一切都同步时,它是透明的;主板将其数据结构放在磁盘的末尾,操作系统理解这一点并隐藏磁盘的该部分,您无需担心。

但是,如果您没有创建分区表,则问题可能不是由您的配置错误引起的,而是由磁盘制造商或中间处理磁盘的人引起的(例如,如果磁盘被卖给了其他人然后又被退回,而您从退货箱中拿到了它)。在这种情况下,执行 inw应该gdisk会重写分区表,从而使错误消息消失。这样做是个好主意,因为 GPT 备份数据结构的存在是有原因的——它们是备份,用于防止某些类型的错误、用户错误或硬件故障损坏主要数据结构(存储在磁盘开头)。大多数操作系统和工具在缺少备份数据结构的情况下都能正常启动,但没有它们就意味着您放弃了它们的好处。此外,某些工具可能会因损坏而感到困惑并做出一些坏事。(我不知道有这样的例子,但新工具一直在编写,而旧工具可能会出现新的错误,因此这种错误的可能性始终存在。)

还有一点:gdisk'sv表示备份分区数据不存在于磁盘末尾,而它应该存在于该末尾。要解决此问题,您可以键入x以进入专家菜单,然后e重新定位备份数据结构。这个放错位置的备份分区表与固件中使用基于主板的软件 RAID 一致,但与操作系统不一致,或者与其他各种问题(如扩展的硬件 RAID 阵列或从较小磁盘克隆到较大磁盘的磁盘)一致。重新定位备份数据结构通常是一个好主意,在某些情况下,有必要使用磁盘的全部容量。(在您的例子中,您只能恢复大约 2,000 个扇区,因此就容量而言这不是什么大问题。)但请注意,如果您的主板配置为使用其软件 RAID,则移动备份数据结构将清除软件 RAID 数据。这可能会使主板混乱,并且主板可能会重写其数据,导致下次重新启动时 GPT 受损。解决方案是在固件设置工具中禁用软件 RAID 选项,然后使用gdisk或其他工具移动 GPT 数据结构。

答案2

WD Easystore 机箱的控制器会出于某种原因“窃取”驱动器末端的少量块。其结果是驱动器的“末端”发生变化。如果在驱动器仍在机箱中时使用 GPT 对其进行分区,则备份分区表将写入不太准确的位置真实的驱动器的末端,因为那些被盗的块被隐藏起来了。

一旦你拆下驱动器,驱动器的真正末端就可以访问,而且由于 GPT 备份不存在,这看起来像是一个问题。详细信息请参阅Reddit 主题

如果驱动器上没有任何内容,最简单的解决方法是使用新的 GPT 重新分区。我想有一些手动方法可以解决这个问题,即手动将备份 GPT 复制到其正确位置,此时您可以决定是否扩大最后一个分区以使用新的可访问空间。但由于更改量可能甚至不到 1MB,因此可能不值得这样做。

相关内容