我们安装系统的时候,一般都是安装到本地磁盘,这样做的好处是方便快捷,但后期想要备份、还原、管理系统的时候就会比较麻烦。这时候,虚拟磁盘系统就体现出它的优势了。这篇教程就是关于创建虚拟磁盘系统及后续使用方法的。
视频版教程:在VHDX虚拟磁盘中安装Windows系统并启动
1. 创建VHDX系统
(1) 创建并初始化虚拟磁盘
这里提供两种方法,一种是通过系统自带的磁盘管理,另一种是使用命令行。
a. 磁盘管理(GUI)
按下 Win + R 输入 diskmgmt.msc
或在开始菜单图标上右键以打开磁盘管理
任意选中一块磁盘,点击菜单栏的 操作
菜单,然后点击 创建 VHD
然后会弹出一个创建窗口
在 位置
输入框选择要存放虚拟磁盘的位置
在 虚拟磁盘大小
输入框填入最大虚拟磁盘容量(可以先设置小一点,后续不够的话可以再扩容
虚拟硬盘格式
建议选择VHDX,对新系统的支持会更好一点,同时也更稳定
虚拟磁盘类型
建议选择系统推荐的类型
动态拓展
就是虚拟磁盘文件会随着内容的增多而逐渐增大,更节约空间,但在使用时要确保主机上剩余空间充足
固定大小
就是虚拟磁盘在创建时就占用掉分配的空间
设置完毕,点击 确定
即可进行创建
创建完成后,将磁盘管理下方的磁盘列表拉到底部,可以看到我们刚刚创建的未初始化的虚拟磁盘,右键选择 初始化磁盘
,对于新系统,建议使用默认的GPT分区形式,单击 确定
完成初始化
在未分配的空间上右键,选择 新建简单卷
,一直下一步,在中间可以进行一些设定,如卷标、分区大小、盘符等信息
b. Diskpart 命令行
按下 Win + R 输入 cmd
或在开始菜单图标上右键以打开终端(命令提示符)
打开 diskpart
1 | diskpart |
创建虚拟磁盘
1 | create vdisk file=<虚拟磁盘路径> maximum=<最大容量(MB)> type=<fixed|expandable> |
其中, fixed
代表固定大小,也是默认选项; expandable
代表动态分配
挂载虚拟磁盘
1 | attach vdisk |
转换为GPT分区表(默认为MBR分区类型)
1 | convert gpt |
创建分区
1 | create partition primary |
格式化
1 | format quick label=<自定义卷标> |
分配盘符
1 | assign letter=<自定义盘符> |
退出
1 | exit |
至此,创建并初始化虚拟磁盘结束
注意:即使设置为动态分配,在系统启动时虚拟磁盘占用空间也会达到设置的最大容量,所以请保证本地磁盘一定要有充足的空间
(2) 向虚拟磁盘中安装系统
需要准备一份Windows安装镜像或install.wim文件
如果使用Windows安装镜像,请先双击挂载
使用管理员身份打开终端(命令提示符)
查看镜像中的系统列表,记下索引
1 | Dism /Get-ImageInfo /ImageFile:<安装镜像盘符>:\sources\install.wim |
或
1 | Dism /Get-ImageInfo /ImageFile:<install.wim路径> |
示例:
1 | Dism /Get-ImageInfo /ImageFile:G:\sources\install.wim |
1 | Dism /Get-ImageInfo /ImageFile:install.wim |
如果文件路径中有空格,记得加上双引号
记下想要安装版本的 索引
号
把对应映像部署到虚拟磁盘
1 | Dism /Apply-Image /ImageFile:<同上install.wim路径> /index:要安装的卷的索引号 /ApplyDir:<虚拟磁盘盘符>:\ |
示例:
1 | Dism /Apply-Image /ImageFile:G:\sources\install.wim /index:4 /ApplyDir:V:\ |
1 | Dism /Apply-Image /ImageFile:install.wim /index:3 /ApplyDir:M:\ |
取消挂载虚拟磁盘
1 | diskpart |
至此,系统镜像部署完成
2. 安装VHDX系统
(1) 初始化本地磁盘(安装双系统的可以跳过这步)
在目标电脑上进行这个步骤,无系统的可以使用Windows PE
以管理员身份运行终端(命令提示符),并打开diskpart
1 | diskpart |
查看磁盘编号
1 | list disk |
记下目标磁盘编号
选择磁盘
1 | select disk 目标磁盘号 |
示例:
1 | select disk 2 |
格式化磁盘
1 | clean |
UEFI
转换为GPT分区表
1 | convert gpt |
创建并初始化引导分区
1 | create partition efi size=200 |
创建MSR分区
1 | create partition msr size=128 |
创建并初始化主分区
1 | create partition primary |
示例:
1 | create partition primary |
退出
1 | exit |
Legacy BIOS
创建并初始化引导分区
1 | create partition primary size=100 |
创建并初始化主分区
1 | create partition primary |
示例:
1 | create partition primary |
退出
1 | exit |
(2) 将制作好的虚拟磁盘文件复制到目标电脑
一定要放在能启动的磁盘(双系统方案)或者主分区(上一步创建的),并且不要有中文路径
(3) 添加启动项
以管理员身份运行终端(命令提示符),并打开diskpart
1 | diskpart |
在目标电脑上挂载虚拟磁盘文件
1 | select vdisk file="<虚拟磁盘路径>" |
确定虚拟磁盘卷号和引导分区卷号
1 | list volume |
记下你的虚拟磁盘卷号以及引导分区卷号(UEFI的引导分区为FAT32格式,较好区分;Legacy的话可以通过大小或卷标进行区分)
为虚拟磁盘分区分配盘符
1 | select volume <虚拟磁盘卷号> |
示例:
1 | select volume 5 |
为系统引导分区分配盘符
1 | select volume <引导分区卷号> |
示例:
1 | select volume 3 |
退出 Diskpart
1 | exit |
UEFI
添加启动项
1 | bcdboot <虚拟磁盘盘符>:\windows /s <引导分区盘符>: /f UEFI |
示例:
1 | bcdboot V:\windows /s S: /f UEFI |
Legacy BIOS
添加启动项
1 | bcdboot <虚拟磁盘盘符>:\windows /s <引导分区盘符>: /f BIOS |
示例:
1 | bcdboot V:\windows /s S: /f BIOS |
至此,系统安装完毕,重启后将会进入系统或显示多系统选择页面
3. 扩容VHDX虚拟磁盘
有时候,随着使用时间增加,可能预先设置的最大磁盘大小已经不够,这时候就需要进行扩容操作
关闭虚拟磁盘系统并重启到其他系统或者 Windows PE
以管理员身份打开终端(命令提示符),并运行 Diskpart
选择虚拟磁盘文件
1 | select vdisk file=<虚拟磁盘完整路径,有空格的需加上双引号> |
扩容磁盘
1 | expand vdisk maximum=<扩容后的总容量(MB)> |
挂载虚拟磁盘
1 | attach vdisk |
退出
1 | exit |
添加或扩容分区
打开磁盘管理,会发现在虚拟磁盘的后面多出一块未分配的空间
如果要扩容当前分区,就在已经建立好的分区上面右键,选择 扩展卷
,然后一路下一步即可
如果要建立一个新的分区,就在未分配部分点击右键,选择 新建简单卷
,一路下一步即可,具体操作可参考上文
4. 差分VHDX虚拟磁盘
有时候,我们想更轻松的备份或者还原系统,这时候,VHDX差分虚拟磁盘就能派上用场了
差分就是指创建一个新的虚拟磁盘文件,引用原始虚拟磁盘的内容,把更改的内容存放在新的这个文件里面,这样备份的时候只需要备份一次原始虚拟磁盘文件,后面的备份都只用备份差分虚拟磁盘文件,这样能大大降低备份的难度,还原也只需要重新创建一个差分虚拟磁盘
同时,利用这个特点,还可以基于同一个原始虚拟磁盘,创建多个系统,用于不同场景,占用的空间也比较小
注意:前文提到,虚拟磁盘在启动时会占用到最大空间,所以差分虚拟磁盘启动时也会占用到设置的最大大小,同时原始虚拟磁盘也占用一定的空间,所以本地磁盘剩余空间应大于设置的最大容量+原始虚拟磁盘实际占用空间
关闭虚拟磁盘系统并重启到其他系统或者 Windows PE
将原始虚拟磁盘改名
例如 windows.original.vhdx
或 windows.base.vhdx
等,名称随意
以管理员身份打开终端(命令提示符),并运行 Diskpart
1 | create vdisk file=<差分虚拟磁盘路径(原始虚拟磁盘原来的名字).vhdx> parent=<原始虚拟磁盘现在的名字.vhdx> |
例如
1 | create vdisk file=windows.vhdx parent=windows.original.vhdx |
差分虚拟磁盘也可以自定义名称,只是要重新设置一遍启动项
理论上来说,可以创建许多同样的差分虚拟磁盘,这样就可以实现多个系统共用一个原始虚拟磁盘了,大大减小文件体积
注意:若原始虚拟磁盘发生变化,则所有差分虚拟磁盘全部失效,所以建议将原始虚拟磁盘文件设置为只读
备份
只需重启到 Windows PE 或者其它系统,第一次备份原始虚拟磁盘文件,后续仅需备份差分虚拟磁盘文件
还原
如需还原到原始状态,只需按照上文重新创建一个差分虚拟磁盘即可
如需还原到其他备份的状态,只需复制-替换即可
合并
如需将差分磁盘与父虚拟磁盘合并,可以进入 Diskpart
1 | select vdisk file=<差分虚拟磁盘路径.vhdx> |
此操作将会把差分虚拟磁盘中的内容合并到父虚拟磁盘中,修改的是父虚拟磁盘
在合并之前,如果对父虚拟磁盘设置了只读,需要取消
depth
参数为合并的层数,如果设置了多层差分磁盘的可以自行修改,本教程只创建了一层差分磁盘,故仅合并一层
5. 释放虚拟磁盘占用空间
随着虚拟磁盘的使用,其所占物理磁盘的空间会逐渐增大
如果是动态分配类型的虚拟磁盘,即使删除了磁盘中的一些内容,虚拟磁盘所占物理磁盘的空间并不会减小
可进行以下步骤释放空间:
打开 控制面板 / 程序 / 程序和功能 / 启用或关闭 Windows 功能
启用 Hyper-V / Hyper-V 管理工具 / Windows PowerShell 的 Hyper-V 模块 以及 Hyper-V / Hyper-V 平台 / Hyper-V 服务 并根据提示重启电脑
以管理员身份打开 PowerShell
1 | optimize-vhd -path [<path/to/file.vhdx>] -mode full |
其中,<path/to/file.vhdx>
为虚拟磁盘路径,可以使用绝对路径,也可以使用相对路径,如果是差分磁盘则输入差分磁盘路径即可
6. 参考资料
启动到虚拟硬盘:将 VHDX 或 VHD 添加到启动菜单 | Microsoft Learn
Create vdisk | Microsoft Learn
DISM 映像管理命令行选项 | Microsoft Learn