John P Asked: 2018-11-02 10:49:23 +0800 CST2018-11-02 10:49:23 +0800 CST 2018-11-02 10:49:23 +0800 CST fdisk -l 之类的命令如何找到扇区大小? 772 磁盘的 MBR 是否包含此信息,因此当我调用 fdisk 之类的命令时,内核级代码最终会运行并从 MBR 中的特定部分读取它?如果有,是哪一部分?什么抵消? 如果它不在 MBR 中,那么这些类型的命令如何找到它?考虑到他们需要计算该分区的起始地址并且他们需要扇区大小来这样做,他们不能从分区的开头读取它,不是吗? 如何fdisk执行命令来查找这些信息?他们从哪里读到的? linux hard-disk 2 个回答 Voted Best Answer Stephen Kitt 2018-11-02T11:20:32+08:002018-11-02T11:20:32+08:00 设备的扇区大小不存储在 MBR 中。 用户空间命令(例如fdisk使用BLKBSZGET和BLKSSZGET 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 [...] virullius 2018-11-02T11:21:24+08:002018-11-02T11:21:24+08:00 里面有几个问题,我试图找到“fdisk 在哪里找到磁盘的扇区大小?”的答案。我发现最好的是它从ioctl. ioctl维基百科和Linux 手册页上的信息。 fdisk源代码链接
设备的扇区大小不存储在 MBR 中。
用户空间命令(例如
fdisk
使用BLKBSZGET
和BLKSSZGET
ioctl
s)从磁盘检索扇区大小。这些ioctl
s 由内核中的驱动程序处理,它们从驱动器本身检索相关信息。(相关的文档不多
ioctl
,需要查看内核源代码。)您可以使用其他直接查询驱动器的工具来查看相关信息,例如
hdparm
。在小型 SSD 上,hdparm -I
告诉我在具有 4K 扇区的大型旋转磁盘上,我得到了
里面有几个问题,我试图找到“fdisk 在哪里找到磁盘的扇区大小?”的答案。我发现最好的是它从
ioctl
.ioctl
维基百科和Linux 手册页上的信息。fdisk源代码链接