為什麼最後幾個磁區不能包含在分割區中?

為什麼最後幾個磁區不能包含在分割區中?

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

相關內容