fdisk 显示哪些数字?

fdisk 显示哪些数字?

我已经运行sudo fdisk -l并得到以下信息:

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

此实用程序显示硬盘的整个大小 ( 120034123776 bytes) 及其磁头数 ( 255 heads)、每磁道的扇区数 ( 63 sectors/track) 和柱面数 ( 14593 cylinders)。

将磁头数 X 每条磁道的扇区数 X 柱面数相乘,我们就得到了磁盘的扇区数。

255 X 63 X 14593 = 234436545

考虑到每个扇区的大小为 512 字节,我们有

234436545 X 512 = 120031511040

因此,事实上120031511040 != 120034123776,问题是:磁盘管理显示的信息不正确或者我的计算遗漏了什么?

答案1

我想说的使用cylinder现在已经被弃用并且主要由于历史原因。

通过查看fdisk源代码,我发现设备的总字节数通过读写控制称呼

    if (ioctl(fd, BLKGETSIZE64, bytes) >= 0)
        return 0;

其余图形均由此推导出来。

例如,气缸数的计算方法如下

llcyls = total_number_of_sectors / (heads * sectors * sector_factor);

这里的“问题”是,这个除法的结果被截断(向下四舍五入),因此必然不精确。

使用您的fdisk输出作为示例

120034123776 bytes / 512 bytes_per_sector / 255 / 63 = 14593.3176471 cylinders

fdisk输出将把它向下舍入为14593

答案2

嗯,据我所知,差异很小,所以这可能是由于 IT 界和 SI 中“千”、“兆”和“千兆”(前缀)的含义不同造成的:在日常生活中,例如“千”表示 1000,而在 IT 中,通常习惯表示 1024。现在混乱更大了,因为有人提议(甚至在 ubuntu 中)使用 1000 作为千,并在需要时使用“kibi”(或任何其他...)表示 1024。因此,通过使用这些前缀,有人表示 1000,其他人表示 1024,更复杂的是,在 HDD 的情况下,情况甚至会混合,一些前缀是 2 的幂,一些是 10 的幂。

https://wiki.ubuntu.com/UnitsPolicy

在其他操作系统上,情况也有点复杂/令人困惑......

相关内容