确定驱动器的扇区大小

确定驱动器的扇区大小

我知道扇区大小通常为 512 B,但有些驱动器使用 4 KiB(高级格式)。

如何检查驱动器使用的是哪一个?扇区大小是否存储在驱动器上的某个位置 - 例如在 MBR 或 GUID 分区表中?

我对 Windows 10 和 Linux 的解决方案很感兴趣。知道如何使用 Python 脚本或十六进制编辑器读取它也很好。

答案1

扇区由驱动器的控制器管理,因此您需要检查驱动器通过各种“查询”命令(例如 SCSI READ CAPACITY)向操作系统报告的内容。

扇区大小无法通过正常的读/写操作来访问,因为......你需要知道扇区大小才能问题首先进行读/写操作。

  • 在 Linux 上,您可以使用lsblk -t查看内核已知的拓扑参数;可以直接从中的文件/sys/class/block/sda/queue或通过 libudev(所有 sysfs 文件都是 libudev 中的“属性”)检索相同的信息。

  • 您还可以检查fdisk -l“扇区大小”行;它使用 ioctl(BLKIOMIN)、ioctl(BLKPBSZGET) 和 ioctl(BLKSSZGET) 从内核检索此信息。

  • 最直接的方法(也是需要最多权限的方法)是向磁盘发送您自己的命令,例如,对于 SCSI 和 ATA 磁盘sg_readcap将报告“逻辑块长度”和“每个物理块指数的逻辑块”。

请注意,一些 USB-SATA 适配器在这些字段中发送错误信息。

相关内容