我創建了一個 100MB 大小的文件,並使用losetup
將其分配給/dev/loop0
.
因此,我用來fdisk
建立一個空的 DOS 分割區表,以及一個跨越整個磁碟的新分割區。
對我來說不尋常且無法理解的一件事是,上述分區從第 63 扇區開始;這意味著分區表佔用62個扇區,即31Kb。
我的印像是,有關分割區條目的所有資料都記錄在主開機記錄(磁碟機的第一個磁區)中,因此只有磁碟的前 512 位元組應該是越界的。
檢查驅動器,第一個扇區之後的扇區並未完全填充空值,因此顯然我缺少一些有關分區表的細節。
fdisk 列印(顯示類型 = 磁區):
Device Boot Start End Blocks Id System
/dev/loop0p1 * 63 192779 96358+ 83 Linux
答案1
MBR 分區格式已有三十年歷史,並且由於歷史原因而變得怪異。
當時,計算機需要知道硬碟的幾何形狀。數據在硬碟上是如何組織的?從三個維度來看:氣缸、磁頭和扇區。
(圖表由獅子金布羅)
幾何形狀儲存為當時足夠大的最大值:8位元用於磁頭數量(1-255),6位元用於磁軌上的磁區數量(1-63),10位元用於數量每個磁頭的磁軌數,即柱面數(1-1023),一個磁區包含512 位元組。如今電腦不需要知道磁碟的實際幾何形狀(這些數字甚至沒有意義),但格式仍然保留,並且使用 MBR 分割區的磁碟具有以 CHS 格式表示的大小,但重要的是三個數字的乘積等於磁區總數。
分割區開始的起始位址以CHS格式表示,且許多較舊的作業系統不支援跨越不同磁軌的分割區,即分割區必須在柱面邊界上對齊。這意味著第一個分區有 63 個扇區的倍數。
有 31 kB 的空間未用於分區內容。它可用於引導程式。
現代的GPT分區格式,這是具有 >1 TB 磁碟的較新 PC 的標準,喜歡在 1 MB 邊界上對齊分割區,因此在第一個分割區開始之前大約有 1023 kB 可用空間。同樣,這可以由引導程式使用。現代作業系統也會在 1MB 邊界上對齊 MBR 分割區,從而放棄 CHS 相容性,並確保分割區位於具有 4 kB 磁區(= 8 個 512 kB 傳統磁區)的磁碟機上的磁區邊界上。在磁區邊界上對齊分割區(例如磁碟使用的實際磁區大小,即其首選傳輸大小)有助於提高效能。