问题现象

前言
订购的8核16G 100GB数据盘的云服务器,到手安装宝塔后挂载硬盘仅显示97.9GB,如何检查是否是云服务器商因宿主机磁盘容量不足导致系统少给磁盘了还是因为其他原因导致的?
正文内容

df -h详解
首先我们可以使用df -h 来查看已挂载文件系统的可用/已用空间,也就是我们常说的看磁盘还剩下多少空间。
-h参数:human-readable,以人类易读的GB/MB单位显示(而不是原始字节数),是日常排查最常用的参数。
使用df -h 命令后,关键输出是这一行:
/dev/vdb1 98G 657M 93G 1% /www
这行的反馈信息帮我们解决了两个核心问题:
- 确认了数据盘的「可用存储容量」:直接告诉/www目录(挂载了数据盘)的可用空间是98G,已用仅657M,使用率1%,排除了「空间被异常占用」的问题。
- 验证挂载状态:确认 /dev/vdb1 已经成功挂载到 /www 目录,数据盘可以正常写入使用。
- 直观展示差异:让你直观看到「购买 100G,显示 98G」的现象,是后续排查的起点。
关键特性(为什么它只显示了98G)
- 它统计的是文件系统层面的可用空间,只计算「可以用来存文件的部分」,不包含:磁盘分区表、引导扇区等底层元数据、文件系统自身的管理空间(超级块、inode 表、日志区等)
- 这就是为什么它的显示值会小于磁盘的物理总容量。
fdisk -l 详解
fdisk 是Fixed Disk的缩写,-l 参数是list ,核心作用是查看「磁盘的物理硬件信息、分区表结构」,也就是「看磁盘本身有多大、分了几个区」。
执行fdisk -l 命令后,关键输出是这一行:
Disk /dev/vdb: 100 GiB, 107374182400 bytes, 209715200 sectors
...
/dev/vdb1 128 209715071 209714944 100G 83 Linux
这里的输出内容,帮我们彻底解决了「容量缩水」的疑问:
- 验证磁盘物理总容量:直接显示 /dev/vdb 这块磁盘的原始硬件容量是 100 GiB(107374182400 字节),和你购买的 100G 数据盘完全一致,证明云服务商没有少给容量。
- 查看分区结构:显示 /dev/vdb1 分区的起始 / 结束扇区,解释了「98G vs 100G」的差异来源:前 128 个扇区被分区表占用,不会计入文件系统空间。
- 确认磁盘类型与格式:显示磁盘标签类型为 dos(MBR 分区表),分区类型为 Linux,确认分区格式正常,无异常。
关键特性(为什么它显示 100G)
- 它统计的是磁盘物理层面的总容量,包含所有扇区(包括分区表、引导扇区、未分配空间等),是磁盘的「真实硬件大小」。
- 它不关心文件系统,只看磁盘和分区的底层结构,因此能看到 df -h 看不到的「原始总容量」。
| 维度 | df -h |
fdisk -l |
|---|---|---|
| 核心定位 | 文件系统空间统计工具 | 磁盘分区表查看工具 |
| 统计对象 | 已挂载的文件系统(可存文件的空间) | 物理磁盘、分区表(硬件层面) |
| 显示内容 | 已用 / 可用空间、挂载点、使用率 | 磁盘总容量、分区结构、扇区信息 |
| 是否包含元数据 | 不包含(只算可用空间) | 包含(算上分区表、引导扇区等) |
| 核心用途 | 日常看磁盘剩余空间、排查满盘问题 | 查看磁盘硬件大小、分区结构、排查分区问题 |
| 你场景中的作用 | 发现「98G」的显示差异 | 验证「100G」的物理容量,解释差异原因 |
为什么两个命令的结果不一样?
结合上面的返回信息,差异的完整链路是:
- 物理磁盘总容量:fdisk -l 显示 100 GiB(107374182400 字节),这是磁盘的真实大小。
- 分区表占用:/dev/vdb1 从 128 扇区开始,前 128 扇区(64KB)用于存储 MBR 分区表,这部分空间不会被文件系统识别。
- 文件系统格式化开销:分区格式化后,约 1-2G 空间被用于存储超级块、inode 表等文件系统元数据,用于管理文件。
- df -h 显示:最终可用的文件系统空间约为 98G,就是你看到的结果。
延伸:什么时候用哪个命令?
- 日常运维:优先使用
df -h,快速查看磁盘剩余空间,排查网站日志、数据库文件是否占满磁盘。 - 磁盘扩容/分区排查:用
fdisk -l,查看磁盘物理大小、分区结构,确认新磁盘是否被系统识别、分区是否正确。 - 深度排查:两个命令结合使,像我们本次排查一样,用
fdisk -l验证硬件容量,用df -h验证可用空间,彻底排查容量问题。