为什么硬盘从来没有宣传的那么大?

Sam*_*152 21 hard-drive

从我购买的所有硬盘驱动器中,它们似乎从来没有像宣传的那样大;从 320 GB 降到 290 GB,从 500 GB 降到 450 GB 等等。这有技术原因吗?

Kyl*_*nin 31

技术原因是硬盘驱动器制造商以公制单位向您出售容量。因此,公制系统的 GB = 1,000,000,000 字节。但是,计算机以 2 的幂来衡量驱动器大小。所以 1GiB = 1,024MiB,1MiB = 1,024KiB,等等。这意味着 1GiB = 1,073,741,824 字节,相差 73,741,824。

因此,当您安装 1GB(例如)驱动器时,操作系统只能看到 0.93GiB,这就是造成差异的原因。

(如果您以前从未见过缩写 GiB,它是一种新的表示法,用于表示 1024 的幂而不是 1000。但是,大多数操作系统会将 GiB 报告为 GB,从而进一步混淆了这个问题)

  • 不要让我开始使用旧的“1.44Mb”软盘。这些实际上是由 1440 * 1024 字节组成的,同时使用 1000 和 1024 度量。它既不是 MiB 也不是 MB (11认同)
  • Gi => Gibi 而不是 G => Giga (6认同)
  • 维基百科有一篇文章和图表显示了差异http://en.wikipedia.org/wiki/Hard_disk_drive#Capacity_measurements (2认同)

Has*_*tur 10

最初这是这个问题的答案(合并)关于 4GB 笔式驱动器。

让我们从以下陈述开始:“人类系统基于 10 的幂,二进制基于 2 的幂
接下来的内容可以为您的问题提供第一个答案。

度量前缀10,1000或10 ^ 3功率ķ,10 ^ 6是中号,10 ^ 9 ģ ...
二进制前缀是2的幂(2 ^ 10 = 1024不那么远从1000但不同,2.4%)。

4000000000/1024/1024/1024  Your 4GB are 4 000 000 000 Bytes
3.72529029846191406250     That becames around 3.73 GiB 
Run Code Online (Sandbox Code Playgroud)

供应商和法律:当法律不强迫他们做其他事情时,供应商的行为遵循市场规则。4 卖得比 3.78 好。出于同样的原因,互联网提供商经常谈论bps并让您了解Bps。有一个因子 8:a Byte( B ) 是 8 位 ( b )。

问题是法律存在,但并非在所有国家都是一样的。

国际体系,或SI,是使用最广泛的世界贸易和科学使用(这是发表于1960年,目前是部分出仅在美国被采用,缅甸和利比里亚)。
它不仅建立了度量单位,而且建立了前缀

由于在计算机世界中使用 2 的幂(而不是人类世界中的10 )的数字基数是很自然的,因此在 1998 年引入了二进制前缀系统。这里直接上。现在我们发现在这样的情况下

the International Electrotechnical Commission (IEC) and several other standards
(NIST...) and trade organizations approved standards and recommendations 
for a new set of binary prefixes that refer unambiguously to powers of 1024
Run Code Online (Sandbox Code Playgroud)

当你阅读1GB它应该是1 000 000 Bytes
而不是当你阅读1GiB它应该1 073 741 824 Bytes

为什么仍然应该是?因为这取决于生产该物品的国家的立法者和进口该物品的国家的立法者如何在法律上采纳和转变国际委员会的指令。

所以要睁大眼睛。

(即使是因为在一些国家是规定写入信息,以满足胶粘标签法律的职责。通常它是如此之少比你真的需要保留好打开你的眼睛阅读阅读)


其他参考资料


rav*_*ven 7

当驱动器制造商创建 500 GB 容量驱动器时,它的容量确实为 500,000,000,000 字节,他们肯定会这样宣传。计算机作为二进制设备,更喜欢 2 的幂,具有一组不同的前缀,因此它们用于存储空间测量:

1 kibibyte = 2^10,1 mebibyte = 2^20,1 gibibyte = 2^30,等等。

例如,我有一个 300 GB 的驱动器连接到这台机器,Windows 显示以下容量:

Capacity:          300,082,855,936     279 GB
Run Code Online (Sandbox Code Playgroud)

300,082,855,936 / 2^30 = ~279。它实际向您显示的是驱动器的大小(以gibi字节为单位,而不是千兆字节)。所以,它应该是:

