我知道扇区大小通常为 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 适配器在这些字段中发送错误信息。