服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-13 更新于 2026-10-13 简米科技 4,639 字 11 分钟阅读

虚拟机如何查看磁盘空间?磁盘空间分配情况详解

导读在虚拟机里查磁盘空间,最靠谱的方法是先登录系统用 df -h(Linux)或磁盘管理(Windows)看已用容量,再回到宿主机虚拟化平台查看虚拟磁盘的置备策略,两者对照才能搞清真实分配情况,很多人在虚拟机里查磁盘时容易犯迷糊:系统里显示的空间和购买时说的对不上,或者明明删了文件,可用空间却没涨,这其实是因为虚拟……

在虚拟机里查磁盘空间,最靠谱的方法是先登录系统用 df -h(Linux)或磁盘管理(Windows)看已用容量,再回到宿主机虚拟化平台查看虚拟磁盘的置备策略,两者对照才能搞清真实分配情况。

很多人在虚拟机里查磁盘时容易犯迷糊:系统里显示的空间和购买时说的对不上,或者明明删了文件,可用空间却没涨,这其实是因为虚拟机磁盘存在"客户机视角"和"宿主机视角"两套数据,下面按不同系统、不同使用场景,把查看磁盘空间和分配情况的实操方法拆开讲。

为什么要分清"虚拟机磁盘空间"和"宿主机实际分配"

虚拟机看到的磁盘大小 ≠ 宿主机分配大小

虚拟机里的操作系统看到的磁盘,是一个虚拟设备,宿主机创建虚拟机时,会指定虚拟磁盘文件的容量上限,100GB,但这个 100GB 并不一定立刻从物理硬盘上划走,真正占用的物理空间取决于磁盘置备模式。

如果你在 VMware Workstation 里创建虚拟机时选了"将虚拟磁盘存储为单个文件"并勾选"立即分配所有磁盘空间",那宿主机上就会立刻生成一个接近 100GB 的 .vmdk 文件,如果没勾选,则文件初始只有几 MB,随着虚拟机写入数据慢慢增长,这就导致你在虚拟机里用 df -h 看到的是 100GB,而宿主机上查看物理磁盘占用只有 30GB,不是空间丢了,而是分配策略不同。

常见虚拟磁盘类型:精简置备与厚置备

行业共识认为,虚拟化平台普遍支持两种置备模式,理解它们对排查空间问题很关键:

  • 厚置备(Thick Provision):创建时立即占用完整容量,优点是可预测性能,缺点是物理空间占用大,常见于 VMware vSphere 的"厚置备延迟置零"和"厚置备置零"选项。
  • 精简置备(Thin Provision):按需增长,初始只占很小体积,优点是节省物理空间,缺点是可能因宿主机空间不足导致虚拟机故障。

此外还有自动精简配置(Thin)和稀疏文件(Sparse)等变体,原理类似,所以查看磁盘分配情况时,必须先确认你的虚拟磁盘属于哪种类型。

Linux虚拟机磁盘空间查看命令与实例

Linux 虚拟机是最常见的使用场景,这里推荐一套组合命令,能快速摸清磁盘空间和分配情况。

df -h:查看已挂载分区使用情况

df -h 是查看文件系统空间使用率的首选命令,打开终端输入:

df -h

输出会给出一张表,包括文件系统、容量、已用、可用、挂载点。

/dev/mapper/ubuntu--vg-root  98G  45G  48G  48% /
/dev/sda1                   976M  146M  764M  16% /boot

虚拟机如何查看磁盘空间?磁盘空间分配情况详解

这里"容量"是虚拟磁盘中该分区的最大逻辑空间。如果挂载点 显示已用 45G,那这 45G 是虚拟机系统内真实的文件占用,与宿主机物理占用不一定相同(精简置备下,宿主机可能只占用 30G),你可以用 df -i 查看 inode 使用情况,处理文件数超限导致的"空间满"误报。

lsblk:查看块设备层级和未分区空间

df 只看已经格式化并挂载的分区,若虚拟磁盘本身有剩余空间但没分区,它不会显示,这时用 lsblk:

lsblk

输出示例:

NAME                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                     8:0    0  100G  0 disk
├─sda1                  8:1    0    1G  0 part /boot
└─sda5                  8:5    0   99G  0 part
  └─ubuntu--vg-root   253:0    0   99G  0 lvm  /

重点看 sda 这一行的 SIZE,这是虚拟磁盘的总容量。sda 总容量是 100G,但 sda1 和 sda5 加在一起只有 100G,说明分区满了;如果总容量是 200G,而分区只有 100G,说明虚拟磁盘已经扩容但系统还没利用,搭配 lsblk -f 还能看到文件系统类型和 UUID。

fdisk和parted:查看分区表细节

需要精确了解分区起始位置、扇区数时,用:

sudo fdisk -l

或者对 MBR 和 GPT 都支持更好的:

sudo parted /dev/sda print

fdisk -l 会显示磁盘总扇区数和分区表类型,如果你之前扩容过虚拟磁盘,这里就能看到末尾有未分配空间,此时需要执行 parted 或 growpart 扩展分区,再配合 resize2fs 调整文件系统。注意操作分区表前务必备份数据。

Windows虚拟机磁盘空间和分配情况怎么查?

Windows 虚拟机相对直观,但同样存在"系统分区"和"虚拟磁盘文件"两个概念。

图形界面:磁盘管理

在 Windows 虚拟机里,按下 Win+X,选择"磁盘管理",这里能看到每个磁盘的容量、分区的文件系统、可用空间,磁盘 0"显示 127.00GB,"C 盘"显示 127GB,80GB 已用,47GB 可用,这个"已用"是系统内文件占用。

