我们安装系统的时候,一般都是安装到本地磁盘,这样做的好处是方便快捷,但后期想要备份、还原、管理系统的时候就会比较麻烦。这时候,虚拟磁盘系统就体现出它的优势了。这篇教程就是关于创建虚拟磁盘系统及后续使用方法的。

视频版教程:在VHDX虚拟磁盘中安装Windows系统并启动

1. 创建VHDX系统(1) 创建并初始化虚拟磁盘这里提供两种方法,一种是通过系统自带的磁盘管理,另一种是使用命令行。

a. 磁盘管理(GUI)按下 Win + R 输入 diskmgmt.msc 或在开始菜单图标上右键以打开磁盘管理

任意选中一块磁盘,点击菜单栏的 操作 菜单,然后点击 创建 VHD

然后会弹出一个创建窗口

在 位置 输入框选择要存放虚拟磁盘的位置

在 虚拟磁盘大小 输入框填入最大虚拟磁盘容量(可以先设置小一点,后续不够的话可以再扩容

虚拟硬盘格式 建议选择VHDX,对新系统的支持会更好一点,同时也更稳定

虚拟磁盘类型 建议选择系统推荐的类型

动态拓展 就是虚拟磁盘文件会随着内容的增多而逐渐增大,更节约空间,但在使用时要确保主机上剩余空间充足

固定大小 就是虚拟磁盘在创建时就占用掉分配的空间

设置完毕,点击 确定 即可进行创建

创建完成后,将磁盘管理下方的磁盘列表拉到底部,可以看到我们刚刚创建的未初始化的虚拟磁盘,右键选择 初始化磁盘 ,对于新系统,建议使用默认的GPT分区形式,单击 确定 完成初始化

在未分配的空间上右键,选择 新建简单卷 ,一直下一步,在中间可以进行一些设定,如卷标、分区大小、盘符等信息

b. Diskpart 命令行按下 Win + R 输入 cmd 或在开始菜单图标上右键以打开终端(命令提示符)

打开 diskpart1diskpart

创建虚拟磁盘1create vdisk file=<虚拟磁盘路径> maximum=<最大容量(MB)> type=

其中, fixed 代表固定大小,也是默认选项; expandable 代表动态分配

挂载虚拟磁盘1attach vdisk

转换为GPT分区表(默认为MBR分区类型)1convert gpt

创建分区1create partition primary

格式化1format quick label=<自定义卷标>

分配盘符1assign letter=<自定义盘符>

退出1exit

至此,创建并初始化虚拟磁盘结束

注意:即使设置为动态分配,在系统启动时虚拟磁盘占用空间也会达到设置的最大容量,所以请保证本地磁盘一定要有充足的空间

(2) 向虚拟磁盘中安装系统需要准备一份Windows安装镜像或install.wim文件

如果使用Windows安装镜像,请先双击挂载

使用管理员身份打开终端(命令提示符)

查看镜像中的系统列表,记下索引1Dism /Get-ImageInfo /ImageFile:<安装镜像盘符>:\sources\install.wim

1Dism /Get-ImageInfo /ImageFile:

示例:

1Dism /Get-ImageInfo /ImageFile:G:\sources\install.wim

1Dism /Get-ImageInfo /ImageFile:install.wim

如果文件路径中有空格,记得加上双引号

记下想要安装版本的 索引 号

把对应映像部署到虚拟磁盘1Dism /Apply-Image /ImageFile:<同上install.wim路径> /index:要安装的卷的索引号 /ApplyDir:<虚拟磁盘盘符>:\

示例:

1Dism /Apply-Image /ImageFile:G:\sources\install.wim /index:4 /ApplyDir:V:\

1Dism /Apply-Image /ImageFile:install.wim /index:3 /ApplyDir:M:\

取消挂载虚拟磁盘1234diskpartselect vdisk file="<虚拟磁盘路径>"detach vdiskexit

至此,系统镜像部署完成

2. 安装VHDX系统(1) 初始化本地磁盘(安装双系统的可以跳过这步)在目标电脑上进行这个步骤,无系统的可以使用Windows PE

以管理员身份运行终端(命令提示符),并打开diskpart1diskpart

查看磁盘编号1list disk

记下目标磁盘编号

选择磁盘1select disk 目标磁盘号

示例:

1select disk 2

格式化磁盘1clean

UEFI转换为GPT分区表1convert gpt

创建并初始化引导分区123create partition efi size=200format quick fs=fat32 label="System"assign letter="S"

创建MSR分区1create partition msr size=128

创建并初始化主分区123create partition primaryformat quick fs=ntfs label="<自定义卷标>"assign letter=<自定义盘符>

示例:

123create partition primaryformat quick fs=ntfs label="Main"assign letter=M

退出1exit

Legacy BIOS创建并初始化引导分区1234create partition primary size=100format quick fs=ntfs label="System"assign letter="S"active

创建并初始化主分区123create partition primaryformat quick fs=ntfs label="<自定义卷标>"assign letter=<自定义盘符>

示例:

123create partition primaryformat quick fs=ntfs label="Main"assign letter=M

退出1exit

(2) 将制作好的虚拟磁盘文件复制到目标电脑一定要放在能启动的磁盘(双系统方案)或者主分区(上一步创建的),并且不要有中文路径

(3) 添加启动项以管理员身份运行终端(命令提示符),并打开diskpart1diskpart

在目标电脑上挂载虚拟磁盘文件12select vdisk file="<虚拟磁盘路径>"attach vdisk

确定虚拟磁盘卷号和引导分区卷号1list volume

记下你的虚拟磁盘卷号以及引导分区卷号(UEFI的引导分区为FAT32格式,较好区分;Legacy的话可以通过大小或卷标进行区分)

为虚拟磁盘分区分配盘符12select volume <虚拟磁盘卷号>assign letter=<自定义盘符>

示例:

12select volume 5assign letter=V

为系统引导分区分配盘符12select volume <引导分区卷号>assign letter=<自定义盘符>

示例:

12select volume 3assign letter=S

退出 Diskpart1exit

UEFI添加启动项

1bcdboot <虚拟磁盘盘符>:\windows /s <引导分区盘符>: /f UEFI

示例:

1bcdboot V:\windows /s S: /f UEFI

Legacy BIOS添加启动项

1bcdboot <虚拟磁盘盘符>:\windows /s <引导分区盘符>: /f BIOS

示例:

1bcdboot V:\windows /s S: /f BIOS

至此,系统安装完毕,重启后将会进入系统或显示多系统选择页面

3. 扩容VHDX虚拟磁盘有时候,随着使用时间增加,可能预先设置的最大磁盘大小已经不够,这时候就需要进行扩容操作

关闭虚拟磁盘系统并重启到其他系统或者 Windows PE以管理员身份打开终端(命令提示符),并运行 Diskpart选择虚拟磁盘文件1select vdisk file=<虚拟磁盘完整路径,有空格的需加上双引号>

扩容磁盘1expand vdisk maximum=<扩容后的总容量(MB)>

挂载虚拟磁盘1attach vdisk

退出1exit

添加或扩容分区打开磁盘管理,会发现在虚拟磁盘的后面多出一块未分配的空间

如果要扩容当前分区,就在已经建立好的分区上面右键,选择 扩展卷 ,然后一路下一步即可

如果要建立一个新的分区,就在未分配部分点击右键,选择 新建简单卷 ,一路下一步即可,具体操作可参考上文

4. 差分VHDX虚拟磁盘有时候,我们想更轻松的备份或者还原系统,这时候,VHDX差分虚拟磁盘就能派上用场了

差分就是指创建一个新的虚拟磁盘文件,引用原始虚拟磁盘的内容,把更改的内容存放在新的这个文件里面,这样备份的时候只需要备份一次原始虚拟磁盘文件,后面的备份都只用备份差分虚拟磁盘文件,这样能大大降低备份的难度,还原也只需要重新创建一个差分虚拟磁盘

同时,利用这个特点,还可以基于同一个原始虚拟磁盘,创建多个系统,用于不同场景,占用的空间也比较小

注意:前文提到,虚拟磁盘在启动时会占用到最大空间,所以差分虚拟磁盘启动时也会占用到设置的最大大小,同时原始虚拟磁盘也占用一定的空间,所以本地磁盘剩余空间应大于设置的最大容量+原始虚拟磁盘实际占用空间

关闭虚拟磁盘系统并重启到其他系统或者 Windows PE将原始虚拟磁盘改名例如 windows.original.vhdx 或 windows.base.vhdx 等,名称随意

以管理员身份打开终端(命令提示符),并运行 Diskpart1create vdisk file=<差分虚拟磁盘路径(原始虚拟磁盘原来的名字).vhdx> parent=<原始虚拟磁盘现在的名字.vhdx>

例如

1create vdisk file=windows.vhdx parent=windows.original.vhdx

差分虚拟磁盘也可以自定义名称,只是要重新设置一遍启动项

理论上来说,可以创建许多同样的差分虚拟磁盘,这样就可以实现多个系统共用一个原始虚拟磁盘了,大大减小文件体积

注意:若原始虚拟磁盘发生变化,则所有差分虚拟磁盘全部失效,所以建议将原始虚拟磁盘文件设置为只读

备份只需重启到 Windows PE 或者其它系统,第一次备份原始虚拟磁盘文件,后续仅需备份差分虚拟磁盘文件

还原如需还原到原始状态,只需按照上文重新创建一个差分虚拟磁盘即可

如需还原到其他备份的状态,只需复制-替换即可

合并如需将差分磁盘与父虚拟磁盘合并,可以进入 Diskpart

12select vdisk file=<差分虚拟磁盘路径.vhdx>merge vdisk depth=1

此操作将会把差分虚拟磁盘中的内容合并到父虚拟磁盘中,修改的是父虚拟磁盘

在合并之前,如果对父虚拟磁盘设置了只读,需要取消

depth 参数为合并的层数,如果设置了多层差分磁盘的可以自行修改,本教程只创建了一层差分磁盘,故仅合并一层

5. 释放虚拟磁盘占用空间随着虚拟磁盘的使用,其所占物理磁盘的空间会逐渐增大

如果是动态分配类型的虚拟磁盘,即使删除了磁盘中的一些内容,虚拟磁盘所占物理磁盘的空间并不会减小

可进行以下步骤释放空间:

打开 控制面板 / 程序 / 程序和功能 / 启用或关闭 Windows 功能启用 Hyper-V / Hyper-V 管理工具 / Windows PowerShell 的 Hyper-V 模块 以及 Hyper-V / Hyper-V 平台 / Hyper-V 服务 并根据提示重启电脑

以管理员身份打开 PowerShell1optimize-vhd -path [] -mode full

其中,为虚拟磁盘路径,可以使用绝对路径,也可以使用相对路径,如果是差分磁盘则输入差分磁盘路径即可

6. 参考资料启动到虚拟硬盘:将 VHDX 或 VHD 添加到启动菜单 | Microsoft Learn

Create vdisk | Microsoft Learn

DISM 映像管理命令行选项 | Microsoft Learn

VHDX磁盘文件如何扩容_vhdx扩容-CSDN博客

VHD进阶:差分VHD备份系统 - mahocon - 博客园

merge vdisk | Microsoft Learn

在win10下释放vhdx占用的多余空间 - 闲一集