2026-10-03 更新:本文改用计量标准(SI 与二进制词头)、磁盘厂商与操作系统官方文档作为依据重写,删去了原先的本机测试数值,改为逐层给出可自行核对的官方来源。
买回来一块标称 1TB 的盘,装进系统里显示 931GB;一块 256GB 的 SSD,格式化后只剩 238GB 可用。这不是厂商在容量上做手脚,而是四层不同的口径叠在一起:词头口径差 6.87% → 分区表占用 → 文件系统元数据 → 厂商预留区。下面逐层拆开,每层都给出能自己核对的官方依据。
一、先看清"同一个数字的两种口径"
计量的定义在标准里写得很清楚。NIST 的 SI 词头表把 giga(符号 G)定义为 10^9;NIST 物理实验室关于二进制词头的页面同时给出两个数字:1 GiB = 2^30 B = 1,073,741,824 B,1 GB = 10^9 B = 1,000,000,000 B。
更关键的是 NIST SP 330 第 3 节那句规定:SI 词头严格表示 10 的幂,不应用来表示 2 的幂——"1 kilobit 表示 1000 bit,而不是 1024 bit"。二进制词头(kibi / mebi / gibi)是 IEC 在 1998 年单独批准的,后来并入 ISO/IEC 80000 系列,现行版 IEC 80000-13(2025)规定信息科技领域的量、单位与二进制词头。
于是有了那个恒定的系数:10^9 / 2^30 = 0.931323,也就是"缩水 6.87%"。
| 标称(十进制) | 字节数 | 按 GiB 显示 | 差值 |
|---|---|---|---|
| 128 GB | 128,000,000,000 | 119.2 | 6.87% |
| 256 GB | 256,000,000,000 | 238.4 | 6.87% |
| 512 GB | 512,000,000,000 | 476.8 | 6.87% |
| 1 TB | 1,000,000,000,000 | 931.3 | 6.87% |
| 2 TB | 2,000,000,000,000 | 1,862.6 | 6.87% |
| 4 TB | 4,000,000,000,000 | 3,725.3 | 6.87% |
二、第一层:厂商数 1000,Windows 数 1024
厂商的口径在官方文档里是明写的。Seagate 的支持文档写:制造商以十进制标注容量,1 MB = 1,000,000 字节、1 GB = 1,000,000,000 字节、1 TB = 1,000,000,000,000 字节;而 FDISK、BIOS、Windows 与旧版 macOS 使用二进制的 1 GB = 1,073,741,824 字节。同一页给出换算公式 Decimal capacity / 1,073,741,824 = Binary GB capacity 与对照(1TB 显示 931GB、500GB 显示 465GB、2TB 显示 1.81TB)。另一篇 Seagate 官方说明更直接:存储行业标准就是用十进制显示容量,所有主要磁盘厂商讨论容量时都采用十进制。
其他厂商的官方口径一致:Samsung 的数据表写 1GB = 1,000,000,000 bytes,并说明"部分容量用于系统文件与维护,实际可用容量可能小于标称总容量";Apple 的支持文档写明包装标注采用 1GB = 1 billion bytes、1TB = 1 trillion bytes,并注明 actual formatted capacity less;Western Digital 的白皮书则说明可访问容量会因格式化、分区与操作系统等因素与标称不同。
操作系统的口径差异也各有官方说明:
- Windows:Microsoft Learn 明确"Windows 中的存储数量以二进制(base-2)单位呈现",并举例:2 TB 的盘在 Windows 中显示为 1.82 TiB,128 TB 存储池显示为 116.41 TiB。
- Apple:同一份支持文档指出,iOS 10 / OS X Leopard 及更早的系统用二进制报告容量,现行系统改用十进制——这就是同一块盘在 Windows 上"缩水"、在 Finder 里却接近标称的原因。
三、第二层:分区表和对齐,先吃掉一小块
进入系统之前,分区表本身就有固定占用。Microsoft 的分区文档给出:GPT 磁盘最多可有 128 个分区;Windows 要求 EFI 系统分区最小 200 MB(512n/512e 盘)或 300 MB(4Kn 盘),并建议每个 GPT 盘设一个 16 MB 的 Microsoft 保留分区(MSR)。GPT 转换工具文档还给出结构本身的占用:磁盘前端 16 KB + 2 个扇区、末端 16 KB + 1 个扇区,用于存放主/备分区表。
这些在 TB 级盘上是零头,在 128GB 级的小容量设备上才值得单独算。
四、第三层:文件系统自己的元数据
格式化不是"把裸盘贴上文件名",那一刻就有一批元数据结构占位:
- NTFS:默认簇(分配单元)大小 4 KB,卷与文件的上限随簇大小变化;NTFS 会为 MFT 预留最多 12.5% 的卷空间,直到卷的其余部分被用满才让出来。
chkdsk的输出里能看到索引、system(含各种元文件)与日志文件的占用。 - ext4:
mke2fs手册写明-m选项把文件系统块的百分比保留给超级用户,默认 5%;tune2fs -m可对已有文件系统调整,保留块的用途是避免碎片化、并保证 root 守护进程在盘满时仍能工作。内核文档另有一条:ext4 驱动默认预留 2% 或 4096 个簇(取较小者)的空间,用于避免突发的 ENOSPC 与数据丢失。 - XFS:元数据日志默认放在数据段内;未显式指定大小时,
mkfs.xfs会依文件系统大小自动选择日志空间,这部分不用于用户数据。 - Btrfs:元数据块组的典型大小是 256 MiB(小于 50 GiB 的文件系统)或 1 GiB,数据块组 1 GiB;单设备默认对元数据做 DUP(存两份)。
- APFS:容器内某卷的可用空间 = 容器总大小 − 容器内所有卷占用之和,多个卷动态共享容器的空闲空间。
五、第四层:SSD 里那块看不见的预留区
关于厂商预留(over-provisioning),官方口径只到"部分容量会用于系统文件与维护"这一层(Samsung 数据表即如此表述),并没有公布具体比例。所以网上那些"固定留 7%"的说法不必当依据,能引用的只有厂商的定性声明。
与容量相关的另一件事是扇区口径:Advanced Format 把物理扇区从 512 字节提高到 4096 字节(WD 白皮书,目标是减少每扇区开销、提升容量与纠错能力);Microsoft 的支持政策把 512e 定义为"逻辑扇区 512 字节、物理扇区 4 KB",4Kn 定义为"逻辑与物理都是 4 KB";512e 最初由 Seagate 与 Western Digital 提出,经 IDEMA 的委员会标准化后被 Microsoft 接受。这也是"分区要按 4KB 对齐"的由来——在 512e 盘上分区没对齐,每个物理扇区内部的读改写会付出性能代价。
六、各处的数字对照表
把前面几层叠起来看:
| 场景 | 1 TB 盘的典型值 | 依据 |
|---|---|---|
| 厂商标称 | 1,000,000,000,000 字节 | SI 词头,GB = 10^9 |
| Windows 显示 | 931.3 GiB(写作 931 GB) | 二进制口径 ÷ 2^30 |
ext4 格式化后 df 可用 |
约 890~910 GiB 区间 | 扣除 5% 保留块与元数据 |
| NTFS 格式化后 | 少约 1~2%(视簇大小与元文件) | MFT 预留与元数据 |
| RAID/存储池 | 再按冗余比例扣 | 镜像约 50%,raidz 约 (N−P)/N |
阵列那一层的官方依据同样是现成的:OpenZFS 文档给出 N 块盘的镜像只提供 X 字节可用、raidz 组以 P 块冗余盘可容纳约 (N−P)×X;Microsoft 的存储池文档给出双向镜像效率 50%、三向镜像 33.3%;Linux 内核的 md 文档说明有冗余的阵列要求成员盘尺寸一致,尺寸不齐时按最小的对齐,多出来的容量会被浪费。
七、买盘之前的几条经验数
- 二进制显示 ≈ 标称 × 0.9313;块级设备在这种口径下"少了 6.87%",与品牌无关。
- ext4 默认把 5% 留给 root。服务器上可用
tune2fs -m调低,但要知道代价是碎片化风险与"盘满时 root 也写不进去"。 - 组阵列先算冗余:镜像砍一半,raidz 按
(N−P)/N,且成员盘尺寸保持一致。 - "1TB 到底是 1000GB 还是 1024GB"取决于说话的人用哪套词头——厂商标称用十进制,很多系统显示用二进制,两者都没错,混用才是错。
八、自己动手核一遍
下面这些命令都出自官方文档(见文末来源),不是自造:
Windows(判断扇区口径与看元数据占用):
fsutil fsinfo ntfsinfo X: :: 看 Bytes Per Sector / Bytes per Physical Sector,判断 512n / 512e / 4Kn
chkdsk X: :: 输出里含索引、system、日志文件的占用
format X: /l /a:64k :: 官方示例:启用大文件记录段并把分配单元设为 64KBLinux(文件系统保留块与日志):
mke2fs -m 1 /dev/sdX1 # 新建时把保留比例从默认 5% 调到 1%
tune2fs -m 1 /dev/sdX1 # 对已有文件系统调整保留比例
mkfs.xfs -l logdev=/dev/sdb1,size=10m /dev/sda1 # 官方示例:显式指定日志设备与大小九、总结一句话
厂商按 SI 词头数 1000,Windows 按 2 的幂数 1024 却沿用 GB 的写法,两个口径差 6.87%;再叠加分区表、文件系统元数据与厂商预留,"缩水"就这样出现了。记住 0.9313 这个系数、ext4 的 5% 保留、以及阵列的冗余开销,基本就不会被容量问题绕进去。
参考来源
- NIST, Metric (SI) Prefixes — https://www.nist.gov/pml/owm/metric-si-prefixes
- NIST, SP 330 - Section 3(SI 词头严格表示 10 的幂)— https://www.nist.gov/pml/special-publication-330/sp-330-section-3
- NIST, Definitions of the SI units: The binary prefixes — https://physics.nist.gov/cuu/Units/binary.html
- IEC, IEC 80000-13:2025 Quantities and units — Part 13 — https://webstore.iec.ch/en/publication/87379
- Seagate, Why does my hard drive report less capacity than indicated on the drive's label? — https://www.seagate.com/support/kb/why-does-my-hard-drive-report-less-capacity-than-indicated-on-the-drives-label-172191en/
- Seagate, Storage capacity measurement standards — https://www.seagate.com/em/en/support/kb/storage-capacity-measurement-standards-002046en/
- Western Digital, White Paper: Advanced Format — https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/collateral/white-paper/white-paper-advanced-format.pdf
- Apple Support, How storage capacity is measured on Apple devices — https://support.apple.com/en-us/102119
- Apple Support, Add, delete, or erase APFS volumes in Disk Utility — https://support.apple.com/guide/disk-utility/add-delete-or-erase-apfs-volumes-dskua9e6a110/mac
- Samsung, SSD 860 PRO Data Sheet — https://download.semiconductor.samsung.com/resources/data-sheet/Samsung_SSD_860_PRO_Data_Sheet_Rev1_1_10129617073513.pdf
- Microsoft Learn, Plan volumes on Azure Local and Windows Server clusters(Windows 以二进制呈现)— https://learn.microsoft.com/en-us/windows-server/storage/storage-spaces/plan-volumes
- Microsoft Learn, NTFS overview — https://learn.microsoft.com/en-us/windows-server/storage/file-server/ntfs-overview
- Microsoft Learn, How NTFS reserves space for its Master File Table — https://learn.microsoft.com/en-us/troubleshoot/windows-server/backup-and-storage/ntfs-reserves-space-for-mft
- Microsoft Learn, Support policy for 4K sector hard drives in Windows — https://learn.microsoft.com/en-us/troubleshoot/windows-server/backup-and-storage/support-policy-4k-sector-hard-drives
- Microsoft Learn, UEFI/GPT-based hard drive partitions — https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/configure-uefigpt-based-hard-drive-partitions
- Microsoft Learn, MBR2GPT.EXE(GPT 保留区尺寸)— https://learn.microsoft.com/en-us/windows/deployment/mbr-to-gpt
- man7.org, mke2fs(8) / tune2fs(8) / mkfs.xfs(8) — https://man7.org/linux/man-pages/man8/mke2fs.8.html ・ https://man7.org/linux/man-pages/man8/tune2fs.8.html ・ https://man7.org/linux/man-pages/man8/mkfs.xfs.8.html
- Linux Kernel Documentation, ext4 General Information — https://docs.kernel.org/admin-guide/ext4.html
- Btrfs Documentation, mkfs.btrfs(8) — https://btrfs.readthedocs.io/en/latest/mkfs.btrfs.html
- OpenZFS Documentation, zpoolconcepts(7) — https://openzfs.github.io/openzfs-docs/man/master/7/zpoolconcepts.7.html
- Linux Kernel Documentation, RAID arrays — https://docs.kernel.org/admin-guide/md.html
- IDEMA, The Advent of Advanced Format — https://idema.org/initiatives/advanced-format/the-advent-of-advanced-format/