Linux

分區表消耗32K數據?

  • June 20, 2016

我創建了一個 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

MBR 分區格式已有三個十年的歷史,並且由於歷史原因而變得怪異。

那時,電腦需要知道硬碟的幾何形狀。硬碟上的數據是如何組織的?在三個維度:圓柱體、磁頭和扇區

磁軌、柱面、扇區、磁頭

LionKimbro 圖表

幾何圖形儲存了當時足夠大的最大值: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 的傳統扇區)的驅動器的扇區邊界上。在扇區邊界上對齊分區(如磁碟使用的實際扇區大小,即其首選傳輸大小)有助於提高性能。

引用自:https://unix.stackexchange.com/questions/291001