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 个网络设备,没有其他配置,只是一个普通的小型网络服务器系统。
您曾经使用过的虚拟磁盘上的任何块都将计入您的 VHD 大小,删除文件系统中的文件不会释放 VHD 中的块。虚拟磁盘文件没有“TRIM”等效机制。
第一个原因是您的 VM 磁盘可能已配置为“固定大小”或“厚配置”,即在格式化之前分配全部磁盘空间的变体。第二种变体(更有可能)是因为在 ext4 文件系统中格式化磁盘会在整个磁盘上创建 FS 结构,这会导致 VMware Player 为 vdisk 文件分配整个空间。分配整个大小的最可能原因是 ext4 中的超级块位置,该文件系统在整个磁盘的多个高度间隔的位置复制其超级块,VMware Player 可能无法支持稀疏 VHD,因此将分配磁盘上 VHD 的整个大小。
关于为什么大小是 48G 而 VHD 大小是 55G - ext4 文件系统中有某些数据结构会占用原始磁盘空间,当您查看df
输出时,这些数据结构会有效减少。若要从来宾操作系统内确定磁盘设备的实际大小,请使用解决方案,从这个问题,无论是cat /proc/partitions
或blockdev --getsize64 (device)
。