全部產品
Search
文件中心

:雲端硬碟容量與購買容量不一致的問題排查

更新時間:Jun 08, 2026

在Linux系統的ECS執行個體中,使用df命令查看到的雲端硬碟容量可能與您購買的雲端硬碟容量不一致。這通常不是因為實際雲端硬碟空間不足,而是由於檔案系統的中繼資料、Inode節點佔用以及系統保留空間等因素佔用了部分空間。

問題描述

Linux執行個體中的雲端硬碟容量為200 GiB,但是在系統初始化後,使用df -h命令查看雲端硬碟容量時只顯示197 GiB。

  1. df -h命令顯示的總容量(Size)與控制台購買容量不一致。

  2. 已用空間(Used)加上可用空間(Avail)之和與總容量(Size)不同。

[root@xxx]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        916M     0  916M   0% /dev
tmpfs           936M   12K  936M   1% /dev/shm
tmpfs           936M  536K  936M   1% /run
tmpfs           936M     0  936M   0% /sys/fs/cgroup
/dev/vda3        40G  4.1G   34G  11% /
/dev/vda2       200M  5.8M  195M   3% /boot/efi
tmpfs           188M     0  188M   0% /run/user/0
/dev/vdb1       197G  118M  189G   1% /mnt
說明

由於您在阿里雲控制台購買的雲端硬碟以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。請根據實際情況替換分區名稱。

系統返回類似如下資訊。

[root@xxx]# sudo tune2fs -l /dev/vdb1 | grep -E "count|size:"
Inode count:              13107200
Block count:              52428539
Reserved block count:     2199325
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Flex block group size:    16
Mount count:              1
Maximum mount count:      -1
Inode size:               256
Required extra isize:     32
Desired extra isize:      32

計算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。請根據實際情況替換分區名稱。

您也可以使用下面的公式計算Inode節點佔用的空間:

計算系統保留空間

執行以下命令,直接得出系統保留空間總量。

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。請根據實際情況替換分區名稱。

返回如下:

[root@ixxxxxxxxxxxx]# sudo tune2fs -l /dev/vdb1 | 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."}'
Reserved space: 8.39 GiB

您也可以使用下面的公式計算系統保留空間佔用的磁碟空間: