支持使用 >2TB HDD

支持使用 >2TB HDD

我正在努力为 TI8107 主板上的 2TB 以上硬盘提供支持。根据 GPT 标头,在偏移量为 0x28 的 LBA1 处我们获得第一个可用扇区,在偏移量为 0x30 的 LBA1 处我们获得最后一个可用扇区/LBA。如果硬盘小于 2TB,我获得了正确的最后一个可用扇区/LBA 数量,但对于大于 2TB 的硬盘,LBA1 偏移量 0x30 处的值与实际总扇区数不同。使用硬盘的十六进制转储进行验证。

例如:对于 4TB 硬盘,扇区总数为:7814037168(即 3.63TB)但在 LBA1 偏移量 0x30 处读取的值为:3519069838(即 1.63TB)。总大小为 3.63TB,但从标头读取时显示 1.63TB(即 3.63TB - 2TB)。

为什么显示 2TB 之后的剩余内存?如何读取大于 2TB 的 HDD 的实际扇区数。

对于 6TB:

df -h 的输出:

root@dm814x-evm:~# df -h
Filesystem                Size      Used    Available Use% Mounted on�
/dev/sda1                 1.5T      207.5M  1.4T      0%   /media/hdd1-vid

gdisk /dev/sda 的输出:

root@dm814x-evm:~# gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.0
Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): p

Disk /dev/sda: 11721045168 sectors, 5.5 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 2156215D-E245-46E0-8F4D-1E35C3B227A2
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 11721045134
Partitions will be aligned on 2048-sector boundaries
Total free space is 6108 sectors (3.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048      4194304000   2.0 TiB     8300  Linux filesystem
   2      4194306048      8388608000   2.0 TiB     8300  Linux filesystem
   3      8388610048     11721045134   1.6 TiB     8300  Linux filesystem

Command (? for help): 

答案1

您的问题主体指的是 4TB 磁盘,但您的gdisk输出显示的是 6TB 磁盘。我认为输出没有问题gdisk,除非磁盘真的是 4TB 型号。如果您的 4TB 磁盘有问题,请显示gdisk其输出。(此外,在输出的每一行开头添加四个空格以保留列格式。我已编辑您的问题以将其添加到您的gdiskdf输出中。)如有必要,请返回并使用新输出编辑您的问题。

您可能只是误解了 GPT 数据结构。请记住,GPT 指针的大小为 64 位(8 字节),而不是 MBR 的 32 位(4 字节)指针。使用gdisk或其他经过良好测试的分区软件来解释您的数据结构将大大减少解释这些指针时出现人为错误的可能性。如果您怀疑存在问题,请使用v中的选项gdisk检查 GPT 数据结构的完整性。此命令将生成有关gdisk发现的任何问题的报告。

另一种可能性是,您的驱动程序有 32 位限制。这在 Windows 中很常见,尤其是 32 位 Windows。此类驱动程序通常会将 64 位指针截断为 32 位,这通常会导致磁盘似乎“丢失”2TiB 的空间(对于超过 4TiB 的磁盘,则为 4TiB,对于更大的磁盘,理论上还会丢失更高的值)。如果您遇到此问题,解决方案是将有缺陷的驱动程序替换为无缺陷的驱动程序。在某些情况下,如果在使用有缺陷的驱动程序时将数据写入磁盘,则需要修复磁盘。

最后一条评论:不要将太字节 (TB,1000^4 字节) 与太字节 (TiB,1024^4 字节) 或其他前缀的等价物 (GB-vs-GiB 等) 混淆。您似乎使用“TB”来指代这两个度量单位。这是十年或更久以前的常见做法,但随着磁盘大小的增加,它变得越来越令人困惑。请参阅这一页了解有关此主题的更多信息。

相关内容