探索一种全新的 Win 系统管理方法——多 vhdx 系统

本文介绍了一种创新的 Windows 系统管理方案——双 vhdx 系统架构。作者通过实践验证,完全可以在物理磁盘上仅保留数据分区,而将两个 Windows 系统分别安装在独立的 vhdx 虚拟磁盘中运行。这种方案不仅实现了工作与生活环境的完美隔离,还提供了更高的管理灵活性。文章详细阐述了两种实现方式:基础版直接创建两个独立 vhdx 系统,进阶版则采用差分磁盘技术节省存储空间。技术要点包括 GPT 分区表要求、diskpart 创建虚拟磁盘、dism++ 系统安装、bootice 引导配置等注意事项。该方案突破了传统认知中必须保留物理系统引导的限制,为 Windows 系统管理提供了全新的思路和更高的自由度。

我长期采用 vhdx 虚拟磁盘方案实现 Windows 双系统隔离:在物理磁盘安装基础 Windows 系统,然后创建 vhdx 虚拟磁盘作为工作系统载体,将专业软件和工作环境完全隔离在虚拟磁盘中。这种架构完美实现了工作与生活的系统级隔离。

近期基础系统出现故障需要重装,这促使我思考:为何不将基础系统也迁移到 vhdx 中?让物理磁盘仅作为数据存储载体,而两个系统都运行在虚拟磁盘上,这样不仅管理更统一,还能获得更好的灵活性。

虽然部分技术文档声称必须保留物理磁盘上的可启动系统才能引导 vhdx,但经过实际验证,纯 vhdx 启动方案完全可行,这为系统管理提供了全新的可能性。

安装流程

  1. 有一块物理磁盘,磁盘必须为 GPT 分区表,存在至少一个用于放置 vhdx 文件的 NTFS 分区(盘符最好设为 D:),以及一个 EFI 分区。

  1. 在 NTFS 分区上使用 diskpart 创建一个虚拟磁盘。
1
create vdisk file=D:\windows1.vhdx maximum=268144 type=expandable

maximum 表示创建 256G 虚拟磁盘,type 表示按需分配空间。

  1. 装载虚拟磁盘windows1.vhdx,并使用 dism++ 在虚拟磁盘上安装系统,格式化并添加引导

  1. 重启自动进入这个虚拟磁盘上的系统,初始化、安装驱动、配置系统。
  2. 将这个磁盘复制一份,假设为windows2.vhdx,用于做第二个系统。
  3. 使用 bootice 将第二块虚拟磁盘添加到引导,测试启动。
  4. 在两个系统上装不同的环境、软件等。

以上流程相对简单,且容易理解,但其实我们也可以使用差分 vhdx 的方式来节省磁盘空间。

1、2、3、4 与前文相同。

  1. 将这个虚拟磁盘添加_00 后缀,假设为windows_00.vhdx,这是个已经完成各项系统配置、驱动安装的基础磁盘。
  2. 创建两个 vhdx 差分,分别用作不同用途的系统磁盘。
1
2
create vdisk file=D:\windows_01.vhd parent=D:\windows_00.vhdx
create vdisk file=D:\windows_02.vhd parent=D:\windows_00.vhdx
  1. 使用 bootice 修改引导为这两个磁盘,启动测试。
  2. 在两个系统上装不同的环境、软件等。

这种方式复用了首次创建的虚拟磁盘,可以节省一些存储空间,并且重装系统只需要删除差分然后重新创建差分硬盘即可,非常方便。但这种方式有一定操作难度,小白请勿轻易尝试。

压缩磁盘空间

虚拟磁盘都有个特性,随着使用量的增加,磁盘会越来越大,即便是在磁盘中删除文件,也不会使得磁盘变小。

可以通过 diskpart 工具来为 vhdx 瘦身。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 无差分
select vdisk file="D:\Windows_1.vhdx"
compact vdisk
select vdisk file="D:\Windows_2.vhdx"
compact vdisk

# 差分
select vdisk file="D:\Windows_01.vhdx"
compact vdisk
select vdisk file="D:\Windows_02.vhdx"
compact vdisk

类比一下,挺简单的。

注意事项

  1. 当你在某个虚拟磁盘系统中时,不要尝试使用 diskpart 等工具操作这块虚拟磁盘,可能会出问题。不过可以操作其他非当前系统/未使用的虚拟磁盘。

  2. vhdx 在启动时,默认会将磁盘临时扩展为空间大小,可以在 dism++ 中取消这一功能,取消后磁盘性能会有所下降。

关于磁盘性能损失

总有人想当然地觉得 vhdx 启动会有很大的磁盘 IO 性能损失,理论上讲,vhdx 只是从磁盘上划了一部分连续的空间作为虚拟磁盘使用,而读写这段连续的空间与直接读写物理磁盘,理论上也不会有太大的差距。

不过,事实胜于雄辩,我自行测试了一下,仅供参考:

实验环境:机械革命翼龙 15pro,硬盘为长江存储 YMTC PC411-1TB-B,已在 dism++ 中关闭了 vhd 扩展,这会对 IO 性能有一定影响。

vhdx 系统盘 IO

物理磁盘 IO

第一张图是 vhdx 磁盘测试,第二张图是物理磁盘测试,可以看到,4K 性能影响比较大,而顺序读写性能几乎没有影响。

总结

根据网友的评论总结了一下这一方案的优缺点:

  1. 备份/恢复/部署快:复制 vhdx 文件即备份/恢复/部署,速率可达到硬盘读写上限。
  2. vhdx 即 all:虚拟机 VMware、hyper 和物理机可以使用同一个 vhdx 文件,甚至多个虚拟机共用一个 vhdx,物理启动 vhdx 除了磁盘 IO 外,没有性能损失。
  3. 系统洁癖。磁盘内就只有 vhdx 和资料文件了,不会有零碎的系统文件。

缺点也是很明显的:

  1. 操作难度大,安装步骤与常见方法不同。
  2. 硬盘的写入量可能会大幅度增加。
  3. 两个系统公用的文件可能会存在一些权限问题。

感谢大家的讨论,没有一项技术能说 100% 的完美,选择自己适合的方案就好。

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计