若虚拟机配置了多个虚拟磁盘,磁盘管理会显示为"磁盘 1""磁盘 2"等,每个磁盘的容量就是宿主机分配给它的上限。 虚拟磁盘的实际物理占用同样需要到宿主机平台查看。

命令工具:WMIC 和 PowerShell

对于习惯命令行的用户,打开 CMD 或 PowerShell:

虚拟机如何查看磁盘空间?磁盘空间分配情况详解

wmic diskdrive get size,model,name

显示物理磁盘大小,但注意,在虚拟化环境中,diskdrive 对应的是虚拟硬盘控制器,大小即虚拟磁盘容量,想查看每个分区的剩余空间,用:

Get-Partition

或

Get-Volume

Get-Volume 输出更友好,包含 DriveLetter、FileSystemLabel、Size、SizeRemaining。

DriveLetter FileSystemLabel Size         SizeRemaining
C           Windows         100GB        28.5GB

这里 Size 是分区逻辑容量,不是虚拟磁盘总量,要查总容量,运行 Get-Disk:

Get-Disk | Select Number,FriendlyName,Size

从宿主机视角确认虚拟磁盘实际分配情况

系统内的命令只能看到"逻辑空间",要弄清宿主机到底占用多少物理磁盘,必须回到虚拟化平台。

VMware ESXi / Workstation 中的操作路径

在 VMware vSphere Client 中,选中虚拟机,进入"编辑设置",展开"硬盘"项,这里能看到容量(虚拟磁盘大小)和"类型"列,显示"精简置备"或"厚置备",如果要看实际物理占用,进入存储视图,找到对应的 .vmdk 文件,ESXi 的"数据存储浏览器"会显示文件大小,例如显示"12.3 GB",但磁盘配置为 100GB,说明只用了 12.3GB。

在 VMware Workstation 中,右键虚拟机 →"设置" →"硬盘",可以看到"立即分配所有磁盘空间"是否打勾,另外在宿主机文件管理器中,直接查看虚拟机的 .vmdk 文件属性。如果虚拟机启用了快照,会有多个 delta 磁盘文件,总占用为所有相关文件之和。

Hyper-V 和 KVM 操作路径

Hyper-V 管理器中,虚拟机设置 →"硬盘驱动器" →"虚拟硬盘"部分,可以点击"编辑"查看虚拟磁盘类型(固定大小或动态扩展)以及当前大小,固定大小的 VHDX 文件创建时即为完整容量,动态扩展的 VHDX 文件属性中"磁盘大小"是配置上限,"当前大小"是宿主机实际占用。

KVM 环境使用 virsh 命令或者 virt-manager,查看虚拟机存储配置:

virsh vol-list --pool default
virsh vol-info --pool default /var/lib/libvirt/images/xxx.qcow2

qcow2 文件本身是稀疏文件,宿主机用 du -h 查看实际占用:

du -h /var/lib/libvirt/images/xxx.qcow2

这个数值才是物理磁盘上真正被占用的空间。

常见问题:为什么df看到的容量和购买的不一样?

虚拟机如何查看磁盘空间?磁盘空间分配情况详解

分区未扩展

这是最常见的情况,比如你给虚拟磁盘从 50GB 扩容到 100GB,重启系统后 df -h 依然显示 50GB,原因在于虚拟磁盘设备容量变了,但分区表和文件系统还没有延伸去使用新增空间,Linux 下用 growpart 扩展分区,再 resize2fs 扩展文件系统;Windows 则在"磁盘管理"中找到未分配空间,右键 C 盘选择"扩展卷"。

文件系统元数据与快照差异

Linux 的 df 统计的是文件系统块的使用率,不包括元数据(如 inode),但会算入 root 预留块(通常是 5%),100GB 的根分区,即便完全写满数据,df -h 也可能显示已用 95%,可用 5%,这是正常现象,不是虚报,虚拟机快照会导致虚拟磁盘文件膨胀,但在客户机内部看磁盘使用率不变,只有在宿主机上查看 .vmdk 或 .qcow2 大小才能发现空间被快照吃掉了。

Q&A环节:虚拟机磁盘空间查看常见疑问

虚拟机磁盘空间查看有哪些常用命令?

Linux 下首推 df -h 看已挂载分区,lsblk 看块设备全貌,fdisk -l 看分区表,Windows 下用"磁盘管理"图形工具或 Get-Partition PowerShell 命令,无论哪个系统,都需要结合宿主机平台查看虚拟磁盘置备类型和实际占用,才能得到完整的分配情况。

精简置备和厚置备对空间查看有什么影响?

精简置备的虚拟磁盘在客户机里看到的容量是最大值,宿主机上实际文件大小往往远小于这个值,厚置备则会立刻占满全部容量,宿主机的文件大小等于虚拟磁盘容量,因此查宿主机物理剩余空间时,不能只看虚拟磁盘配置,要区分置备类型,若宿主机剩余空间低于某个阈值,精简置备的虚拟机可能会因磁盘增长失败而停机。

虚拟磁盘扩容后依然显示空间不足是怎么回事?

这是分区未扩展,扩容动作发生在虚拟层(如 VMware 的"编辑设置"),对客户机操作系统而言只是"发现"了一个更大的硬盘,但分区表和文件系统尚未适配,执行分区扩展和文件系统调整后,df -h 才会显示新容量,操作前建议先拍快照,并确认文件系统类型(xfs、ext4、NTFS),因为不同文件系统扩容命令略有差异。

虚拟机磁盘空间的查看从来不是单靠一条命令就能覆盖的,系统内部的工具负责揭晓"逻辑使用率",宿主机平台则告诉你"物理占用真相",两者结合,才能对整个分配情况做到心里有数,遇到空间异常时,优先检查置备类型、快照残留和分区扩展三个环节,多数问题都能快速定位。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