Capacity:          300,082,855,936     279 Gi
Run Code Online (Sandbox Code Playgroud)

有人可能会说这是 Windows 中的一个缺陷,但显然存储容量前缀含义没有明确的标准。在这篇 Wikipedia 文章中提供了更多好的信息,包括关于“消费者混淆”的部分。


Sam*_*mir 5

如果您想确定它的实际大小,请找出它使用的扇区大小和扇区总数。然后将这两个数字相乘以获得以字节为单位的总大小。这才是真正的尺寸!在任何操作系统中!它也称为磁盘容量

T = b x S

Where T is the total disk size in bytes,
b is the sector size in bytes,
and S is the total number of sectors.
Run Code Online (Sandbox Code Playgroud)

扇区数

您经常会在设备本身的标签上找到打印的扇区数。如果没有,请查看您的型号的数据表。这是一份文件,详细说明了有关您的模型的各种技术细节。在互联网连接的世界中,您可以在制造商的网站上找到它,可以在网页上的某种表格中找到,也可以作为可以下载的文件(通常为 PDF)以供学习和参考。在旧时代(在没有网络之前),您可能会在购买硬盘驱动器时收到一份打印副本。

扇区大小

有两种扇区:物理扇区和逻辑扇区。最常见的是,标准磁盘上的物理扇区大小为 512 字节。现代硬盘驱动器的标签上未列出扇区大小。要理解为什么会这样,您需要了解逻辑扇区和物理扇区之间的区别。我将尝试简要解释这一点。

LBA盘

现代硬盘驱动器使用逻辑扇区。您将看到这称为 LBA(逻辑块寻址)。实际上,在查找标签上的扇区总数时,您会看到称为 LBA 的扇区数,因此它会显示类似LBA: 123456789. 这是您的扇区总数。这些是磁盘上的逻辑扇区,它们使用 LBA 寻址方法写入和读取。这种方法允许操作系统使用大于物理扇区大小的分配单元的文件系统格式(例如 NTFS、FAT32)。

WD 迈拓

分配单元

分配单元在概念上类似的扇区大小,但它的一些广告中,你可以改变它的大小,而不改变物理扇区的大小灵活性水平。如果您在生活中购买并安装并格式化了不止一个硬盘驱动器,那么您无疑会遇到这个词。目前 NTFS 格式的硬盘驱动器最常见的分配单元大小是 4K、8K 和 16K。我说“今天”是因为硬盘驱动器在这些天可用的磁盘大小。

即,适合一个硬盘驱动器的分配单元大小可能不适合另一个。这取决于它有多大。较小的分配单元尺寸越小越好,而较大的分配单元尺寸越大越好。但是,这并不能阻止您在小硬盘驱动器上使用大的分配单元大小。相反!由于分配单元的逻辑性质,它可以在格式化过程中设置,并且可以设置为大于物理扇区。在小型硬盘驱动器上,较大的分配单元往往会略微提高性能,但会牺牲磁盘空间。

这就是 Microsoft 将术语从扇区大小更改为分配单位的原因。这发生在几个 Windows 版本之前。如果我没记错的话,他们是在 9x 的 Windows 家族之一中开始使用这个术语的。

然后分配单元在内部被转换并映射到磁盘上的一个或几个物理扇区。该任务由驱动控制器执行。控制器是硬盘驱动器背面的PCB板。在早期的 ATA 硬盘驱动器(现在称为并行 ATA 或 PATA)上,控制器板被称为 IDE(集成驱动器电子设备)。从历史上看,硬盘驱动器并不总是内置控制器。相反,这是一个单独的界面。

LBA 寻址的硬盘驱动器上最常见的物理扇区大小是 512 字节。但自 2010 年左右以来,许多新硬盘驱动器现在都属于高级格式类型。这只是意味着它使用大于 512 字节的扇区大小。目前,最大扇区大小为 4K,即 4096 字节。

要点是:现代硬盘驱动器上的物理扇区大小与用户几乎无关。物理扇区大小被组织成逻辑扇区和分配单元,并从用户那里抽象出来。高级格式磁盘甚至还有一层抽象,因为这些磁盘可以模拟 512 字节扇区但使用 4096 个物理扇区。因此,扇区大小通常不会打印在 LBA 寻址硬盘驱动器的标签上,对于高级格式磁盘更是如此。但是,它们确实具有物理扇区大小。您可以在每个型号的数据表中找到此详细信息,或者在运行的系统上使用实用程序软件。

