为什么云服务器磁盘容量用GiB而不是GB表示?

云服务器(以及大多数现代操作系统和存储设备)使用 GiB (Gibibyte) 而不是 GB (Gigabyte) 来表示磁盘容量,主要是为了消除歧义、确保精确性,并符合国际电工委员会(IEC)制定的标准。

这背后的核心原因在于"GB"这个单位在历史上存在两种完全不同的定义,而 GiB 的引入正是为了解决这种混乱:

1. 两种定义的冲突

  • 十进制定义 (Decimal, SI 标准):
    这是硬盘制造商(如希捷、西部数据等)通常使用的标准。他们按照 $10^3$ 的倍数计算:
    $$1 text{ GB} = 1,000,000,000 text{ Bytes}$$
    这也是为什么你买一块标称"500 GB"的硬盘,在电脑上可能只能看到约 465 GB 的原因。

  • 二进制定义 (Binary, IEC 旧标准):
    计算机底层逻辑是基于二进制的(2 的幂次方)。操作系统(如 Linux、Windows)内部处理内存和文件系统时,习惯用 $2^{10}$ 的倍数计算:
    $$1 text{ GB} (text{传统用法}) = 1,024 times 1,024 times 1,024 = 1,073,741,824 text{ Bytes}$$

冲突点:由于这两种定义相差约 7.37%,如果混用会导致用户困惑。例如,云厂商如果按十进制卖给你一个"100 GB"的卷,但系统按二进制显示,你会觉得“少了一大截”。

2. GiB 的标准化作用

为了解决上述问题,IEC 在 1998 年引入了新的前缀来明确区分这两种单位:

  • GB (Gigabyte):严格定义为 $10^9$ (1,000,000,000) 字节。
  • GiB (Gibibyte):严格定义为 $2^{30}$ (1,073,741,824) 字节。

为什么云服务器选择 GiB?
云服务器底层运行的是操作系统(通常是 Linux),而操作系统在读取磁盘分区大小、显示 df -h 或 lsblk 命令输出时,默认是按照二进制逻辑计算的。

  • 如果你购买了一块云盘,云厂商在后台分配给操作系统的是基于二进制地址空间的块设备。
  • 当你在控制台查看或使用命令行工具时,看到的是操作系统计算出的真实可用空间。
  • 使用 GiB 可以准确反映操作系统看到的实际字节数,避免用户误以为被“偷了空间”或者对容量产生误解。

3. 实际影响示例

假设云厂商提供一块 100 GiB 的云盘:

  • 实际字节数:$100 times 1,073,741,824 = 107,374,182,400$ 字节。
  • 换算成十进制 GB:$107,374,182,400 / 1,000,000,000 approx 107.37 text{ GB}$。

如果此时它只写"100 GB",而你按十进制理解(以为有 1000 亿字节),但实际上它是按二进制算的(1073 亿字节),虽然在这个例子中数值反而变大了,但在反向场景(如购买 100 GB 标称值的硬盘,系统显示 ~93 GiB)中,混淆会导致严重的信任危机。

总结

云服务器使用 GiB 是为了:

  1. 技术准确性:匹配操作系统底层的二进制寻址机制。
  2. 消除歧义:明确告诉用户,这里的容量是按 $2^{30}$ 计算的,而非硬盘厂商常用的 $10^9$。
  3. 行业标准:符合 IEC 国际标准,是云计算和 IT 基础设施领域的通用规范。

简单来说,GiB 是“操作系统眼中的真实容量”,而 GB 往往是“商业宣传中的整数容量”。在技术文档和云控制台中使用 GiB,能更诚实地反映你拥有的资源。