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

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

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

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

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

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第1张图片

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

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第2张图片

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

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第3张图片

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

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

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第4张图片

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

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第5张图片

腾出来的空间用来收缩:

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第6张图片

2、进行收缩:

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第7张图片

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第8张图片

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

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第9张图片

输入收缩的大小:

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第10张图片

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

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第11张图片

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

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第12张图片

扩展虚拟硬盘:

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第13张图片

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第14张图片

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

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第15张图片

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第16张图片

用扩展卷向导进行扩展:

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第17张图片

扩展后的容量:

Windows Server 2012 R2 Hyper-V在线调整虚拟硬盘的大小_第18张图片

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