CHS盘

这种类型的磁盘早于 LBA 寻址的磁盘驱动器。他们使用称为 CHS(气缸盖扇区)寻址的方法进行读取和写入。用户可以直接访问物理扇区。与 LBA 不同,没有扇区抽象层。这些磁盘上的扇区大小几乎可以保证为 512 字节。但它可以由用户更改。

你听说过“低级格式化”吗?这就是这个词的来源。由于直接访问物理扇区,因此可以更改扇区的大小。这允许用户“低级”格式化磁盘,这意味着重新写入磁盘上的物理扇区。当磁盘出现问题时,这有时很有用。这是刷新磁盘的一种方式。现代硬盘驱动器不再可能实现真正的低级格式化。这不要与文件系统格式相混淆。

量子 ibm

CHS 磁盘的标签上总是印有每磁道扇区数 (SPT) 以及其他详细信息。如果没有提及扇区大小,则假定为 512 字节。其他细节是柱面数和磁头数。那是主要的三个。因此得名,气缸盖部门。这也是有充分理由的。因为在使用 CHS 寻址的真正早期的硬盘驱动器上,所有这些参数都必须在系统的 BIOS 设置程序中手动设置。这是安装过程的一部分!所以这是正确安装它的关键信息。随着 PC 平台的发展,包括 BIOS 增强、磁盘驱动器和接口创新,只需插入硬盘驱动器,系统就会自动检测并配置它。

您可能已经注意到,我用过去时来描述这些磁盘。这是因为它们已经过时,并且(几乎)无处可寻。也许除了技术博物馆。

前缀字节大小

首先是测量的一些基础知识:

  • 二进制数字(位)是二进制计算机中的最小计量单位。它要么是 1,要么是 0。(或者在量子计算机中两者都是。)
  • A bit 缩写为小写b,或拼写为 bit
  • 下一个单位是一个字节。
  • 一个字节用大写字母B缩写,或拼写为 bytebyte
  • 一个字节正好是 8 位。
  • 下一个单位是一个单词,通常只是拼写为 word
  • 字长取决于处理器架构。通常为 8 位、16 位或 32 位或 64 位。
  • 之后的下一个单位是单词的倍数,例如双字或四字。
  • 双字缩写为Dword或Dw,四字缩写为Qword或Qw。

这些是基本的度量,但除非您是程序员,否则您不会遇到文字。磁盘大小、分区和文件使用字节。一个字节是最实用的测量方法。磁盘上的扇区是一个字节块。按照惯例,这是最常见的 512 字节,它是 2 的倍数。

2^0 = 1 byte
2^1 = 2 byte
2^2 = 4 byte
2^3 = 8 byte
2^4 = 16 byte
2^5 = 32 byte
2^6 = 64 byte
2^7 = 128 byte
2^8 = 256 byte
2^9 = 512 byte
Run Code Online (Sandbox Code Playgroud)

这些最小的字节大小可以很容易地仅用数字表示。但是2的第20个倍数是1048576,第30个倍数是1073741824。如果这表示字节,我们可以用前缀来更简单地表示相同的值。这就是为什么我们有像kilo、mega和giga这样的前缀。但问题是这些是公制十进制测量系统中使用的SI(Système International)前缀。该系统中的每个前缀代表一个 10 的倍数的值。而二进制计算机使用 2 为基数来衡量信息。

unit 10^0 = 1
kilo 10^3 = 1000
mega 10^6 = 1000000
giga 10^9 = 1000000000
Run Code Online (Sandbox Code Playgroud)

正是出于这个原因,国际标准机构 IEC 引入了二进制前缀的概念。千、兆、千兆等名称在该系统中略有更改,以反映它们将用于二进制测量。

kibi 2^10 = 1024 = 1024^1
mebi 2^20 = 1048576 = 1024^2
gibi 2^30 = 1073741824 = 1024^3
Run Code Online (Sandbox Code Playgroud)

这些名称是它们在 SI 系统中各自名称和单词 binary 的串联。例如,吉备,从形成卤味和双向进制。

如果我说一个物体的质量为 5000 克,我可以用前缀 5 kG(千克)来表示该值。我将它除以一千以删除尾随零。因为前缀的值是已知的,所以第二个人不需要问我第一次测量了多少克。他简单地颠倒了这个过程,将我的记号 5 kG 乘以 1000 以将其转换为克。Kilo 表示千,所以 5 x 1000 = 5000。

