我已经运行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
在其他操作系统上,情况也有点复杂/令人困惑......