为什么分区不能包含最后几个扇区?

为什么分区不能包含最后几个扇区?

据我所知,分区时fdisk最后几个扇区不能包含在分区中。我一直以为这是由于 MiB 或 IO 块对齐造成的,但我刚刚意识到它允许我使用的最后一个扇区没有对齐!我尝试了几种工具,使用来自不同供应商的几个 HDD,结果总是最后 30 多个扇区。例如:

Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 sectors
last MiB-aligned sector:                      976773119
last IO-block-aligned (4KiB) sector:          976773167 (the last one)
last usable sector:                           976773134

这当然不是什么大问题,但我很好奇原因。这与坏扇区有关吗?

答案1

我敢打赌你创造了一个GUID 分区表 (GPT)在磁盘上获取“最后可用扇区”号码。

您是否注意到最后一个可用扇区比总扇区数少 34 个扇区?

看一下这个:

GUID 分区表方案来源

那些“不可用”的 33 个扇区实际上是用于备份 GPT!(即 LBA -34 到末尾。)


我们还可以推导出为什么最后一个 MiB 对齐扇区和最后一个 I/O 块对齐扇区是这样的。

笔记:您可能没有使用 GPT 就得出了最后一个扇区数字。旧式 MS-DOS 分区表仅占用磁盘开头的 512 个字节(1 个逻辑扇区),结尾处没有任何内容。

磁盘信息

Logical sector size:            512 (used in calculations)
Physical sector size:          4096 (used for I/O block alignment)

物理块对齐

您最后对齐的扇区:976773167

Physical sector size:          4096
Divide by logical sector size: ÷512
                               ----
Sectors for block alignment:      8

Total sector count:       976773168
Divide by alignment sectors:     ÷8
                          ---------
Max 4KiB blocks:          122096646
Unusable sectors remainder:       0

Total sector count:       976773168
Subtract remainder:              -0
                          ---------
First unalignable sector: 976773168
Your last aligned sector: 976773167

1MiB 块对齐

您最后对齐的扇区:976773119

1MiB in bytes:              1048576
Divide by logical sector size: ÷512
                            -------
Sectors for 1MiB alignment:    2048

Total sector count:       976773168
Divide by alignment sectors:  ÷2048
                          ---------
Max 1MiB blocks:             476940
Unusable sectors remainder:      48

Total sector count:       976773168
Subtract remainder:             -48
                          ---------
First unalignable sector: 976773120
Your last aligned sector: 976773119

相关内容