Fdisk

fdisk 輸出中的“blocks”列

  • October 8, 2016

在我的機器上,fdisk -lu /dev/sda顯示以下輸出:

  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    73947135    36972544   83  Linux
/dev/sda2        73949182    78139391     2095105    5  Extended
/dev/sda5        73949184    78139391     2095104   82  Linux swap / Solaris

這個“塊”單元是什麼?一個“fdisk 塊”是 1KiB 嗎?這個單位是從哪裡來的?

你應該知道一些概念,比如,,sector才能理解。這是一個簡單的定義:track``cylinder``block

Blocks and clusters

The Unix communities employ the term block to refer to a sector or group of
sectors. For example, the Linux fdisk utility normally displays partition
table information using 1024-byte blocks, but also uses the word sector to
help describe a disk's size in the phrase, 63 sectors per track.

您可以在此連結中閱讀更多內容。

在 Unix 的第一個版本中,一個塊是 512 字節,從硬體到文件系統再到 C 程式碼再到使用者工具。

現在有許多不同類型的硬體和許多不同的文件系統(其中一些沒有任何塊大小的概念),因此“塊大小”是每個工具選擇的任意定義。大多數傳統的 Unix 系統預設保留 512 字節的塊大小以實現向後兼容性,這就是 POSIX 對幾個命令(dddudflsfind -size…)的要求。幾個 GNU/Linux 實用程序預設顯示 1kB 單位(du, df, ls, …),除非在POSIXLY_CORRECT模式下呼叫。我認為轉向 1kB 的唯一動機是因為它對人類更加友好。

Linuxfdisk實用程序將 1kB 塊用於兩個 decares - 標頭可能已讀取kB. 在 Linux 的上下文中fdisk,“塊”總是意味著 1kB。在2.25 版本中更改了預設單位,現在單位是 512 字節的扇區。在專家模式下,單位始終是 512 字節的扇區。512 字節對於傳統 PC 磁碟來說是一個更自然的低級單位,因為它們寫入 512 字節扇區,並且分區邊界對齊到 512 字節,因此使用 1kB 作為單位導致 ½ 分數。現代大型磁碟具有更大的扇區(但“扇區”被廣泛用於表示 512 字節,無論磁碟的任何物理或邏輯特性如何),並且 GPT 分區通常以 1MB 對齊。

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