51CTO技术论坛 » Windows » 如何有效的压缩虚拟磁盘        上一帖     下一帖    查看完整版本

页: [1]

特爱蚂蚁2008-7-7 09:11
如何有效的压缩虚拟磁盘

在使用虚拟机时,可能虚拟硬盘文件占用了宿主机上的大量硬盘空间让你很头痛吧,那么如何有效的减少虚拟硬盘文件所占用的硬盘空间呢? !s8d&B*R1k#L
你可以采用以下两个方法:
0vgy^!U
vQ A/@*tCn/?W 压缩虚拟硬盘。微软已经考虑到了虚拟硬盘文件会占用大量的硬盘空间,因此在VPC和VS中均附带了虚拟硬盘压缩功能,[color=#ff0000][b]支持对动态扩展类型的虚拟硬盘进行压缩[/b][/color],从而减少虚拟硬盘文件所占用的硬盘空间。 -yO*h0fq&B
FxO-G8O'T%r
针对虚拟硬盘文件启用NTFS压缩功能。这可以显著的降低虚拟硬盘文件所占用的硬盘空间,但是带来的后果是降低了宿主机的磁盘读写性能,从而导致虚拟机的性能降低,建议只有在特别需要时才使用此功能。 t'Q}6a`1Gg
这两个方法是相互独立的,你可以同时使用这两个方法。启用NTFS压缩非常简单,但是会降低性能,因此我不推荐你使用这种方式。在这篇文章中,我将为大家介绍一下如何有效的压缩虚拟磁盘。
w7{p t W:t 首先介绍一下VPC和VS中虚拟硬盘压缩的原理。虚拟硬盘压缩只支持对动态扩展类型的虚拟硬盘进行压缩,不支持压缩其他类型的虚拟硬盘。当使用动态扩展类型的虚拟硬盘时,VPC和VS会根据虚拟机的需求动态扩展宿主机上虚拟硬盘文件所占用的硬盘空间;但是当虚拟机中删除文件后,虽然虚拟机中不再使用被删除的文件所占用的那部分磁盘空间,但是VPC和VS并不会相应的减少宿主机上虚拟硬盘所占用的硬盘空间,你必须通过压缩虚拟硬盘,才能根据虚拟机所使用的磁盘空间大小来减少宿主机上虚拟硬盘所占用的硬盘空间大小。回想一下虚拟机中不同虚拟硬盘类型的特性(参考[url=http://www.winsvr.org/info/info.php?sessid=&infoid=25&page=8]Virtual PC 使用指南一文中的创建虚拟硬盘一节[/url]),你就可以明白为什么只有动态扩展类型的虚拟硬盘才支持压缩。 0|z)O B\$U,d*M
那么,VPC和VS如何判断虚拟硬盘文件中的哪部分数据是虚拟机所使用的,而哪部分数据是虚拟机未使用的呢?关于这个压缩机制,微软只是在官方文档中简单的提及当执行磁盘压缩时,将移除所有只是包含数据“0”的扇区。不过由于在删除文件时,Windows系统并没有把被删除的文件所占用的硬盘扇区进行清零处理,而是简单的把这些硬盘扇区标注为可以使用,因此微软在VPC 2004 SP1和VS中均提供了一个Precompactor工具,它可以把未使用的扇区进行清零处理(用数据“0”覆写整个扇区),从而便于进行磁盘压缩。
'O VP6I*y^q 从上面的磁盘压缩原理可以看出,[color=#ff0000][b]它只能从宿主机上的虚拟硬盘文件中清除虚拟机未使用的磁盘空间[/b][/color],并不能对虚拟机所使用的磁盘空间进行压缩操作,因此对于磁盘压缩而言,[color=#ff0000][b]最好的效果就是压缩后的虚拟硬盘文件大小非常接近于虚拟机中所使用的磁盘空间大小[/b][/color]。
{'a;Z'D/B1~Iu,A 因此,在压缩虚拟硬盘文件之前,我们必须先在虚拟机中进行预压缩处理,[color=#ff0000][b]以Undo磁盘禁用模式启动虚拟机[/b][/color],然后进行以下三个操作步骤: .|"LG@w o2\V
1、在虚拟机中删除临时文件和不必要的文件,具体的操作步骤如下: S p%qd]

+|-PR9c4O+VIZ3k 首先,对Windows组件进行处理,删除不需要的组件;你也可以删除Windows目录下不需要的文件,不过我不建议这样做,如果需要建议只是删除*.log文件;
Y O8z/a&tC%e GJ-w2] b*[c:^9r
然后,删除不需要的其他应用程序; +JPp7i4s SDn
([$k#tL*?
禁用虚拟内存(可能需要重启虚拟机);
8L3w|h#x{ 3`}Kb8hG0I
最后,删除临时文件并清空回收站。默认情况下,Windows系统的临时文件主要存放在以下几个目录: *U1\+I)p8cVpP;DA

h]:x!R?} %systemroot%\temp,默认为c:\windows\temp,存放Windows系统的临时文件 w"Kx0AG:G!_
o["o'{-V3p&\%j
%userprofile%\%username%\Local Settings\temp,默认为C:\Documents and Settings\%username%\Local Settings\Temp,存放用户的临时文件,如果有多个用户,则分别进行删除; `m4U#t,|2i3\3y

:QtVVGk %userprofile%\%username%\Local Settings\Temporary Internet Files,默认为C:\Documents and Settings\%username%\Local Settings\Temporary Internet Files,存放用户的Internet临时文件,如果有多个用户,则分别进行删除; :t"L,N6G t1vnY \ D"_
2、在虚拟机中进行磁盘碎片整理。磁盘碎片整理可以极大的提高VPC和VS在进行磁盘压缩时识别未使用的磁盘空间的能力,对于Windows 2000之后的Windows系统而言,使用自带的[b]磁盘碎片整理程序[/b]即可,不过经过我的多次对比测试,使用Executive Diskeeper来进行磁盘碎片整理具有最好的效果(Windows 2000及其后系统中所提供的[b]磁盘碎片整理程序[/b]就是Diskeeper的简化版本),大家可以[url=http://www.diskeeper.com/downloads/downloads-r.asp?RId=1&SId=&CId=1&Aeid=0&Apid=0]点击此链接[/url]下载Diskeeper的试用版本。
TJq htu 3、在虚拟机中运行Precompactor工具对未使用的扇区进行清零处理。Precompactor工具通过一个光盘镜像的方式提供,当挂接到虚拟机中时,可以利用Windows的光盘自动播放功能运行。具体的操作方式VPC和VS略有不同:
*h"_ J6H$wI,I VPC: aUIX(Pp5J
当虚拟机运行后,点击[b]CD[/b]菜单下的[b]捕获ISO镜像[/b], 3QmW&?*~
[img]http://www.winsvr.org/pic/vs_compressdisk/vs_compressdisk01.jpg[/img] *V5@ fK w W W
然后在弹出的[b]选择捕获的CD镜像[/b]对话框中,选择VPC安装目录(默认为C:\Program Files\Microsoft Virtual PC)的Virtual Machine Additions子目录下的[b]Virtual Disk Precompactor.iso[/b]文件,然后点击[b]打开[/b],
g}7\YQ:L] [img]http://www.winsvr.org/pic/vs_compressdisk/vs_compressdisk02.jpg[/img]
0K-R1b NC||*zt5J 此时,此ISO镜像挂接到虚拟机中,由于光驱的自动播放特性自动运行,你只需要在弹出的提示框上点击[b]是[/b]即可,此时Precompactor工具开始工作;如果没有自动播放,则浏览到相应的光驱根目录运行[b]precompact.exe[/b]即可。 o.Jim&Q
[img]http://www.winsvr.org/pic/vs_compressdisk/vs_compressdisk03.jpg[/img]
W:~ `T&Tu   8\BG/E W
VS: x)]hs'j)z
当虚拟机运行时,在VS Web管理控制工具中配置此虚拟机的选项,然后选择[b]CD/DVD[/b],然后在[b]CD/DVD驱动器属性[/b]页,选择[b]已知的镜像文件[/b]中的VS安装目录(默认为C:\Program Files\Microsoft Virtual Server)下的[b]Virtual Machine Additions\Precompact.iso[/b]即可,如下图所示,运行方式和VPC一致。 j;^f7?1SJGw#C
[img]http://www.winsvr.org/pic/vs_compressdisk/vs_compressdisk04.jpg[/img]
C!jP](o@D%Dx 当Precompactor工具执行完成后,在虚拟机中点击[b]开始[/b]菜单,按照正常步骤关闭Windows系统。
:P l WONZ-`My ZWq!['k;I&C
此时,我们即可对虚拟磁盘进行压缩,压缩过程中需要保证具有足够的临时硬盘空间(大约为两倍虚拟硬盘文件的大小),否则可能会因为临时空间不足导致压缩失败。 Z \.yh&gEb w
VPC和VS中执行磁盘压缩的方式略有不同:
T:^6P0x"H+rd X w VPC:
Esv-ku4Zp0^ sA 在VPC管理控制台中点击[b]文件[/b]菜单下的[b]虚拟磁盘向导[/b],
;hB:Fn {)q [img]http://www.winsvr.org/pic/vs_compressdisk/vs_compressdisk05.jpg[/img] xqK8U:r'z
然后在弹出的[b]欢迎试用虚拟磁盘向导[/b]页,点击[b]下一步[/b]; 'g8a V@[9No6^T
在[b]磁盘选项[/b]页,选择[b]编辑一个现有磁盘[/b],点击[b]下一步[/b];
juC!Z4fKht,I [img]http://www.winsvr.org/pic/vs_compressdisk/vs_compressdisk06.jpg[/img]
|*Ee6c+vFh.V 在[b]需要编辑的虚拟磁盘[/b]页,选择你需要编辑的动态扩展磁盘,点击[b]下一步[/b];
Sb4wff$j [img]http://www.winsvr.org/pic/vs_compressdisk/vs_compressdisk07.jpg[/img]
T7ZH6ITWOw2^ 在[b]虚拟磁盘信息和选项[/b]页,选择[b]压缩它[/b],点击[b]下一步[/b]; N(Xt(N-f7B
[img]http://www.winsvr.org/pic/vs_compressdisk/vs_compressdisk08.jpg[/img]
o`MJh9B7f%A*N 在[b]虚拟硬盘压缩[/b]页,你可以选择将压缩后的虚拟硬盘[b]替换现有硬盘[/b]或[b]新建一个虚拟硬盘[/b],选择后点击[b]下一步[/b];
Xk&s0_&{1u F$k [img]http://www.winsvr.org/pic/vs_compressdisk/vs_compressdisk09.jpg[/img] &p R f*z:}-FD*g"n
最后在[b]正在完成虚拟磁盘向导[/b]页点击[b]完成[/b],此时即开始进行虚拟硬盘的压缩。
i)R`2S r|-O#]4fk@w VS:
@$z Y}8S+| 在VS Web管理控制工具点击[b]虚拟磁盘[/b]下的[b]检查[/b]链接, B-@%?u1S;D
[img]http://www.winsvr.org/pic/vs_compressdisk/vs_compressdisk10.jpg[/img]
:u-k H6U-?B 然后在右边的[b]检查虚拟硬盘[/b]页,选择需要进行压缩的动态扩展磁盘,点击[b]检查[/b]按钮;
t%W p5Ll4V [img]http://www.winsvr.org/pic/vs_compressdisk/vs_compressdisk11.jpg[/img] 0m*IC_:{
然后在[b]虚拟硬盘属性[/b]页,选择[b]压缩虚拟硬盘[/b],
HhFU/qOQ} [img]http://www.winsvr.org/pic/vs_compressdisk/vs_compressdisk12.jpg[/img] %Z2Kaz%l8a w)V
最后在[b]压缩虚拟硬盘[/b]页,点击[b]压缩[/b]按钮;
_0|U{5P8Uy [img]http://www.winsvr.org/pic/vs_compressdisk/vs_compressdisk13.jpg[/img]
-P_r/?+@G ^0nym9K wq 此时VS即开始压缩虚拟硬盘,根据虚拟硬盘的大小和宿主机的性能等待一段时间后完成。
j]k(MJ 如下图所示,我对虚拟硬盘进行压缩后,它所占用的宿主机上的磁盘空间只是比虚拟机中所使用的磁盘空间多了45M左右:
t!@Al]u U0R0o [img]http://www.winsvr.org/pic/vs_compressdisk/vs_compressdisk15.jpg[/img]
;A'L/mH+lF7mz [img]http://www.winsvr.org/pic/vs_compressdisk/vs_compressdisk14.jpg[/img]



相关文章:
VISTA 文件夹问题
viista系统问题
如何做到 每个帐户只能同时登陆一台客户机
清除本地连接数据包
用Windows Server 2003搭建安全文件服务器

查看完整版本: 如何有效的压缩虚拟磁盘


Powered by 51CTO.COM