为什么我的 VM 磁盘文件比实际 FS 大 2 倍多?

pei*_*ker 5 ext4 virtual-disk vmware-player

我在 VMware Player VM 中有一个带有小型 Debian 7 服务器的 VM。磁盘的最大大小为 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% /
...
Run Code Online (Sandbox Code Playgroud)

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

noi*_*cky 8

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

  • 实际上,TRIM *确实*在某些情况下有效。我经常在我的 KVM 来宾上使用 fstrim 来控制他们的 VirtIO 磁盘映像的大小。 (5认同)

Ves*_*per 7

第一个原因是您的 VM 磁盘可能已配置为“固定大小”或“厚配置”,即在格式化之前分配全部磁盘空间的变体。第二种变体(更有可能)是因为在 ext4 文件系统中格式化磁盘会在整个磁盘上创建 FS 结构,这会导致 VMware Player 为 vdisk 文件分配整个空间。分配整个大小的最可能原因是 ext4 中的超级块位置,该文​​件系统在整个磁盘的多个高度间隔的位置复制其超级块,VMware Player 可能无法支持稀疏 VHD,因此将分配磁盘上 VHD 的整个大小。

关于为什么大小是 48G 而 VHD 大小是 55G - ext4 文件系统中有某些数据结构会占用原始磁盘空间,当您查看df输出时,这些数据结构会有效减少。若要从来宾操作系统内确定磁盘设备的实际大小,请使用解决方案,从这个问题,无论是cat /proc/partitionsblockdev --getsize64 (device)