为什么我的虚拟磁盘文件比实际的FS大2倍以上?

我在VMware Player虚拟机中安装了一台虚拟机,配有一个小型的Debian 7服务器。 该光盘的最大大小为55 GB,虚拟机属性显示当前大小为46.5 GB。

没有其他的光盘/卷被安装在设备上,debian告诉我光盘只用于16 GB,实际的vm光盘文件怎么能几乎是3倍的大小?!

root@websrv:~# df -hT Filesystem Type Size Used Avail Use% Mounted on ... /dev/disk/by-uuid/ac9f2318-3e32-4b50-9178-20e5362013b0 ext4 48G 16G 30G 36% / ... 

PS:虚拟机没有快照,只有2个networking设备,没有其他configuration,只是一个普通的小型networking服务器系统。

你曾经使用的虚拟磁盘上的任何块都将计入你的VHD大小,删除文件系统中的文件不会释放VHD中的块。 虚拟磁盘文件没有“TRIM”等效机制。

第一个原因是您的虚拟机的磁盘可能被configuration为“固定大小”或“厚实”,即在格式化之前分配全部磁盘空间的variables。 第二个变种(更可能)是因为在ext4文件系统中格式化磁盘在整个磁盘上创buildFS结构,这导致VMware Player为虚拟磁盘文件分配整个空间。 分配整个大小的最可能的原因是在ext4中的超级块位置,这个文件系统在整个磁盘上高度分散的几个地方复制它的超级块,而VMware Player可能不能支持稀疏的VHD,因此将分配磁盘上整个VHD的大小。

关于为什么大小是48G和VHD大小是55G – 在ext4文件系统中有一些数据结构占用了原始磁盘空间,当您查看df输出时可以有效地减less这些数据结构。 要从客户操作系统中确定磁盘设备的实际大小,请使用此问题的解决scheme cat /proc/partitionsblockdev --getsize64 (device)