调整Virtual Box硬盘大小

我在Mac下使用Virtual Box安装Win7的虚拟机。因为之前装过Win7的32位版。现在因为机器内存升到8G,就可以划出4G来支持Win7虚拟机。所以就重新安装了Win7的64位版。在创建虚拟机的硬盘时,我选择了Virtual Box的默认容量20G。我看到Virtual Box告知的是这个硬盘容量是可以动态调整的,谁知道这其实是一个误导。这里所谓的动态调整并不能超过设置的值,即我设置的20G是存储分配的上限。所谓动态分配其实是一种节约磁盘空间的做法。意思是当我们在创建虚拟机的硬盘时,可以设置足够大。只要这个硬盘没有用完,这些空间是可以被主机所共享的。而Win7的64位版所占用的硬盘空间又远远超过了32位版。在安装了操作系统后,剩下的空间就不多了。在安装了SQL Server 2008后,再想完整安装Visual Studio 2010,空间就不够了。我之前认为硬盘容量可以动态调整,所以在Visual Studio提示空间容量不够时,我仍然选择“继续”,结果安装错误。

那么,该怎么解决这一问题呢?重新安装吗?那就实在太悲催了。虽然现在并没有安装什么软件,但安装操作系统和数据库就挺耗时的。于是,我试着调整Virtual Box的硬盘大小。可是在Virtual Box的管理工具中,并没有找到修改硬盘大小的选项。通过Google,我找到了通过命令行修改磁盘空间的办法,前提是Virtual Box的版本必须是4.0及以上。

这个命令:

VBoxManage modifyhd uuid –resize 40960

这里的40960就是你要调整的容量,即40G。命令中的uuid也可以用vid文件名代替。不过我的文件名不幸包含了空格。或许通过双引号或"/“可以支持空格的文件名,但我没有尝试,因为使用uuid是更好的做法。至于命令行的输入,在Mac下,直接在Terminal下输入即可。因为安装了Virtual Box时,会将VBoxManage添加到路径中,Terminal是可以识别该命令的。

要使用uuid,则需要获得当前虚拟机的uuid。在管理工具中无法获得,因此,我们应通过命令行获得:

VBoxManage list hdds

该命令会显示所有的虚拟硬盘。你可以通过Location来判断你要调整的硬盘。获得uuid,就可以通过modifyhd调整硬盘大小了。注意,在调整硬盘之前,一定要先关闭该虚拟机。

补记:当我通过modifyhd命令调整了磁盘空间后,通过管理工具查看vid文件,容量确实发生了变化,达到了预期的结果。于是我认为可以高枕无忧了。哪知道在Virtual Box下打开该虚拟机后,看到C盘的空间仍然是20G。这让我不禁郁闷不已。于是我想,可能在Virtual Box中还有什么设置。可是看了所有Virtual Box的管理菜单,都没有能够找到。我甚至在Storage中,移除对vid文件的引用,并重新加载,仍然没有变化。我又尝试着重新启动Virtual Box,甚至重新启动计算机,还是如此。究竟问题出在哪儿呢?正在百思不得其解,甚至打算删除该虚拟机,重新安装。可是想到还要去安装操作系统,以及相关软件,就不寒而栗。于是打算退而求其次,在Virtual Box中为其增加一块磁盘。结果,增加之后,启动虚拟机,发现并没有在计算机中增加新的磁盘。突然灵机一动,想到是否是计算机管理中的磁盘分区管理的问题呢。于是,打开Win7"计算机管理”中的“磁盘管理”,发现新增加的磁盘显示为未分配,而原来的磁盘容量赫然为40G,其中却有20G未曾分配。于是选择扩展磁盘,失踪的20G磁盘果然被找了回来。Virtual Box的硬盘大小调整终于取得成功。

因此,通过Virtual Box命令对磁盘进行调整后,一定要记得在Win7操作系统中扩展磁盘。这就好似你为你的计算机新添加了一块磁盘一样,需要进行同样的操作。

posted @ 2011-11-15 12:12 张逸 阅读(2249) 评论(6) 编辑 收藏

 回复 引用 查看   
#1楼 2011-11-15 12:29 sunriseyuen      
是你理解错误吧,没有说动态调整,是动态分配.
 回复 引用 查看   
#2楼 2011-11-15 13:22 例子      
我父亲培养了我寄望不雅察的习惯。一天,我在玩马车玩具。在马车的车斗里有一个小球。当我拉动马车的时辰,我重视到了小球的活动编制。我找到父亲,说,“爸,当我拉动马车的时辰,小球往后走;而我把它停住的时辰,小球往前滚。这是为甚么?”“因为活动的物质老是趋于保持活动。静止的东西老是趋于保持静止,除非你去推它。这类趋势就是惯性。可是,还没有人知道为甚么是如许。”你瞧,这是很深切的理解,他其实不只是给我一个名词。他接着说,“若是从边上看,小车的后板擦着小球,摩擦开端的时辰,小球相对地面来讲其实还是往前挪了一点,而不是向后走。”我跑归去把球又放在车上,从边上不雅察。 公然,父亲没错。我父亲就是如许教育我的。他用很多如许的实例来进行乐趣盎然的会商,没有任何压力。它在平生中一向鼓励我,使我对所有的科学范畴沉迷,我只是可巧在物理学中建树多一些罢了。
 回复 引用 查看   
#3楼[楼主] 2011-11-15 13:33 张逸      
@sunriseyuen
让我们看看Virtual Box的提示怎么写的。选项是这样的:
Dynamically expanding storage。
这给我的错觉是它是可以自动扩展的。
UI的上方是对这个选项的说明。坦白说,每次创建Disk时,我其实并没有仔细看。为了回答你的疑问,我特地看了看,信息如下:
A dynamically expanding storage initially occupies a very amount of space on your physical hard disk. It will grow dynamically(up to the size specified) as the Guest OS claim disk space.

关键还是括号中的内容(up to the size specified)。只有这里才说明了这里所谓的dynamically expanding是有限制的,就是你指定的容量为最大容量。

我在文章中并非是说Virtual Box有什么问题。事实上是自己没有看清楚。但不可否认的是,有很多人都产生了误解。可以在Google上搜到。或许是英文对于我们而言,太不醒目了。不过,我觉得这种关键信息,最好还是highlight的比较好。

 回复 引用 查看   
#4楼 2011-11-15 14:49 sunriseyuen      
哈哈,我没有看详细解说,我只看
[storeage details]
Dynamically allocated
fixed size

似乎没有看到Dynamically expanding storage,难道是旧版本?一直以来都是知道虚拟硬盘动态分配的都是有固定大小的,只是用到多少分配多少.并不是随意变更硬盘的大小.

 回复 引用 查看   
#5楼 2011-11-15 19:20 银河      
羡慕楼主的 8G 内存。 :)
学习了,在虚拟机中扩展硬盘大小还是很有用的。
还好我对 Virtual Box 的 Dynamically expanding storage 的理解一开始就是正确的。 :)

 回复 引用 查看   
#6楼[楼主] 2011-11-15 23:10 张逸      
看来大家都比我厉害,哈哈。我确实没有仔细去想。不过这样也好,以后还可以改变硬盘大小。