磁柱数量 * 磁头数量 * 扇区数量 * 512 为何和硬盘容量不相等?

2013-07-09 23:17:19 +08:00
 zhttty
# fdisk /dev/sda

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000a5c87

1305*255*63*512=10733990400bytes 不等于 10737418240 bytes (差距很大,不可能误差吧..)

查了一晚上google了,都是不等的,可是又“个个睁眼说瞎话”说:
硬盘容量=磁柱数量 * 磁头数量 * 扇区数量 * 512

我错哪里了?

google上真心没发现有质疑的,是我不懂数数么,囧...
4205 次点击
所在节点    问与答
8 条回复
qiuai
2013-07-10 09:16:16 +08:00
应该还有一部分被用来做其他的了吧
momo5269
2013-07-10 09:26:47 +08:00
jsz
2013-07-10 10:23:51 +08:00
我的

$ sudo fdisk -l /dev/sda

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

>>> 255 * 63 * 38913
625137345
>>> 625142448 * 512
320072933376

容量确实等于 #sectors * sector-size。但是这一行里「255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors」,最后一个数并不等于前三个的乘积。
zhttty
2013-07-10 10:31:59 +08:00
@momo5269

还是不清楚丢失的空间跑哪去了...难道是磁盘的 LBA 寻址转换为 CHS 寻址过程中少掉的吗?因为磁头数和扇区数的最大限制?
zhttty
2013-07-10 10:37:53 +08:00
@jsz

>>> 255 * 63 * 38913
625137345
>>> 625142448 * 512
320072933376

请问625142448 是怎么算出来的?
likai
2013-07-10 11:34:24 +08:00
硬盘厂商是按1g=1000m算的
yfdyh000
2013-07-10 12:44:15 +08:00
猜测:因为有0柱面的存在,所以1305 cylinders实际有1306个?
也就是可覆盖 1306 * 255 * 63 * 512 = 10742215680 bytes
jsz
2013-07-10 13:18:06 +08:00
@zhttty fdisk 输出的 = =

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/75286

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX