赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 云服务器 ECS
  4. 操作指南
  5. 块存储
  6. 块存储FAQ
  7. 云盘容量与购买容量不一致的问题排查

云盘容量与购买容量不一致的问题排查

  • 块存储FAQ
  • 发布于 2025-04-01
  • 0 次阅读
文档编辑
文档编辑

在Linux系统的ECS实例中,使用df命令查看到的云盘容量可能与您购买的云盘容量不一致。这通常不是因为实际云盘空间不足,而是由于文件系统的元数据、Inode节点占用以及系统保留空间等因素占用了部分空间。

问题描述

Linux实例中的云盘容量为200 GiB,但是在系统初始化后,使用df -h命令查看云盘容量时只显示197 GiB。

  1. df -h命令显示的总容量(Size)与控制台购买容量不一致。

  2. 已用空间(Used)加上可用空间(Avail)之和与总容量(Size)不同。

image

说明

由于您在阿里云控制台购买的云盘以GiB为单位,因此本文以df -h命令为例,展示云盘分区的使用情况。如果您使用df -H命令,则返回的云盘分区使用情况将以GB为单位。

  • df -h使用1024作为基数(如KiB、MiB、GiB等),属于基于二进制的单位。

  • df -H则使用1000作为基数(如KB、MB、GB等),属于基于十进制的单位。

假设某分区的实际大小为40 GiB,使用df -h命令可能显示为40G,而使用df -H命令则可能显示为42G。这是因为40 * 1024^3字节除以1000^3约等于42.95亿字节。

原因分析

问题一:df -h命令显示的总容量(Size)与控制台购买容量不一致

文件系统开销

如果您购买了一个200GiB的云盘,在Linux系统中格式化并挂载后,你可能会看到总容量只有约197GiB。这是因为创建文件系统时会产生额外的数据结构,这些也会占用一定的云盘空间。虽然这部分空间一般较小,但确实会对总容量造成影响。

问题二:已用空间(Used)加上可用空间(Avail)之和与总容量(Size)不同

这种差异通常是由两个因素造成的:Inode节点占用的空间和系统保留空间。计算占用空间请参见排查方法。

Inode节点占用

文件系统为每个文件分配一个Inode节点来记录文件属性(如权限、所有者等)。这些Inode节点本身需要占用一定的云盘空间,Inode节点占用的云盘空间不会被df -h命令统计。

系统保留空间

除了Inode节点外,Linux文件系统还会预留一部分云盘空间作为系统保留空间,以防止根目录被完全填满,从而保证系统的稳定性和安全性。这部分空间也不会出现在df -h命令的已用空间(Used)加上可用空间(Avail)的总和中。

排查方法

查看详细的分区信息

执行如下命令,查看该云盘对应的分区信息。

sudo tune2fs -l /dev/[$Partition] | grep -E "count|size:"
说明

其中/dev/[$Partition]是云盘对应的分区名称,例如/dev/vdb1。请根据实际情况替换分区名称。

系统返回类似如下信息。

image

计算Inode节点占用的空间

执行以下命令,直接得出Inode占用的空间总量。

sudo tune2fs -l /dev/[$Partition] | awk '/Inode count:/{c=$3} /Inode size:/{split($0,a,":"); s=a[2]} END{if(c && s) printf "Inode space: %.2f GiB\n", c*strtonum(s)/(1024^3); else print "Error: Could not find Inode information."}'
说明

其中/dev/[$Partition]是云盘对应的分区名称,例如/dev/vdb1。请根据实际情况替换分区名称。

返回如下:

image

您也可以使用下面的公式计算Inode节点占用的空间:

Inode占用空间=10243Inode count×Inode size​=1024313107200×256​=3.12GiB

计算系统保留空间

执行以下命令,直接得出系统保留空间总量。

sudo tune2fs -l /dev/[$Partition] | awk '/Reserved block count:/{r=$4} /Block size:/{b=$3} END{if(r && b) printf "Reserved space: %.2f GiB\n", r*b/(1024^3); else print "Error: Could not find reserved block or block size information."}'
说明

其中/dev/[$Partition]是云盘对应的分区名称,例如/dev/vdb1。请根据实际情况替换分区名称。

返回如下:

image

您也可以使用下面的公式计算系统保留空间占用的磁盘空间:

系统保留空间=10243Reserved block count×Block size​=102432199325×4096​=8.39GiB

相关文章

云盘容量与购买容量不一致的问题排查 2025-04-01 11:58

在Linux系统的ECS实例中,使用df命令查看到的云盘容量可能与您购买的云盘容量不一致。这通常不是因为实际云盘空间不足,而是由于文件系统的元数据、Inode节点占用以及系统保留空间等因素占用了部分空间。 问题描述 Linux实例中

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号