分类:
2012-11-09 00:22:34
原文地址:虚拟机 磁盘空间调整 作者:EnchanterBlue
以下有一定的风险
Shrinking Virtual Disks
如果你的虚拟磁盘正随着你的数据的增加而变大,你能够通过阅读这一章节所教你的方法来收缩它。如果你在创建虚拟机时预分配了虚拟磁盘,你将不能收缩它。
注:你在收缩你的虚拟磁盘以前,对虚拟磁盘进行磁盘碎片整理,这将能最大限度的发挥收缩磁盘的作用。请看附录中对虚拟磁盘的磁盘碎片整理的说明。
收缩虚拟磁盘收回虚拟磁盘中未使用的空间。如果有空闲空间在虚拟磁盘中,这个收缩过程会减少虚拟磁盘文件对宿主机磁盘的空间占用。
收缩磁盘过程通过转换一个Workstation支持的格式的虚拟磁盘这种方便的方法来实现这个过程。所创建的新格式的虚拟磁盘只能被VMware Workstation 3.0以上版本所识别。
此图为我在收缩磁盘过程中,出现了叫Windows XP Professional.vmdk.dfgshkgr 的文件(此文件在收缩过程中变大,收缩过程后消失。)
限制和要求
收缩需要你的宿主机磁盘上有与你要收缩的虚拟磁盘同样大小的空闲空间。
收缩功能仅仅应用在虚拟磁盘上。你不能收缩物理硬盘或光盘。
如果虚拟机虚拟系统有以下情况,收缩功能将不能使用。
包含一个快照
链接克隆的来源
链接克隆
如果虚拟机虚拟系统中任何一个虚拟磁盘有以下情况,收缩功能将不能使用。
预分配磁盘
没有使用虚拟磁盘独立-持久的模式
非持久模式的遗留磁盘
独立的磁盘引导
注:你可以在开启虚拟机以前改变虚拟磁盘的模式。(当然之前你必须删除所有快照)
收缩过程
收缩磁盘分两步:
第一步,被称为清理,VMware Tools要求收回所有磁盘分区中未使用的部分(诸如删除的文件)并为收缩作好准备。清理工作在客户机操作系统中进行。
第二步,收缩虚拟磁盘,它在宿主机中进行。Workstation通过清理程序回收磁盘空间来减少虚拟磁盘文件的大小。
当虚拟机打开时,你可以通过VMware Tools控制面板收缩虚拟机的虚拟磁盘。如果虚拟磁盘有快照,你就不能收缩虚拟磁盘了。如果这样,可以移除快照,通过选择 虚拟机 〉 快照 〉快照管理 〉删除。
在Linux或FreeBSD客户机操作系统中,在进行收缩虚拟磁盘的准备工作,你需要root用户的权限才能运行VMware Tools。这样,你要确保收缩的是整个虚拟磁盘。否则,如果你不是以root用户来收缩磁盘,你就不能清理(收缩)这个虚拟磁盘了。
收缩虚拟磁盘:
1.运行VMware Tools控制面板
Windows客户机——双击系统托盘中VMware Tools图标,或选择 开始 〉控制面板,然后双击VMware Tools。
Linux或FreeBSD客户机——以root用户身份,然后运行vmware-toolbox.
(Red hat Linux中的VMware Tools是 /usr/lib/vmware-tools/bin/vmware-toolbox-gtk)
2.选择Shrink(收缩)选项卡
3.选择你想要收缩的虚拟磁盘,然后点Prepare to Shrink (准备收缩)
一个对话框将显示清理(准备工作)的进度。
注:如果你没有选择某些分区,这个磁盘仍将收缩。无论怎么样,那些没有被选择收缩的分区将不被收缩,收缩进程将尽可能多地收缩所有被选择的分区减少这个虚拟磁盘的大小。
4.当VMware Tools完成清理所选择收缩的分区后,点Yes。
一个显示收缩进度的对话框将出现(在宿主机中)。收缩磁盘可能要化大量的时间。
5.点击OK完成收缩。
不支持和禁用的分区
在一些配置中,不能收缩虚拟磁盘。如果你的虚拟机用了如此的配置,收缩选项卡将显示为什么你不能收缩虚拟磁盘的解释。
举个例子,你不能收缩虚拟磁盘在以下情况中:
当你在创建磁盘时因为典型和自定义创建虚拟机方法默认预分配磁盘空间,你就预分配了磁盘空间。
虚拟机拥有快照。但可以通过选择 虚拟机 〉 快照 〉快照管理 〉删除,来删除快照。
虚拟机包含在物理磁盘上。
虚拟磁盘在持久模式中不是一个独立的磁盘。
虚拟磁盘被储存在光盘上。
附录
碎片整理
(摘自VM5.5.1_User's Manual.pdf 第215页)
虚拟磁盘的碎片整理
像物理磁盘驱动器一样,虚拟磁盘也会产生磁盘碎片。磁盘碎片整理程序通过重新排序虚拟磁盘上的文件、程序和未使用的空间来使程序运行和文件打开更快。磁盘碎片整理程序不能收回虚拟磁盘中的空闲空间;你可以通过收缩磁盘来回收空闲空间。你能通过以下步骤来达到做好的磁盘碎片整理效果。
1. 在虚拟机中运行磁盘碎片整理程序
2. 关闭虚拟机,通过虚拟机设置〉硬盘〉碎片整理 来对虚拟磁盘进行磁盘碎片整理。
注意:这个功能仅仅是整理虚拟磁盘而不是物理硬盘。
3. 在主机上运行磁盘碎片整理工具。
注意:磁盘碎片整理程序需要一定的主机硬盘空间。举个例子,如果你的虚拟磁盘包含在一个文件中的话,那么你需要相当于这个虚拟磁盘文件大小的空间来运行你的磁盘碎片整理工具。而配制虚拟磁盘不需要空的空间。
(我认为第二步比较重要,第一步和第二步相近)
摘自VM5.5.1_User's Manual.pdf 第215-218页
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
虚拟机在使用过程中,虚拟磁盘的大小会不断变大。即使你删除了磁盘中的文件,虚拟磁盘的大小仍然不会缩小。VMWare在VMWare Tools中推出了Shrink这个功能。在安装VMWare Tools后,在没有Snapshot的情况下,在Guest操作系统为Windows的情况下,能有效缩小虚拟磁盘大小。但如果在Guest操作系统为Linux时,此方法效果就不好了,而且有些挂载点无法Shrink。
VMWare还推出了vmware-vdiskmanager工具,也能Shrink虚拟磁盘。在Guest操作系统为Linux时,单独用此工具没有什么效果。需要先在Guest系统中把未使用的 空间清零,在使用vmware-vdiskmanager,效果比较好。可以通过以下步骤有些缩小虚拟磁盘。
1、cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill
在Shell中运行以上命令,能对未使用空间清零,需要较大的空闲空间(跳过这步也可以,只是压缩效果没有这样好)
2、关闭Guest操作系统,进入VMWare安装目录运行:
vmware-vdiskmanager.exe -k "f:/vmware/Fedora11/Fedora11.vmdk"
就可以有效缩小虚拟磁盘的大小,基本达到你用了多少占用多少的效果。
用此方法分别对Guest系统为Fedora11和OpenSolaris10的VMDK文件进行Shrink,效果明显。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////