Fdisk
fdisk 輸出中的“blocks”列
在我的機器上,
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 對幾個命令(
dd
、du
、df
、ls
、find -size
…)的要求。幾個 GNU/Linux 實用程序預設顯示 1kB 單位(du
,df
,ls
, …),除非在POSIXLY_CORRECT
模式下呼叫。我認為轉向 1kB 的唯一動機是因為它對人類更加友好。Linux
fdisk
實用程序將 1kB 塊用於兩個 decares - 標頭可能已讀取kB
. 在 Linux 的上下文中fdisk
,“塊”總是意味著 1kB。在2.25 版本中更改了預設單位,現在單位是 512 字節的扇區。在專家模式下,單位始終是 512 字節的扇區。512 字節對於傳統 PC 磁碟來說是一個更自然的低級單位,因為它們寫入 512 字節扇區,並且分區邊界對齊到 512 字節,因此使用 1kB 作為單位導致 ½ 分數。現代大型磁碟具有更大的扇區(但“扇區”被廣泛用於表示 512 字節,無論磁碟的任何物理或邏輯特性如何),並且 GPT 分區通常以 1MB 對齊。