Я работаю над тем, чтобы обеспечить поддержку жесткого диска более 2 ТБ на плате TI8107. Согласно заголовку GPT, в LBA1 со смещением 0x28 мы получаем первый пригодный для использования сектор, а в LBA1 со смещением 0x30 мы получаем последний пригодный для использования сектор /LBA. В случае жестких дисков менее 2 ТБ, если я получаю правильное число последнего используемого сектора /LBA, но в случае жесткого диска> 2 ТБ, значение, присутствующее в смещении LBA1 0x30, отличается от фактического общего числа секторов. Проверено с помощью hexdump жесткого диска.
Пример: для жесткого диска емкостью 4 ТБ. Общее число секторов: 7814037168 (что составляет 3,63 ТБ). Но значение, считанное при смещении LBA1 0x30, составляет: 3519069838 (что составляет 1,63 ТБ). Общий размер составляет 3,63 ТБ, но при чтении из заголовка он показывает 1,63 ТБ (что составляет 3,63 ТБ - 2 ТБ).
Почему он показывает остаток памяти после 2 ТБ? Как я могу прочитать фактическое количество секторов для жесткого диска> 2 ТБ.
Для 6 ТБ:
вывод 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):