我绝不是 VMware 专家,所以请您宽容一点,但我正在开发一种可通过下载 VMware VM 轻松获得的产品,而且我关心的是我提供的 VM 的磁盘大小,而不是最终用户使用一段时间后最终需要的磁盘大小。
最终用户当前拥有的唯一终端访问权限会在他们登录时自动运行脚本并允许他们分配 IP 详细信息以将 VM 连接到他们的网络;所有其他配置都是通过基于 Web 的界面执行的。
VM 基于 Ubuntu,我配置了 LVM。假设提供的 VM 包含一个 5Gb 驱动器(使下载本身尽可能小),并且最终用户知道他们将在某个时候根据他们使用产品的方式增加磁盘空间。我正在考虑允许他们这样做的最佳方式...
我的想法是,如果我更新他们的登录脚本,允许他们指向新挂载的驱动器(在他们的 VM 环境中的某个地方),那么我将使用各种 Ubuntu LVM 命令将磁盘空间添加到现有的 LVM,这样产品就可以继续运行,每个人都会很高兴。
我还将把该产品作为 VirtualBox VM 提供,但据我所知,对于产品本身来说,它并不关心它在什么样的虚拟化环境中运行 - 至少,Ubuntu 的 LVM 不会......
那么,我解决这个问题的方法正确吗?
答案1
某些文件系统允许实时调整大小,特别是当您只想扩大分区的大小时。
您可以添加所有现有分区的大小,如果它明显较小,则执行调整大小命令。
您还可以要求用户添加虚拟的第二块硬盘。您可以执行 LVM,也可以只执行挂载点。“/var”文件夹和“/home”文件夹通常是变化最大的文件夹。如果您将它们映射到第二块硬盘上的不同分区,则您的 VM 中不需要太多可用空间。
如果您有一个将数据存储在其他地方的程序,您通常可以通过更改配置文件或使用硬链接、软链接等来移动文件。
答案2
VM 基于 Ubuntu,我配置了 LVM。假设提供的 VM 包含一个 5Gb 驱动器(使下载本身尽可能小)
您可以使用容量远大于 5 GB 的稀疏虚拟磁盘创建虚拟机。当您准备好分发虚拟机时,您应该使用 VMware Tools 清除可用空间并压缩虚拟磁盘,以便它仅占用实际使用的空间:
vmware-toolbox-cmd disk list
查看文件系统位置列表,然后:
vmware-toolbox-cmd disk shrink LOCATION
对于每个列出的位置。