我在 ESX 6 上有一个精简配置的 Ubuntu 18 VM,其中有一个虚拟磁盘,它使用了几乎所有的底层物理磁盘(我订购了一个新的 4TB 磁盘,很快就会移动到该磁盘上)。VM 文件系统是 LVM 上的 ext4。
因此,如果我删除了虚拟机内的一个或多个大文件,Ubuntu/ESX 是否会先重新使用现在可用的空间,然后再扩展虚拟磁盘?我是否必须执行诸如将可用空间归零之类的操作,还是所有这些都在 ext4、LVM 或 ESX 级别处理?
更简单地说,我可以通过暂时删除一些垃圾直到替换磁盘到达来解决吗?
(我知道我可以使用 vmkfstools 或类似操作手动执行此操作,但我更好奇——这是我的家庭实验室)。
答案1
您的客户操作系统不知道或不关心磁盘是否是虚拟的和精简配置的。它将根据文件系统选择的文件布局方式删除和写入磁盘上的文件,而您实际上对此没有太多控制权。
此外,ESXi 对虚拟磁盘中的文件一无所知。对于 ESXi 来说,它只是一个不透明的数据块。
但是由于虚拟磁盘是精简配置的,因此组成虚拟磁盘的文件可能会缩小。客户操作系统有一种方法可以告诉主机它已删除部分磁盘的数据并且可以释放该空间。方法是使用丢弃挂载文件系统,事实上,这与操作系统告诉 SSD 它已删除数据的方式相同。
discard
您应该确保使用 中的挂载选项挂载了文件系统/etc/fstab
,并且已设置了/etc/lvm/lvm.conf
设置issue_discards = 1
。然后,当您删除数据时,Linux 将发送 TRIM/UNMAP 命令,ESXi 将知道这些虚拟磁盘扇区不再使用。