仅从 /sys/block/ 计算磁盘字节大小

仅从 /sys/block/ 计算磁盘字节大小

如果我们想在不调用任何二进制文件的情况下获取块设备或其分区之一的字节大小,并且以一种始终有效的方式,那么这样做是否正确:

/sys/block/sda/sda1/size
or /sys/block/sda/size

乘以:

/sys/block/sda/queue/physical_block_size

或者是逻辑块大小或者硬件扇区大小

有更好的方法吗?

答案1

经过更多研究,我终于找到了答案:

Linux 始终将扇区视为 512 字节长,与设备实际块大小无关。

据消息来源称: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/types.h?id=v4.4-rc6#n121

我是被这条评论引导到那里的: 确定块设备的大小

尽管看起来很愚蠢,但 [size] 应该简单地乘以 512。

我只是希望 15 年后这仍然是一个正确的假设,因为我不希望我的程序被破坏。物理块大小似乎是错误的,因为它有时可能是 4096,正如我通过谷歌搜索发现的那样,但也许它仍然值得一读逻辑块大小或者硬件扇区大小即使它永远是512?对此有何评论?

相关内容