Linux

fdisk -l 之類的命令如何找到扇區大小?

  • November 1, 2018

磁碟的 MBR 是否包含此資訊,因此當我呼叫 fdisk 之類的命令時,核心級程式碼最終會執行並從 MBR 中的特定部分讀取它?如果有,是哪一部分?什麼抵消?

如果它不在 MBR 中,那麼這些類型的命令如何找到它呢?考慮到他們需要計算該分區的起始地址並且他們需要扇區大小來這樣做,他們不能從分區的開頭讀取它,不是嗎?

如何fdisk執行命令來查找這些資訊?他們從哪裡讀到的?

設備的扇區大小不儲存在 MBR 中。

使用者空間命令(例如fdisk使用BLKBSZGETBLKSSZGET ioctls)從磁碟檢索扇區大小。這些ioctls 由核心中的驅動程序處理,它們從驅動器本身檢索相關資訊。

(相關的文件不多ioctl,需要查看核心原始碼。)

您可以使用其他直接查詢驅動器的工具來查看相關資訊,例如hdparm。在小型 SSD 上,hdparm -I告訴我

[...]
Logical  Sector size:                   512 bytes
Physical Sector size:                   512 bytes
Logical Sector-0 offset:                  0 bytes
[...]
cache/buffer size  = unknown
Form Factor: 2.5 inch
Nominal Media Rotation Rate: Solid State Device
[...]

在具有 4K 扇區的大型旋轉磁碟上,我得到了

[...]
Logical  Sector size:                   512 bytes
Physical Sector size:                  4096 bytes
Logical Sector-0 offset:                  0 bytes
[...]
cache/buffer size  = unknown
Form Factor: 3.5 inch
Nominal Media Rotation Rate: 5400
[...]

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