从Windows Server 2012 R2 开始,可以在线调整虚拟硬盘的大小了,这意味着当虚拟硬盘不够用时,我们在虚拟机运行的情况下直接扩展虚拟硬盘容量了。有人说这个有什么用?当然,实验室情况下,我们完全可以停机,然后修改其大小,如果在生产环境呢?你能设想一组正在渲染3D图形的虚拟机,硬盘空间突然不够的情形么?

要实现Hyper-V在线调整虚拟硬盘的大小这个功能,至少要符合两个条件:

1、虚拟硬盘的格式一定得是VHDX。

2、这个VHDX虚拟硬盘一定得挂载到SCSI控制器上。

挂载到IDE控制器上的VHDX虚拟硬盘无法在线调整大小:

p_w_picpath

挂载到SCSI控制器上的VHD虚拟硬盘也无法在线调整大小,只能进行压缩:

p_w_picpath

只有挂载在SCSI控制器上的VHDX虚拟硬盘才可以在线调整大小。

p_w_picpath

收缩虚拟硬盘:在什么情况下来收缩虚拟硬盘呢?一种情况是,在物理硬盘空间不够时,我们用收缩固定大小的虚拟硬盘空间来增大物理硬盘,另一种情况是,当我们第一次创建一个新的默认大小的动态虚拟硬盘,需要转换为固定虚拟硬盘时占用物理硬盘容量大,花费时间长,一般要进行收缩操作。

1、先在虚拟机里对虚拟硬盘进行压缩:

p_w_picpath

输入压缩空间量:是腾出来的空间,压缩后的总计大小:是虚拟硬盘剩余的容量。

p_w_picpath

腾出来的空间用来收缩:

p_w_picpath

2、进行收缩:

p_w_picpath

p_w_picpath

如果不做第一步,就不会有收缩按钮:

p_w_picpath

输入收缩的大小:

p_w_picpath

我发现,收缩只能以GB为单位,总能剩余一小部分空间:

p_w_picpath

我们可以用扩展卷的方式,重新分配给虚拟硬盘:

p_w_picpath

扩展虚拟硬盘:

p_w_picpath

p_w_picpath

输入扩展的大小:这个容量是虚拟硬盘的总容量。下图:32+48=80,也就是扩展的容量为48G。

p_w_picpath

p_w_picpath

用扩展卷向导进行扩展:

p_w_picpath

扩展后的容量:

p_w_picpath

当然,我们也可以用PowerShell来实现这个功能,这些命令在Server 2008的PowerShell里就有的,只不过不能在线调整,而在Server 2012 R2里,可以实现在线调整虚拟硬盘的大小了。