
[Mr.洛 白](https://blog.csdn.net/BG1230521 “Mr.洛 白”) 
于 2023-10-26 10:29:49 发布
在使用[VMware虚拟机](https://so.csdn.net/so/search?q=VMware%E8%99%9A%E6%8B%9F%E6%9C%BA&spm=1001.2101.3001.7020)时,你可能会遇到磁盘空间不断增大的问题。这是由于虚拟机在使用过程中生成了大量的临时文件和碎片空间。为了解决这个问题,我们可以进行磁盘清理操作,释放不必要的空间。本文将介绍如何通过清理磁盘来解决这个问题。
### 清理磁盘必需条件
在进行磁盘清理之前,请确保满足以下条件:
* 待优化的虚拟机必须能正常启动。
* 待优化的虚拟机没有快照。如果存在快照,请先将其全部删除。
* 已在虚拟机中正常安装了VMware Tools。
* 待优化的虚拟机磁盘采用的是分割磁盘为多个文件的方式,并且未预分配磁盘空间。
### 查看大文件
首先,我们可以使用命令行工具 `baobab`(CentOS自带的磁盘分析工具)来查看虚拟机中的大文件。如果你的系统没有安装这个工具,可以先进行安装。使用 `baobab` 可以帮助你找到占用大量磁盘空间的文件。
### 填充磁盘空间(也可以不做)
接下来,我们可以使用一个二进制0的文件来填充所有磁盘空间,并通过删除该文件来释放空间。按照以下步骤进行操作:
1. 执行命令 `sudo apt-get clean` 清除残留的安装包(此步骤可选)。
2. 执行命令 `sudo dd if=/dev/zero of=/0bits bs=20M`,将碎片空间填充为0。在执行过程中,可能会提示磁盘空间不足,但可以忽略该提示。
3. 执行命令 `sudo rm -rf /0bits`,删除第二步中填充的文件。使用命令 `df -h` 可以发现可用的虚拟空间增加了很多,但实际的磁盘空间并没有减少。
### 收缩根目录->平台特定清理命令
最关键的一步是在虚拟机中收缩根目录。
不同的虚拟机平台可能需要使用特定的命令进行磁盘清理。以下是各平台的清理命令示例:
* 对于[Linux虚拟机](https://so.csdn.net/so/search?q=Linux%E8%99%9A%E6%8B%9F%E6%9C%BA&spm=1001.2101.3001.7020):`sudo /usr/bin/vmware-toolbox-cmd disk shrink /`
“`
`sudo vmware-toolbox-cmd disk list # 查看磁盘挂载列表
sudo vmware-toolbox-cmd disk shrink / # 清理挂载列表上的磁盘`
* 1
* 2
“`
* Windows虚拟机:
在Windows虚拟机中,使用 `VMwareToolboxCmd.exe` 命令进行磁盘清理。打开PowerShell终端,执行以下命令:
“`
`VMwareToolboxCmd.exe disk list # 查看磁盘挂载列表
VMwareToolboxCmd.exe disk shrink C:\ # 清理挂载列表上的磁盘`
* 1
* 2
“`
* 对于MacOS虚拟机:
在Mac中,使用 `vmware-tools-cli` 命令进行磁盘清理(安装目录为`/Library/Application Support/VMware Tools`)。在终端中执行以下命令:
“`
`vmware-tools-cli disk list # 查看磁盘挂载列表
vmware-tools-cli disk shrink / # 清理挂载列表上的磁盘`
* 1
* 2
“`
另外,你也可以在主机操作系统中使用以下命令进行磁盘收缩释放(仅限于关闭的虚拟机):
* 在Windows命令行中执行 `vmware-vdiskmanager.exe` 命令。首先关闭虚拟机,然后打开命令行,进入你的VMware安装文件夹(例如:C:\\Program Files (x86)\\VMware\\VMware Workstation),执行以下命令:
“`
`vmware-vdiskmanager.exe -k “虚拟机磁盘路径”
# 例子:
vmware-vdiskmanager.exe -k “D:\Virtual_Machines\Ubuntu_x64\Ubuntu 64.vmdk”
#输出结果
#Shrink:100%done.
#Shrink completed successfully`
* 1
* 2
* 3
* 4
* 5
* 6
“`
注意:如果路径中包含空格,请使用双引号将路径引起来。命令执行过程可能会较长,请耐心等待。
请注意,以上命令必须在虚拟机内部登录运行,而不能通过SSH等第三方工具运行。因为运行完上述命令后,VMware会将当前的虚拟机冻结,导致SSH连接断开。因此,建议直接在虚拟机中运行命令,以便VMware程序继续执行磁盘整理操作。
通过以上步骤,你可以释放VMware虚拟机的磁盘空间,解决空间占用不断增大的问题。记得在操作前备份重要数据,以免发生意外情况。希望本文对你有所帮助!
本文转载借鉴文章:
https://blog.csdn.net/cyriltaylor/article/details/89527959
https://blog.csdn.net/Doctor_Warren/article/details/81286991