如果每个扇区为 512 字节,则磁盘上的前 30 个扇区为 15360 字节。为了更简单地表达这一点,我可以将其除以 1000。结果是 15.36 KB,或 15.36 KB。如果我将它四舍五入到最接近的整数,它将是 15 kB。如果另一个人看到这个数字,他会假设 15 kB 是准确的度量,并将其乘以 1000 以将其转换为字节。所以这将是 15000 字节,这是不正确的,因为原始测量值是 15360 字节。另一方面,如果我将 15360 字节除以 1024,我将得到 15 KiB!那是kibibyte。没有十进制扩展!因为它说的是“KiB”而不是“KB”,所以另一个人会知道乘以 1024 而不是 1000,以获得原始值。

同样,当制造商在设备上打印 8 GB 时,他们使用的是十进制前缀。带有尾随零值的那些!所以 8 GB 不是 8 GiB (gibibyte) 或 8 x 2^30,而是 8 x 10^9 = 8 000 000 000 字节。但是,Windows 使用二进制大小计算(2 的幂),看起来像十进制前缀(即“GB”)。所以在 Windows 中,这 8 000 000 000 个字节除以 2^30(或 1024^3)得到 7.450580597“GB”(实际上是 GiB)。这四舍五入到最接近的百分位,因此它在 Windows 中将显示为 7.45 "GB"。我一直引用“GB”,因为微软应该使用 GiB 来表示这个意思,而不是 GB。这只是针对一个已经令人困惑的话题。

工作实例

我现在将运行一些示例,使用图片中硬盘驱动器的标签信息。我们先来看看 500 GB 的磁盘。

Capacity: 500 GB
LBA: 976773168
976773168 x 512 = 500107862016 bytes
500107862016 / 1024^3 = 465.761741638 ? 466 GiB
Run Code Online (Sandbox Code Playgroud)

所以这是 466 GiB,或 466 GB,用 Microsoft 术语(和 JEDEC)。请注意,该数字甚至不是经过除法后的数字。我相信这是因为有比用户可以用来存储数据的扇区更多。一些扇区受到保护,一些扇区用于重新映射。随着时间的推移,一些扇区会变坏,所以这是其他扇区用作储备的时候。硬盘驱动器标记并跟踪坏扇区并停止使用它们。

如果您只获取容量数并将其转换为 GiB,它将看起来像这样。

500 GB = 500 x 10^9 = 500000000000 byte
500000000000 byte = 500000000000 / 1024^3 = 465.661287308 ? GiB
Run Code Online (Sandbox Code Playgroud)

您可以看到它是一个较小的数字,但它仍然四舍五入为 466 GiB。但是在确切的字节数中,这更接近您实际可以使用的数量。这样,您就不需要知道扇区大小。仍使用 LBA 编号和扇区大小计算确切容量。这就是我将在其余示例中使用的内容。

Capacity: 320 GB
LBA: 632672208
632672208 x 512 = 323928170496 bytes
323928170496 / 1024^3 ? 302 GiB
Run Code Online (Sandbox Code Playgroud)

最后,这是其中一张 CHS 磁盘。基本思想非常相似。如果没有另外指明,扇区大小假定为 512 字节。我会看看量子磁盘。你可以自己做IBM。量子盘没有说明它的容量。

C: 2484
H: 16
S: 63
2048 x 16 x 63 x 512 = 1056964608 bytes
1056964608 bytes = 1056964608 / 1024^2 = 1008 MiB
1056964608 bytes = 1056964608 / 1024^3 = 0.984375 ? 0.98 GiB
Run Code Online (Sandbox Code Playgroud)

你去吧!高达 0.98 GB!对不起!我的意思是 0.98 GiB!;-)

营销

有一种叫做“保证扇区”的东西。您会在某些硬盘驱动器的标签或其数据表中找到此信息。这是用户/消费者和存储设备供应商之间持续争论的结果。这种困惑在今天仍然存在,在云计算时代和固态硬盘已成为主流技术并逐渐取代旧硬盘驱动器的世界中。

我会说营销与此几乎没有关系。这纯粹是一个数学问题,不是数学本身的问题,而是人的问题。这只是一个大混乱被允许继续下去。至少,微软应该将二进制前缀表示为 KiB、MiB 和 GiB。Windows 仍然是当今 PC 上的主要操作系统。